From 34a31bb184b90e4350ccdc084bab135e37e50986 Mon Sep 17 00:00:00 2001 From: Whykioh Date: Mon, 11 Mar 2024 00:57:00 +0100 Subject: [PATCH] Import Ruty --- ruty/mails/SQL/mssql.initial.sql | 491 ++ ruty/mails/SQL/mssql/2009103100.sql | 87 + ruty/mails/SQL/mssql/2010100600.sql | 9 + ruty/mails/SQL/mssql/2011011200.sql | 10 + ruty/mails/SQL/mssql/2011092800.sql | 127 + ruty/mails/SQL/mssql/2011111600.sql | 4 + ruty/mails/SQL/mssql/2011121400.sql | 9 + ruty/mails/SQL/mssql/2012051800.sql | 18 + ruty/mails/SQL/mssql/2012080700.sql | 8 + ruty/mails/SQL/mssql/2013011000.sql | 14 + ruty/mails/SQL/mssql/2013042700.sql | 1 + ruty/mails/SQL/mssql/2013052500.sql | 17 + ruty/mails/SQL/mssql/2013061000.sql | 44 + ruty/mails/SQL/mssql/2014042900.sql | 1 + ruty/mails/SQL/mssql/2015030800.sql | 1 + ruty/mails/SQL/mssql/2015111100.sql | 4 + ruty/mails/SQL/mssql/2016081200.sql | 5 + ruty/mails/SQL/mssql/2016100900.sql | 2 + ruty/mails/SQL/mssql/2016112200.sql | 36 + ruty/mails/SQL/mssql/2018021600.sql | 24 + ruty/mails/SQL/mssql/2018122300.sql | 9 + ruty/mails/SQL/mssql/2019092900.sql | 18 + ruty/mails/SQL/mssql/2020020100.sql | 4 + ruty/mails/SQL/mssql/2020020101.sql | 1 + ruty/mails/SQL/mssql/2020091000.sql | 31 + ruty/mails/SQL/mssql/2020122900.sql | 1 + ruty/mails/SQL/mssql/2021081000.sql | 33 + ruty/mails/SQL/mssql/2021100300.sql | 1 + ruty/mails/SQL/mssql/2022081200.sql | 1 + ruty/mails/SQL/mysql.initial.sql | 263 + ruty/mails/SQL/mysql/2008030300.sql | 16 + ruty/mails/SQL/mysql/2008040500.sql | 9 + ruty/mails/SQL/mysql/2008060900.sql | 4 + ruty/mails/SQL/mysql/2008092100.sql | 20 + ruty/mails/SQL/mysql/2009090400.sql | 12 + ruty/mails/SQL/mysql/2009103100.sql | 52 + ruty/mails/SQL/mysql/2010042300.sql | 4 + ruty/mails/SQL/mysql/2010100600.sql | 8 + ruty/mails/SQL/mysql/2011011200.sql | 8 + ruty/mails/SQL/mysql/2011092800.sql | 67 + ruty/mails/SQL/mysql/2011111600.sql | 3 + ruty/mails/SQL/mysql/2011121400.sql | 22 + ruty/mails/SQL/mysql/2012080700.sql | 5 + ruty/mails/SQL/mysql/2013011000.sql | 7 + ruty/mails/SQL/mysql/2013042700.sql | 1 + ruty/mails/SQL/mysql/2013052500.sql | 7 + ruty/mails/SQL/mysql/2013061000.sql | 24 + ruty/mails/SQL/mysql/2014042900.sql | 1 + ruty/mails/SQL/mysql/2015030800.sql | 1 + ruty/mails/SQL/mysql/2015111100.sql | 3 + ruty/mails/SQL/mysql/2016081200.sql | 1 + ruty/mails/SQL/mysql/2016100900.sql | 1 + ruty/mails/SQL/mysql/2016112200.sql | 25 + ruty/mails/SQL/mysql/2018021600.sql | 11 + ruty/mails/SQL/mysql/2018122300.sql | 7 + ruty/mails/SQL/mysql/2019092900.sql | 2 + ruty/mails/SQL/mysql/2020020100.sql | 2 + ruty/mails/SQL/mysql/2020020101.sql | 70 + ruty/mails/SQL/mysql/2020091000.sql | 12 + ruty/mails/SQL/mysql/2020122900.sql | 1 + ruty/mails/SQL/mysql/2021081000.sql | 13 + ruty/mails/SQL/mysql/2021100300.sql | 1 + ruty/mails/SQL/mysql/2022081200.sql | 1 + ruty/mails/SQL/oracle.initial.sql | 288 ++ ruty/mails/SQL/oracle/2015030800.sql | 1 + ruty/mails/SQL/oracle/2015111100.sql | 2 + ruty/mails/SQL/oracle/2016081200.sql | 1 + ruty/mails/SQL/oracle/2016100900.sql | 1 + ruty/mails/SQL/oracle/2016112200.sql | 23 + ruty/mails/SQL/oracle/2018021600.sql | 19 + ruty/mails/SQL/oracle/2018122300.sql | 4 + ruty/mails/SQL/oracle/2019092900.sql | 1 + ruty/mails/SQL/oracle/2020020100.sql | 2 + ruty/mails/SQL/oracle/2020020101.sql | 1 + ruty/mails/SQL/oracle/2020091000.sql | 21 + ruty/mails/SQL/oracle/2020122900.sql | 1 + ruty/mails/SQL/oracle/2021081000.sql | 22 + ruty/mails/SQL/oracle/2021100300.sql | 1 + ruty/mails/SQL/oracle/2022081200.sql | 1 + ruty/mails/SQL/postgres.initial.sql | 378 ++ ruty/mails/SQL/postgres/2008030300.sql | 18 + ruty/mails/SQL/postgres/2008060900.sql | 3 + ruty/mails/SQL/postgres/2008092100.sql | 14 + ruty/mails/SQL/postgres/2009090400.sql | 6 + ruty/mails/SQL/postgres/2009103100.sql | 32 + ruty/mails/SQL/postgres/2010042300.sql | 4 + ruty/mails/SQL/postgres/2010100600.sql | 7 + ruty/mails/SQL/postgres/2011011200.sql | 7 + ruty/mails/SQL/postgres/2011092800.sql | 64 + ruty/mails/SQL/postgres/2011111600.sql | 3 + ruty/mails/SQL/postgres/2011121400.sql | 5 + ruty/mails/SQL/postgres/2012080700.sql | 7 + ruty/mails/SQL/postgres/2013011000.sql | 4 + ruty/mails/SQL/postgres/2013042700.sql | 14 + ruty/mails/SQL/postgres/2013052500.sql | 8 + ruty/mails/SQL/postgres/2013061000.sql | 24 + ruty/mails/SQL/postgres/2014042900.sql | 1 + ruty/mails/SQL/postgres/2015030800.sql | 1 + ruty/mails/SQL/postgres/2015111100.sql | 2 + ruty/mails/SQL/postgres/2016081200.sql | 1 + ruty/mails/SQL/postgres/2016100900.sql | 1 + ruty/mails/SQL/postgres/2016112200.sql | 21 + ruty/mails/SQL/postgres/2018021600.sql | 15 + ruty/mails/SQL/postgres/2018122300.sql | 5 + ruty/mails/SQL/postgres/2019092900.sql | 1 + ruty/mails/SQL/postgres/2020020100.sql | 2 + ruty/mails/SQL/postgres/2020020101.sql | 1 + ruty/mails/SQL/postgres/2020091000.sql | 19 + ruty/mails/SQL/postgres/2020122900.sql | 2 + ruty/mails/SQL/postgres/2021081000.sql | 21 + ruty/mails/SQL/postgres/2021100300.sql | 1 + ruty/mails/SQL/postgres/2022081200.sql | 2 + ruty/mails/SQL/sqlite.initial.sql | 263 + ruty/mails/SQL/sqlite/2008030300.sql | 25 + ruty/mails/SQL/sqlite/2008060900.sql | 3 + ruty/mails/SQL/sqlite/2008092100.sql | 4 + ruty/mails/SQL/sqlite/2009090400.sql | 8 + ruty/mails/SQL/sqlite/2009103100.sql | 61 + ruty/mails/SQL/sqlite/2010042300.sql | 35 + ruty/mails/SQL/sqlite/2010100600.sql | 40 + ruty/mails/SQL/sqlite/2011011200.sql | 41 + ruty/mails/SQL/sqlite/2011092800.sql | 54 + ruty/mails/SQL/sqlite/2011111600.sql | 11 + ruty/mails/SQL/sqlite/2011121400.sql | 38 + ruty/mails/SQL/sqlite/2012080700.sql | 44 + ruty/mails/SQL/sqlite/2013011000.sql | 6 + ruty/mails/SQL/sqlite/2013011700.sql | 2 + ruty/mails/SQL/sqlite/2013042700.sql | 1 + ruty/mails/SQL/sqlite/2013052500.sql | 8 + ruty/mails/SQL/sqlite/2013061000.sql | 48 + ruty/mails/SQL/sqlite/2014042900.sql | 1 + ruty/mails/SQL/sqlite/2015030800.sql | 1 + ruty/mails/SQL/sqlite/2015111100.sql | 35 + ruty/mails/SQL/sqlite/2016081200.sql | 9 + ruty/mails/SQL/sqlite/2016100900.sql | 0 ruty/mails/SQL/sqlite/2016112200.sql | 21 + ruty/mails/SQL/sqlite/2018021600.sql | 9 + ruty/mails/SQL/sqlite/2018122300.sql | 29 + ruty/mails/SQL/sqlite/2019092900.sql | 1 + ruty/mails/SQL/sqlite/2020020100.sql | 57 + ruty/mails/SQL/sqlite/2020020101.sql | 1 + ruty/mails/SQL/sqlite/2020091000.sql | 10 + ruty/mails/SQL/sqlite/2020122900.sql | 35 + ruty/mails/SQL/sqlite/2021081000.sql | 11 + ruty/mails/SQL/sqlite/2021100300.sql | 211 + ruty/mails/SQL/sqlite/2022081200.sql | 2 + ruty/mails/skins/elastic/README.md | 119 + .../elastic/deps/bootstrap.bundle.min.js | 6 + .../skins/elastic/deps/bootstrap.min.css | 6 + ruty/mails/skins/elastic/deps/less.min.js | 17 + .../skins/elastic/fonts/fa-regular-400.woff | Bin 0 -> 16804 bytes .../skins/elastic/fonts/fa-regular-400.woff2 | Bin 0 -> 13580 bytes .../skins/elastic/fonts/fa-solid-900.woff | Bin 0 -> 98020 bytes .../skins/elastic/fonts/fa-solid-900.woff2 | Bin 0 -> 75440 bytes .../elastic/fonts/roboto-v29-italic-700.woff | Bin 0 -> 69796 bytes .../elastic/fonts/roboto-v29-italic-700.woff2 | Bin 0 -> 54292 bytes .../elastic/fonts/roboto-v29-italic.woff | Bin 0 -> 69460 bytes .../elastic/fonts/roboto-v29-italic.woff2 | Bin 0 -> 54136 bytes .../elastic/fonts/roboto-v29-regular-700.woff | Bin 0 -> 65292 bytes .../fonts/roboto-v29-regular-700.woff2 | Bin 0 -> 50196 bytes .../elastic/fonts/roboto-v29-regular.woff | Bin 0 -> 65244 bytes .../elastic/fonts/roboto-v29-regular.woff2 | Bin 0 -> 50240 bytes .../skins/elastic/images/contactgroup.svg | 3 + .../mails/skins/elastic/images/contactpic.svg | 3 + .../skins/elastic/images/corner-handle.svg | 3 + ruty/mails/skins/elastic/images/download.svg | 3 + .../skins/elastic/images/google-icon.svg | 1 + ruty/mails/skins/elastic/images/logo.ico | Bin 0 -> 12495 bytes ruty/mails/skins/elastic/images/logo.svg | 51 + .../skins/elastic/images/microsoft-icon.svg | 8 + ruty/mails/skins/elastic/meta.json | 20 + ruty/mails/skins/elastic/styles/colors.less | 278 ++ ruty/mails/skins/elastic/styles/dark.less | 1123 +++++ ruty/mails/skins/elastic/styles/embed.less | 95 + ruty/mails/skins/elastic/styles/embed.min.css | 1 + .../skins/elastic/styles/fontawesome.less | 1397 ++++++ ruty/mails/skins/elastic/styles/global.less | 149 + ruty/mails/skins/elastic/styles/layout.less | 414 ++ ruty/mails/skins/elastic/styles/mixins.less | 62 + ruty/mails/skins/elastic/styles/print.less | 78 + ruty/mails/skins/elastic/styles/print.min.css | 1 + ruty/mails/skins/elastic/styles/styles.less | 458 ++ .../mails/skins/elastic/styles/styles.min.css | 1 + .../mails/skins/elastic/styles/variables.less | 63 + .../skins/elastic/styles/widgets/buttons.less | 349 ++ .../skins/elastic/styles/widgets/common.less | 585 +++ .../skins/elastic/styles/widgets/dialogs.less | 263 + .../skins/elastic/styles/widgets/editor.less | 537 ++ .../skins/elastic/styles/widgets/forms.less | 1429 ++++++ .../elastic/styles/widgets/jqueryui.less | 440 ++ .../skins/elastic/styles/widgets/lists.less | 1085 ++++ .../skins/elastic/styles/widgets/menu.less | 952 ++++ .../elastic/styles/widgets/messages.less | 267 + ruty/mails/skins/elastic/templates/about.html | 16 + .../skins/elastic/templates/addressbook.html | 157 + .../mails/skins/elastic/templates/bounce.html | 74 + .../skins/elastic/templates/compose.html | 286 ++ .../skins/elastic/templates/contact.html | 23 + .../skins/elastic/templates/contactedit.html | 29 + .../elastic/templates/contactimport.html | 9 + .../skins/elastic/templates/contactprint.html | 19 + .../elastic/templates/contactsearch.html | 9 + .../mails/skins/elastic/templates/dialog.html | 7 + ruty/mails/skins/elastic/templates/error.html | 21 + .../skins/elastic/templates/folderedit.html | 13 + .../skins/elastic/templates/folders.html | 61 + .../skins/elastic/templates/identities.html | 43 + .../skins/elastic/templates/identityedit.html | 13 + .../elastic/templates/includes/footer.html | 14 + .../elastic/templates/includes/layout.html | 46 + .../elastic/templates/includes/mail-menu.html | 95 + .../elastic/templates/includes/menu.html | 42 + .../elastic/templates/includes/pagenav.html | 20 + .../templates/includes/settings-menu.html | 12 + ruty/mails/skins/elastic/templates/login.html | 24 + ruty/mails/skins/elastic/templates/mail.html | 220 + .../skins/elastic/templates/message.html | 83 + .../skins/elastic/templates/messagepart.html | 119 + .../skins/elastic/templates/messageprint.html | 27 + .../mails/skins/elastic/templates/plugin.html | 15 + .../skins/elastic/templates/responseedit.html | 13 + .../skins/elastic/templates/responses.html | 41 + .../skins/elastic/templates/settings.html | 28 + .../skins/elastic/templates/settingsedit.html | 13 + ruty/mails/skins/elastic/thumbnail.png | Bin 0 -> 1851 bytes ruty/mails/skins/elastic/ui.js | 4378 +++++++++++++++++ ruty/mails/skins/elastic/ui.min.js | 13 + ruty/mails/skins/elastic/watermark.html | 38 + ruty/mails/temp/.htaccess | 7 + ruty/mails/vendor/autoload.php | 26 + ruty/mails/vendor/bacon/bacon-qr-code/LICENSE | 22 + .../vendor/bacon/bacon-qr-code/README.md | 39 + .../vendor/bacon/bacon-qr-code/composer.json | 44 + .../bacon-qr-code/src/Common/BitArray.php | 372 ++ .../bacon-qr-code/src/Common/BitMatrix.php | 313 ++ .../bacon-qr-code/src/Common/BitUtils.php | 41 + .../src/Common/CharacterSetEci.php | 183 + .../bacon-qr-code/src/Common/EcBlock.php | 49 + .../bacon-qr-code/src/Common/EcBlocks.php | 74 + .../src/Common/ErrorCorrectionLevel.php | 63 + .../src/Common/FormatInformation.php | 203 + .../bacon/bacon-qr-code/src/Common/Mode.php | 79 + .../src/Common/ReedSolomonCodec.php | 468 ++ .../bacon-qr-code/src/Common/Version.php | 596 +++ .../bacon-qr-code/src/Encoder/BlockPair.php | 58 + .../bacon-qr-code/src/Encoder/ByteMatrix.php | 150 + .../bacon-qr-code/src/Encoder/Encoder.php | 668 +++ .../bacon-qr-code/src/Encoder/MaskUtil.php | 271 + .../bacon-qr-code/src/Encoder/MatrixUtil.php | 513 ++ .../bacon-qr-code/src/Encoder/QrCode.php | 141 + .../src/Exception/ExceptionInterface.php | 10 + .../Exception/InvalidArgumentException.php | 8 + .../src/Exception/OutOfBoundsException.php | 8 + .../src/Exception/RuntimeException.php | 8 + .../Exception/UnexpectedValueException.php | 8 + .../src/Exception/WriterException.php | 8 + .../src/Renderer/Color/Alpha.php | 57 + .../bacon-qr-code/src/Renderer/Color/Cmyk.php | 103 + .../src/Renderer/Color/ColorInterface.php | 22 + .../bacon-qr-code/src/Renderer/Color/Gray.php | 46 + .../bacon-qr-code/src/Renderer/Color/Rgb.php | 88 + .../src/Renderer/Eye/CompositeEye.php | 38 + .../src/Renderer/Eye/EyeInterface.php | 26 + .../src/Renderer/Eye/ModuleEye.php | 54 + .../src/Renderer/Eye/SimpleCircleEye.php | 54 + .../src/Renderer/Eye/SquareEye.php | 53 + .../src/Renderer/Image/EpsImageBackEnd.php | 376 ++ .../Renderer/Image/ImageBackEndInterface.php | 87 + .../Renderer/Image/ImagickImageBackEnd.php | 336 ++ .../src/Renderer/Image/SvgImageBackEnd.php | 369 ++ .../Renderer/Image/TransformationMatrix.php | 68 + .../src/Renderer/ImageRenderer.php | 152 + .../src/Renderer/Module/DotsModule.php | 63 + .../src/Renderer/Module/EdgeIterator/Edge.php | 100 + .../Module/EdgeIterator/EdgeIterator.php | 169 + .../src/Renderer/Module/ModuleInterface.php | 18 + .../src/Renderer/Module/RoundnessModule.php | 129 + .../src/Renderer/Module/SquareModule.php | 47 + .../bacon-qr-code/src/Renderer/Path/Close.php | 29 + .../bacon-qr-code/src/Renderer/Path/Curve.php | 92 + .../src/Renderer/Path/EllipticArc.php | 278 ++ .../bacon-qr-code/src/Renderer/Path/Line.php | 41 + .../bacon-qr-code/src/Renderer/Path/Move.php | 41 + .../src/Renderer/Path/OperationInterface.php | 12 + .../bacon-qr-code/src/Renderer/Path/Path.php | 106 + .../src/Renderer/PlainTextRenderer.php | 86 + .../src/Renderer/RendererInterface.php | 11 + .../src/Renderer/RendererStyle/EyeFill.php | 74 + .../src/Renderer/RendererStyle/Fill.php | 168 + .../src/Renderer/RendererStyle/Gradient.php | 46 + .../Renderer/RendererStyle/GradientType.php | 22 + .../Renderer/RendererStyle/RendererStyle.php | 90 + .../vendor/bacon/bacon-qr-code/src/Writer.php | 71 + ruty/mails/vendor/bin/crypt-gpg-pinentry | 119 + ruty/mails/vendor/composer/ClassLoader.php | 579 +++ .../vendor/composer/InstalledVersions.php | 359 ++ ruty/mails/vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 47 + ruty/mails/vendor/composer/autoload_files.php | 12 + .../vendor/composer/autoload_namespaces.php | 15 + ruty/mails/vendor/composer/autoload_psr4.php | 18 + ruty/mails/vendor/composer/autoload_real.php | 54 + .../mails/vendor/composer/autoload_static.php | 181 + ruty/mails/vendor/composer/include_paths.php | 19 + ruty/mails/vendor/composer/installed.json | 1640 ++++++ ruty/mails/vendor/composer/installed.php | 272 + ruty/mails/vendor/composer/platform_check.php | 26 + ruty/mails/vendor/dasprid/enum/LICENSE | 22 + ruty/mails/vendor/dasprid/enum/README.md | 164 + ruty/mails/vendor/dasprid/enum/composer.json | 34 + .../vendor/dasprid/enum/src/AbstractEnum.php | 241 + .../mails/vendor/dasprid/enum/src/EnumMap.php | 385 ++ .../Exception/CloneNotSupportedException.php | 10 + .../enum/src/Exception/ExceptionInterface.php | 10 + .../src/Exception/ExpectationException.php | 10 + .../Exception/IllegalArgumentException.php | 10 + .../enum/src/Exception/MismatchException.php | 10 + .../SerializeNotSupportedException.php | 10 + .../UnserializeNotSupportedException.php | 10 + .../vendor/dasprid/enum/src/NullValue.php | 55 + .../vendor/guzzlehttp/guzzle/CHANGELOG.md | 1624 ++++++ ruty/mails/vendor/guzzlehttp/guzzle/LICENSE | 27 + ruty/mails/vendor/guzzlehttp/guzzle/README.md | 94 + .../vendor/guzzlehttp/guzzle/UPGRADING.md | 1253 +++++ .../vendor/guzzlehttp/guzzle/composer.json | 103 + .../guzzlehttp/guzzle/src/BodySummarizer.php | 28 + .../guzzle/src/BodySummarizerInterface.php | 13 + .../vendor/guzzlehttp/guzzle/src/Client.php | 483 ++ .../guzzlehttp/guzzle/src/ClientInterface.php | 84 + .../guzzlehttp/guzzle/src/ClientTrait.php | 241 + .../guzzle/src/Cookie/CookieJar.php | 307 ++ .../guzzle/src/Cookie/CookieJarInterface.php | 80 + .../guzzle/src/Cookie/FileCookieJar.php | 101 + .../guzzle/src/Cookie/SessionCookieJar.php | 77 + .../guzzle/src/Cookie/SetCookie.php | 488 ++ .../src/Exception/BadResponseException.php | 39 + .../guzzle/src/Exception/ClientException.php | 10 + .../guzzle/src/Exception/ConnectException.php | 56 + .../guzzle/src/Exception/GuzzleException.php | 9 + .../Exception/InvalidArgumentException.php | 7 + .../guzzle/src/Exception/RequestException.php | 166 + .../guzzle/src/Exception/ServerException.php | 10 + .../Exception/TooManyRedirectsException.php | 7 + .../src/Exception/TransferException.php | 7 + .../guzzle/src/Handler/CurlFactory.php | 638 +++ .../src/Handler/CurlFactoryInterface.php | 25 + .../guzzle/src/Handler/CurlHandler.php | 49 + .../guzzle/src/Handler/CurlMultiHandler.php | 267 + .../guzzle/src/Handler/EasyHandle.php | 112 + .../guzzle/src/Handler/HeaderProcessor.php | 42 + .../guzzle/src/Handler/MockHandler.php | 212 + .../guzzlehttp/guzzle/src/Handler/Proxy.php | 51 + .../guzzle/src/Handler/StreamHandler.php | 615 +++ .../guzzlehttp/guzzle/src/HandlerStack.php | 275 ++ .../guzzle/src/MessageFormatter.php | 199 + .../guzzle/src/MessageFormatterInterface.php | 18 + .../guzzlehttp/guzzle/src/Middleware.php | 268 + .../vendor/guzzlehttp/guzzle/src/Pool.php | 125 + .../guzzle/src/PrepareBodyMiddleware.php | 105 + .../guzzle/src/RedirectMiddleware.php | 228 + .../guzzlehttp/guzzle/src/RequestOptions.php | 276 ++ .../guzzlehttp/guzzle/src/RetryMiddleware.php | 119 + .../guzzlehttp/guzzle/src/TransferStats.php | 133 + .../vendor/guzzlehttp/guzzle/src/Utils.php | 385 ++ .../guzzlehttp/guzzle/src/functions.php | 167 + .../guzzle/src/functions_include.php | 6 + .../vendor/guzzlehttp/promises/CHANGELOG.md | 145 + ruty/mails/vendor/guzzlehttp/promises/LICENSE | 24 + .../vendor/guzzlehttp/promises/README.md | 559 +++ .../vendor/guzzlehttp/promises/composer.json | 58 + .../promises/src/AggregateException.php | 19 + .../promises/src/CancellationException.php | 12 + .../guzzlehttp/promises/src/Coroutine.php | 162 + .../vendor/guzzlehttp/promises/src/Create.php | 79 + .../vendor/guzzlehttp/promises/src/Each.php | 86 + .../guzzlehttp/promises/src/EachPromise.php | 250 + .../promises/src/FulfilledPromise.php | 89 + .../vendor/guzzlehttp/promises/src/Is.php | 40 + .../guzzlehttp/promises/src/Promise.php | 281 ++ .../promises/src/PromiseInterface.php | 91 + .../promises/src/PromisorInterface.php | 16 + .../promises/src/RejectedPromise.php | 95 + .../promises/src/RejectionException.php | 49 + .../guzzlehttp/promises/src/TaskQueue.php | 71 + .../promises/src/TaskQueueInterface.php | 24 + .../vendor/guzzlehttp/promises/src/Utils.php | 259 + .../mails/vendor/guzzlehttp/psr7/CHANGELOG.md | 437 ++ ruty/mails/vendor/guzzlehttp/psr7/LICENSE | 26 + ruty/mails/vendor/guzzlehttp/psr7/README.md | 880 ++++ .../vendor/guzzlehttp/psr7/composer.json | 93 + .../guzzlehttp/psr7/src/AppendStream.php | 248 + .../guzzlehttp/psr7/src/BufferStream.php | 147 + .../guzzlehttp/psr7/src/CachingStream.php | 153 + .../guzzlehttp/psr7/src/DroppingStream.php | 49 + .../src/Exception/MalformedUriException.php | 14 + .../vendor/guzzlehttp/psr7/src/FnStream.php | 179 + .../vendor/guzzlehttp/psr7/src/Header.php | 134 + .../guzzlehttp/psr7/src/HttpFactory.php | 94 + .../guzzlehttp/psr7/src/InflateStream.php | 37 + .../guzzlehttp/psr7/src/LazyOpenStream.php | 49 + .../guzzlehttp/psr7/src/LimitStream.php | 157 + .../vendor/guzzlehttp/psr7/src/Message.php | 246 + .../guzzlehttp/psr7/src/MessageTrait.php | 265 + .../vendor/guzzlehttp/psr7/src/MimeType.php | 1259 +++++ .../guzzlehttp/psr7/src/MultipartStream.php | 157 + .../guzzlehttp/psr7/src/NoSeekStream.php | 28 + .../vendor/guzzlehttp/psr7/src/PumpStream.php | 179 + .../vendor/guzzlehttp/psr7/src/Query.php | 113 + .../vendor/guzzlehttp/psr7/src/Request.php | 159 + .../vendor/guzzlehttp/psr7/src/Response.php | 161 + .../vendor/guzzlehttp/psr7/src/Rfc7230.php | 23 + .../guzzlehttp/psr7/src/ServerRequest.php | 340 ++ .../vendor/guzzlehttp/psr7/src/Stream.php | 283 ++ .../psr7/src/StreamDecoratorTrait.php | 156 + .../guzzlehttp/psr7/src/StreamWrapper.php | 175 + .../guzzlehttp/psr7/src/UploadedFile.php | 211 + ruty/mails/vendor/guzzlehttp/psr7/src/Uri.php | 741 +++ .../guzzlehttp/psr7/src/UriComparator.php | 52 + .../guzzlehttp/psr7/src/UriNormalizer.php | 220 + .../guzzlehttp/psr7/src/UriResolver.php | 211 + .../vendor/guzzlehttp/psr7/src/Utils.php | 463 ++ ruty/mails/vendor/kolab/net_ldap3/.arcconfig | 3 + ruty/mails/vendor/kolab/net_ldap3/LICENSE | 674 +++ .../vendor/kolab/net_ldap3/composer.json | 32 + .../vendor/kolab/net_ldap3/lib/Net/LDAP3.php | 3260 ++++++++++++ .../kolab/net_ldap3/lib/Net/LDAP3/Result.php | 184 + ruty/mails/vendor/masterminds/html5/CREDITS | 11 + .../vendor/masterminds/html5/LICENSE.txt | 66 + ruty/mails/vendor/masterminds/html5/README.md | 270 + .../mails/vendor/masterminds/html5/RELEASE.md | 157 + .../vendor/masterminds/html5/UPGRADING.md | 21 + .../vendor/masterminds/html5/bin/entities.php | 26 + .../vendor/masterminds/html5/composer.json | 42 + .../vendor/masterminds/html5/src/HTML5.php | 246 + .../masterminds/html5/src/HTML5/Elements.php | 619 +++ .../masterminds/html5/src/HTML5/Entities.php | 2236 +++++++++ .../masterminds/html5/src/HTML5/Exception.php | 10 + .../html5/src/HTML5/InstructionProcessor.php | 41 + .../src/HTML5/Parser/CharacterReference.php | 61 + .../html5/src/HTML5/Parser/DOMTreeBuilder.php | 705 +++ .../html5/src/HTML5/Parser/EventHandler.php | 114 + .../src/HTML5/Parser/FileInputStream.php | 33 + .../html5/src/HTML5/Parser/InputStream.php | 87 + .../html5/src/HTML5/Parser/ParseError.php | 10 + .../html5/src/HTML5/Parser/README.md | 53 + .../html5/src/HTML5/Parser/Scanner.php | 416 ++ .../src/HTML5/Parser/StringInputStream.php | 331 ++ .../html5/src/HTML5/Parser/Tokenizer.php | 1197 +++++ .../src/HTML5/Parser/TreeBuildingRules.php | 127 + .../html5/src/HTML5/Parser/UTF8Utils.php | 183 + .../src/HTML5/Serializer/HTML5Entities.php | 1533 ++++++ .../src/HTML5/Serializer/OutputRules.php | 553 +++ .../html5/src/HTML5/Serializer/README.md | 33 + .../src/HTML5/Serializer/RulesInterface.php | 99 + .../html5/src/HTML5/Serializer/Traverser.php | 142 + .../mails/vendor/pear/auth_sasl/Auth/SASL.php | 125 + .../pear/auth_sasl/Auth/SASL/Anonymous.php | 71 + .../pear/auth_sasl/Auth/SASL/Common.php | 105 + .../pear/auth_sasl/Auth/SASL/CramMD5.php | 68 + .../pear/auth_sasl/Auth/SASL/DigestMD5.php | 197 + .../pear/auth_sasl/Auth/SASL/External.php | 63 + .../vendor/pear/auth_sasl/Auth/SASL/Login.php | 65 + .../vendor/pear/auth_sasl/Auth/SASL/Plain.php | 63 + .../vendor/pear/auth_sasl/Auth/SASL/SCRAM.php | 306 ++ ruty/mails/vendor/pear/auth_sasl/README.md | 46 + .../mails/vendor/pear/auth_sasl/composer.json | 41 + ruty/mails/vendor/pear/auth_sasl/package.xml | 217 + .../Console/CommandLine.php | 1309 +++++ .../Console/CommandLine/Action.php | 142 + .../Console/CommandLine/Action/Callback.php | 80 + .../Console/CommandLine/Action/Counter.php | 86 + .../Console/CommandLine/Action/Help.php | 60 + .../Console/CommandLine/Action/List.php | 73 + .../Console/CommandLine/Action/Password.php | 90 + .../Console/CommandLine/Action/StoreArray.php | 78 + .../Console/CommandLine/Action/StoreFalse.php | 64 + .../Console/CommandLine/Action/StoreFloat.php | 76 + .../Console/CommandLine/Action/StoreInt.php | 76 + .../CommandLine/Action/StoreString.php | 62 + .../Console/CommandLine/Action/StoreTrue.php | 63 + .../Console/CommandLine/Action/Version.php | 60 + .../Console/CommandLine/Argument.php | 102 + .../Console/CommandLine/Command.php | 76 + .../CommandLine/CustomMessageProvider.php | 66 + .../Console/CommandLine/Element.php | 151 + .../Console/CommandLine/Exception.php | 97 + .../Console/CommandLine/MessageProvider.php | 56 + .../CommandLine/MessageProvider/Default.php | 153 + .../Console/CommandLine/Option.php | 366 ++ .../Console/CommandLine/Outputter.php | 63 + .../Console/CommandLine/Outputter/Default.php | 82 + .../Console/CommandLine/Renderer.php | 71 + .../Console/CommandLine/Renderer/Default.php | 430 ++ .../Console/CommandLine/Result.php | 71 + .../Console/CommandLine/XmlParser.php | 318 ++ .../pear/console_commandline/README.rst | 55 + .../pear/console_commandline/composer.json | 42 + .../console_commandline/data/xmlschema.rng | 234 + .../pear/console_commandline/phpunit.xml | 10 + .../pear/console_getopt/Console/Getopt.php | 365 ++ ruty/mails/vendor/pear/console_getopt/LICENSE | 25 + .../vendor/pear/console_getopt/README.rst | 26 + .../vendor/pear/console_getopt/composer.json | 35 + .../vendor/pear/console_getopt/package.xml | 302 ++ .../mails/vendor/pear/crypt_gpg/Crypt/GPG.php | 1932 ++++++++ .../pear/crypt_gpg/Crypt/GPG/Engine.php | 1975 ++++++++ .../pear/crypt_gpg/Crypt/GPG/Exceptions.php | 483 ++ .../vendor/pear/crypt_gpg/Crypt/GPG/Key.php | 205 + .../pear/crypt_gpg/Crypt/GPG/KeyGenerator.php | 594 +++ .../pear/crypt_gpg/Crypt/GPG/PinEntry.php | 764 +++ .../crypt_gpg/Crypt/GPG/ProcessControl.php | 128 + .../crypt_gpg/Crypt/GPG/ProcessHandler.php | 900 ++++ .../pear/crypt_gpg/Crypt/GPG/Signature.php | 370 ++ .../Crypt/GPG/SignatureCreationInfo.php | 225 + .../pear/crypt_gpg/Crypt/GPG/SubKey.php | 661 +++ .../pear/crypt_gpg/Crypt/GPG/UserId.php | 328 ++ .../pear/crypt_gpg/Crypt/GPGAbstract.php | 436 ++ ruty/mails/vendor/pear/crypt_gpg/LICENSE | 502 ++ ruty/mails/vendor/pear/crypt_gpg/README.md | 48 + .../mails/vendor/pear/crypt_gpg/composer.json | 55 + .../pear/crypt_gpg/data/pinentry-cli.xml | 18 + .../pear/crypt_gpg/scripts/crypt-gpg-pinentry | 33 + .../mails/vendor/pear/mail_mime/Mail/mime.php | 1590 ++++++ .../vendor/pear/mail_mime/Mail/mimePart.php | 1302 +++++ ruty/mails/vendor/pear/mail_mime/README | 19 + .../mails/vendor/pear/mail_mime/composer.json | 35 + ruty/mails/vendor/pear/net_ldap2/LICENSE | 165 + .../mails/vendor/pear/net_ldap2/Net/LDAP2.php | 1803 +++++++ .../vendor/pear/net_ldap2/Net/LDAP2/Entry.php | 1096 +++++ .../pear/net_ldap2/Net/LDAP2/Filter.php | 675 +++ .../vendor/pear/net_ldap2/Net/LDAP2/LDIF.php | 925 ++++ .../pear/net_ldap2/Net/LDAP2/RootDSE.php | 240 + .../pear/net_ldap2/Net/LDAP2/Schema.php | 622 +++ .../Net/LDAP2/SchemaCache.interface.php | 59 + .../pear/net_ldap2/Net/LDAP2/Search.php | 631 +++ .../Net/LDAP2/SimpleFileSchemaCache.php | 97 + .../vendor/pear/net_ldap2/Net/LDAP2/Util.php | 620 +++ .../mails/vendor/pear/net_ldap2/composer.json | 25 + ruty/mails/vendor/pear/net_ldap2/package.xml | 877 ++++ ruty/mails/vendor/pear/net_sieve/Sieve.php | 1509 ++++++ .../mails/vendor/pear/net_sieve/composer.json | 52 + ruty/mails/vendor/pear/net_smtp/LICENSE | 23 + ruty/mails/vendor/pear/net_smtp/Net/SMTP.php | 1478 ++++++ ruty/mails/vendor/pear/net_smtp/README.rst | 298 ++ ruty/mails/vendor/pear/net_smtp/composer.json | 53 + .../vendor/pear/net_socket/Net/Socket.php | 686 +++ .../vendor/pear/net_socket/composer.json | 41 + ruty/mails/vendor/pear/net_socket/package.xml | 58 + .../vendor/pear/pear-core-minimal/README.rst | 26 + .../pear/pear-core-minimal/composer.json | 32 + .../pear/pear-core-minimal/src/OS/Guess.php | 395 ++ .../pear/pear-core-minimal/src/PEAR.php | 1136 +++++ .../pear/pear-core-minimal/src/PEAR/Error.php | 14 + .../pear-core-minimal/src/PEAR/ErrorStack.php | 979 ++++ .../pear/pear-core-minimal/src/System.php | 630 +++ ruty/mails/vendor/pear/pear_exception/LICENSE | 27 + .../pear/pear_exception/PEAR/Exception.php | 456 ++ .../vendor/pear/pear_exception/composer.json | 41 + .../mails/vendor/psr/http-client/CHANGELOG.md | 23 + ruty/mails/vendor/psr/http-client/LICENSE | 19 + ruty/mails/vendor/psr/http-client/README.md | 12 + .../vendor/psr/http-client/composer.json | 27 + .../src/ClientExceptionInterface.php | 10 + .../psr/http-client/src/ClientInterface.php | 20 + .../src/NetworkExceptionInterface.php | 24 + .../src/RequestExceptionInterface.php | 24 + ruty/mails/vendor/psr/http-factory/LICENSE | 21 + ruty/mails/vendor/psr/http-factory/README.md | 12 + .../vendor/psr/http-factory/composer.json | 35 + .../src/RequestFactoryInterface.php | 18 + .../src/ResponseFactoryInterface.php | 18 + .../src/ServerRequestFactoryInterface.php | 24 + .../src/StreamFactoryInterface.php | 45 + .../src/UploadedFileFactoryInterface.php | 34 + .../http-factory/src/UriFactoryInterface.php | 17 + .../vendor/psr/http-message/CHANGELOG.md | 36 + ruty/mails/vendor/psr/http-message/LICENSE | 19 + ruty/mails/vendor/psr/http-message/README.md | 16 + .../vendor/psr/http-message/composer.json | 26 + .../psr/http-message/docs/PSR7-Interfaces.md | 130 + .../psr/http-message/docs/PSR7-Usage.md | 159 + .../psr/http-message/src/MessageInterface.php | 187 + .../psr/http-message/src/RequestInterface.php | 130 + .../http-message/src/ResponseInterface.php | 68 + .../src/ServerRequestInterface.php | 261 + .../psr/http-message/src/StreamInterface.php | 158 + .../src/UploadedFileInterface.php | 123 + .../psr/http-message/src/UriInterface.php | 324 ++ .../vendor/ralouphie/getallheaders/LICENSE | 21 + .../vendor/ralouphie/getallheaders/README.md | 27 + .../ralouphie/getallheaders/composer.json | 26 + .../getallheaders/src/getallheaders.php | 46 + .../roundcube/plugin-installer/README.md | 74 + .../roundcube/plugin-installer/composer.json | 36 + .../Roundcube/Composer/ExtensionInstaller.php | 442 ++ .../Roundcube/Composer/PluginInstaller.php | 58 + .../Roundcube/Composer/RoundcubeInstaller.php | 33 + .../src/Roundcube/Composer/SkinInstaller.php | 58 + .../roundcube/rtf-html-php/CHANGELOG.md | 61 + .../vendor/roundcube/rtf-html-php/LICENSE | 341 ++ .../vendor/roundcube/rtf-html-php/README.md | 46 + .../roundcube/rtf-html-php/composer.json | 35 + .../rtf-html-php/src/ControlSymbol.php | 21 + .../rtf-html-php/src/ControlWord.php | 21 + .../roundcube/rtf-html-php/src/Document.php | 415 ++ .../roundcube/rtf-html-php/src/Element.php | 11 + .../roundcube/rtf-html-php/src/Group.php | 102 + .../roundcube/rtf-html-php/src/Html/Font.php | 35 + .../rtf-html-php/src/Html/HtmlFormatter.php | 740 +++ .../roundcube/rtf-html-php/src/Html/Image.php | 56 + .../roundcube/rtf-html-php/src/Html/State.php | 163 + .../roundcube/rtf-html-php/src/Text.php | 30 + .../deprecation-contracts/CHANGELOG.md | 5 + .../symfony/deprecation-contracts/LICENSE | 19 + .../symfony/deprecation-contracts/README.md | 26 + .../deprecation-contracts/composer.json | 35 + .../deprecation-contracts/function.php | 27 + 617 files changed, 106612 insertions(+) create mode 100644 ruty/mails/SQL/mssql.initial.sql create mode 100644 ruty/mails/SQL/mssql/2009103100.sql create mode 100644 ruty/mails/SQL/mssql/2010100600.sql create mode 100644 ruty/mails/SQL/mssql/2011011200.sql create mode 100644 ruty/mails/SQL/mssql/2011092800.sql create mode 100644 ruty/mails/SQL/mssql/2011111600.sql create mode 100644 ruty/mails/SQL/mssql/2011121400.sql create mode 100644 ruty/mails/SQL/mssql/2012051800.sql create mode 100644 ruty/mails/SQL/mssql/2012080700.sql create mode 100644 ruty/mails/SQL/mssql/2013011000.sql create mode 100644 ruty/mails/SQL/mssql/2013042700.sql create mode 100644 ruty/mails/SQL/mssql/2013052500.sql create mode 100644 ruty/mails/SQL/mssql/2013061000.sql create mode 100644 ruty/mails/SQL/mssql/2014042900.sql create mode 100644 ruty/mails/SQL/mssql/2015030800.sql create mode 100644 ruty/mails/SQL/mssql/2015111100.sql create mode 100644 ruty/mails/SQL/mssql/2016081200.sql create mode 100644 ruty/mails/SQL/mssql/2016100900.sql create mode 100644 ruty/mails/SQL/mssql/2016112200.sql create mode 100644 ruty/mails/SQL/mssql/2018021600.sql create mode 100644 ruty/mails/SQL/mssql/2018122300.sql create mode 100644 ruty/mails/SQL/mssql/2019092900.sql create mode 100644 ruty/mails/SQL/mssql/2020020100.sql create mode 100644 ruty/mails/SQL/mssql/2020020101.sql create mode 100644 ruty/mails/SQL/mssql/2020091000.sql create mode 100644 ruty/mails/SQL/mssql/2020122900.sql create mode 100644 ruty/mails/SQL/mssql/2021081000.sql create mode 100644 ruty/mails/SQL/mssql/2021100300.sql create mode 100644 ruty/mails/SQL/mssql/2022081200.sql create mode 100644 ruty/mails/SQL/mysql.initial.sql create mode 100644 ruty/mails/SQL/mysql/2008030300.sql create mode 100644 ruty/mails/SQL/mysql/2008040500.sql create mode 100644 ruty/mails/SQL/mysql/2008060900.sql create mode 100644 ruty/mails/SQL/mysql/2008092100.sql create mode 100644 ruty/mails/SQL/mysql/2009090400.sql create mode 100644 ruty/mails/SQL/mysql/2009103100.sql create mode 100644 ruty/mails/SQL/mysql/2010042300.sql create mode 100644 ruty/mails/SQL/mysql/2010100600.sql create mode 100644 ruty/mails/SQL/mysql/2011011200.sql create mode 100644 ruty/mails/SQL/mysql/2011092800.sql create mode 100644 ruty/mails/SQL/mysql/2011111600.sql create mode 100644 ruty/mails/SQL/mysql/2011121400.sql create mode 100644 ruty/mails/SQL/mysql/2012080700.sql create mode 100644 ruty/mails/SQL/mysql/2013011000.sql create mode 100644 ruty/mails/SQL/mysql/2013042700.sql create mode 100644 ruty/mails/SQL/mysql/2013052500.sql create mode 100644 ruty/mails/SQL/mysql/2013061000.sql create mode 100644 ruty/mails/SQL/mysql/2014042900.sql create mode 100644 ruty/mails/SQL/mysql/2015030800.sql create mode 100644 ruty/mails/SQL/mysql/2015111100.sql create mode 100644 ruty/mails/SQL/mysql/2016081200.sql create mode 100644 ruty/mails/SQL/mysql/2016100900.sql create mode 100644 ruty/mails/SQL/mysql/2016112200.sql create mode 100644 ruty/mails/SQL/mysql/2018021600.sql create mode 100644 ruty/mails/SQL/mysql/2018122300.sql create mode 100644 ruty/mails/SQL/mysql/2019092900.sql create mode 100644 ruty/mails/SQL/mysql/2020020100.sql create mode 100644 ruty/mails/SQL/mysql/2020020101.sql create mode 100644 ruty/mails/SQL/mysql/2020091000.sql create mode 100644 ruty/mails/SQL/mysql/2020122900.sql create mode 100644 ruty/mails/SQL/mysql/2021081000.sql create mode 100644 ruty/mails/SQL/mysql/2021100300.sql create mode 100644 ruty/mails/SQL/mysql/2022081200.sql create mode 100644 ruty/mails/SQL/oracle.initial.sql create mode 100644 ruty/mails/SQL/oracle/2015030800.sql create mode 100644 ruty/mails/SQL/oracle/2015111100.sql create mode 100644 ruty/mails/SQL/oracle/2016081200.sql create mode 100644 ruty/mails/SQL/oracle/2016100900.sql create mode 100644 ruty/mails/SQL/oracle/2016112200.sql create mode 100644 ruty/mails/SQL/oracle/2018021600.sql create mode 100644 ruty/mails/SQL/oracle/2018122300.sql create mode 100644 ruty/mails/SQL/oracle/2019092900.sql create mode 100644 ruty/mails/SQL/oracle/2020020100.sql create mode 100644 ruty/mails/SQL/oracle/2020020101.sql create mode 100644 ruty/mails/SQL/oracle/2020091000.sql create mode 100644 ruty/mails/SQL/oracle/2020122900.sql create mode 100644 ruty/mails/SQL/oracle/2021081000.sql create mode 100644 ruty/mails/SQL/oracle/2021100300.sql create mode 100644 ruty/mails/SQL/oracle/2022081200.sql create mode 100644 ruty/mails/SQL/postgres.initial.sql create mode 100644 ruty/mails/SQL/postgres/2008030300.sql create mode 100644 ruty/mails/SQL/postgres/2008060900.sql create mode 100644 ruty/mails/SQL/postgres/2008092100.sql create mode 100644 ruty/mails/SQL/postgres/2009090400.sql create mode 100644 ruty/mails/SQL/postgres/2009103100.sql create mode 100644 ruty/mails/SQL/postgres/2010042300.sql create mode 100644 ruty/mails/SQL/postgres/2010100600.sql create mode 100644 ruty/mails/SQL/postgres/2011011200.sql create mode 100644 ruty/mails/SQL/postgres/2011092800.sql create mode 100644 ruty/mails/SQL/postgres/2011111600.sql create mode 100644 ruty/mails/SQL/postgres/2011121400.sql create mode 100644 ruty/mails/SQL/postgres/2012080700.sql create mode 100644 ruty/mails/SQL/postgres/2013011000.sql create mode 100644 ruty/mails/SQL/postgres/2013042700.sql create mode 100644 ruty/mails/SQL/postgres/2013052500.sql create mode 100644 ruty/mails/SQL/postgres/2013061000.sql create mode 100644 ruty/mails/SQL/postgres/2014042900.sql create mode 100644 ruty/mails/SQL/postgres/2015030800.sql create mode 100644 ruty/mails/SQL/postgres/2015111100.sql create mode 100644 ruty/mails/SQL/postgres/2016081200.sql create mode 100644 ruty/mails/SQL/postgres/2016100900.sql create mode 100644 ruty/mails/SQL/postgres/2016112200.sql create mode 100644 ruty/mails/SQL/postgres/2018021600.sql create mode 100644 ruty/mails/SQL/postgres/2018122300.sql create mode 100644 ruty/mails/SQL/postgres/2019092900.sql create mode 100644 ruty/mails/SQL/postgres/2020020100.sql create mode 100644 ruty/mails/SQL/postgres/2020020101.sql create mode 100644 ruty/mails/SQL/postgres/2020091000.sql create mode 100644 ruty/mails/SQL/postgres/2020122900.sql create mode 100644 ruty/mails/SQL/postgres/2021081000.sql create mode 100644 ruty/mails/SQL/postgres/2021100300.sql create mode 100644 ruty/mails/SQL/postgres/2022081200.sql create mode 100644 ruty/mails/SQL/sqlite.initial.sql create mode 100644 ruty/mails/SQL/sqlite/2008030300.sql create mode 100644 ruty/mails/SQL/sqlite/2008060900.sql create mode 100644 ruty/mails/SQL/sqlite/2008092100.sql create mode 100644 ruty/mails/SQL/sqlite/2009090400.sql create mode 100644 ruty/mails/SQL/sqlite/2009103100.sql create mode 100644 ruty/mails/SQL/sqlite/2010042300.sql create mode 100644 ruty/mails/SQL/sqlite/2010100600.sql create mode 100644 ruty/mails/SQL/sqlite/2011011200.sql create mode 100644 ruty/mails/SQL/sqlite/2011092800.sql create mode 100644 ruty/mails/SQL/sqlite/2011111600.sql create mode 100644 ruty/mails/SQL/sqlite/2011121400.sql create mode 100644 ruty/mails/SQL/sqlite/2012080700.sql create mode 100644 ruty/mails/SQL/sqlite/2013011000.sql create mode 100644 ruty/mails/SQL/sqlite/2013011700.sql create mode 100644 ruty/mails/SQL/sqlite/2013042700.sql create mode 100644 ruty/mails/SQL/sqlite/2013052500.sql create mode 100644 ruty/mails/SQL/sqlite/2013061000.sql create mode 100644 ruty/mails/SQL/sqlite/2014042900.sql create mode 100644 ruty/mails/SQL/sqlite/2015030800.sql create mode 100644 ruty/mails/SQL/sqlite/2015111100.sql create mode 100644 ruty/mails/SQL/sqlite/2016081200.sql create mode 100644 ruty/mails/SQL/sqlite/2016100900.sql create mode 100644 ruty/mails/SQL/sqlite/2016112200.sql create mode 100644 ruty/mails/SQL/sqlite/2018021600.sql create mode 100644 ruty/mails/SQL/sqlite/2018122300.sql create mode 100644 ruty/mails/SQL/sqlite/2019092900.sql create mode 100644 ruty/mails/SQL/sqlite/2020020100.sql create mode 100644 ruty/mails/SQL/sqlite/2020020101.sql create mode 100644 ruty/mails/SQL/sqlite/2020091000.sql create mode 100644 ruty/mails/SQL/sqlite/2020122900.sql create mode 100644 ruty/mails/SQL/sqlite/2021081000.sql create mode 100644 ruty/mails/SQL/sqlite/2021100300.sql create mode 100644 ruty/mails/SQL/sqlite/2022081200.sql create mode 100644 ruty/mails/skins/elastic/README.md create mode 100644 ruty/mails/skins/elastic/deps/bootstrap.bundle.min.js create mode 100644 ruty/mails/skins/elastic/deps/bootstrap.min.css create mode 100644 ruty/mails/skins/elastic/deps/less.min.js create mode 100644 ruty/mails/skins/elastic/fonts/fa-regular-400.woff create mode 100644 ruty/mails/skins/elastic/fonts/fa-regular-400.woff2 create mode 100644 ruty/mails/skins/elastic/fonts/fa-solid-900.woff create mode 100644 ruty/mails/skins/elastic/fonts/fa-solid-900.woff2 create mode 100644 ruty/mails/skins/elastic/fonts/roboto-v29-italic-700.woff create mode 100644 ruty/mails/skins/elastic/fonts/roboto-v29-italic-700.woff2 create mode 100644 ruty/mails/skins/elastic/fonts/roboto-v29-italic.woff create mode 100644 ruty/mails/skins/elastic/fonts/roboto-v29-italic.woff2 create mode 100644 ruty/mails/skins/elastic/fonts/roboto-v29-regular-700.woff create mode 100644 ruty/mails/skins/elastic/fonts/roboto-v29-regular-700.woff2 create mode 100644 ruty/mails/skins/elastic/fonts/roboto-v29-regular.woff create mode 100644 ruty/mails/skins/elastic/fonts/roboto-v29-regular.woff2 create mode 100644 ruty/mails/skins/elastic/images/contactgroup.svg create mode 100644 ruty/mails/skins/elastic/images/contactpic.svg create mode 100644 ruty/mails/skins/elastic/images/corner-handle.svg create mode 100644 ruty/mails/skins/elastic/images/download.svg create mode 100644 ruty/mails/skins/elastic/images/google-icon.svg create mode 100644 ruty/mails/skins/elastic/images/logo.ico create mode 100644 ruty/mails/skins/elastic/images/logo.svg create mode 100644 ruty/mails/skins/elastic/images/microsoft-icon.svg create mode 100644 ruty/mails/skins/elastic/meta.json create mode 100644 ruty/mails/skins/elastic/styles/colors.less create mode 100644 ruty/mails/skins/elastic/styles/dark.less create mode 100644 ruty/mails/skins/elastic/styles/embed.less create mode 100644 ruty/mails/skins/elastic/styles/embed.min.css create mode 100644 ruty/mails/skins/elastic/styles/fontawesome.less create mode 100644 ruty/mails/skins/elastic/styles/global.less create mode 100644 ruty/mails/skins/elastic/styles/layout.less create mode 100644 ruty/mails/skins/elastic/styles/mixins.less create mode 100644 ruty/mails/skins/elastic/styles/print.less create mode 100644 ruty/mails/skins/elastic/styles/print.min.css create mode 100644 ruty/mails/skins/elastic/styles/styles.less create mode 100644 ruty/mails/skins/elastic/styles/styles.min.css create mode 100644 ruty/mails/skins/elastic/styles/variables.less create mode 100644 ruty/mails/skins/elastic/styles/widgets/buttons.less create mode 100644 ruty/mails/skins/elastic/styles/widgets/common.less create mode 100644 ruty/mails/skins/elastic/styles/widgets/dialogs.less create mode 100644 ruty/mails/skins/elastic/styles/widgets/editor.less create mode 100644 ruty/mails/skins/elastic/styles/widgets/forms.less create mode 100644 ruty/mails/skins/elastic/styles/widgets/jqueryui.less create mode 100644 ruty/mails/skins/elastic/styles/widgets/lists.less create mode 100644 ruty/mails/skins/elastic/styles/widgets/menu.less create mode 100644 ruty/mails/skins/elastic/styles/widgets/messages.less create mode 100644 ruty/mails/skins/elastic/templates/about.html create mode 100644 ruty/mails/skins/elastic/templates/addressbook.html create mode 100644 ruty/mails/skins/elastic/templates/bounce.html create mode 100644 ruty/mails/skins/elastic/templates/compose.html create mode 100644 ruty/mails/skins/elastic/templates/contact.html create mode 100644 ruty/mails/skins/elastic/templates/contactedit.html create mode 100644 ruty/mails/skins/elastic/templates/contactimport.html create mode 100644 ruty/mails/skins/elastic/templates/contactprint.html create mode 100644 ruty/mails/skins/elastic/templates/contactsearch.html create mode 100644 ruty/mails/skins/elastic/templates/dialog.html create mode 100644 ruty/mails/skins/elastic/templates/error.html create mode 100644 ruty/mails/skins/elastic/templates/folderedit.html create mode 100644 ruty/mails/skins/elastic/templates/folders.html create mode 100644 ruty/mails/skins/elastic/templates/identities.html create mode 100644 ruty/mails/skins/elastic/templates/identityedit.html create mode 100644 ruty/mails/skins/elastic/templates/includes/footer.html create mode 100644 ruty/mails/skins/elastic/templates/includes/layout.html create mode 100644 ruty/mails/skins/elastic/templates/includes/mail-menu.html create mode 100644 ruty/mails/skins/elastic/templates/includes/menu.html create mode 100644 ruty/mails/skins/elastic/templates/includes/pagenav.html create mode 100644 ruty/mails/skins/elastic/templates/includes/settings-menu.html create mode 100644 ruty/mails/skins/elastic/templates/login.html create mode 100644 ruty/mails/skins/elastic/templates/mail.html create mode 100644 ruty/mails/skins/elastic/templates/message.html create mode 100644 ruty/mails/skins/elastic/templates/messagepart.html create mode 100644 ruty/mails/skins/elastic/templates/messageprint.html create mode 100644 ruty/mails/skins/elastic/templates/plugin.html create mode 100644 ruty/mails/skins/elastic/templates/responseedit.html create mode 100644 ruty/mails/skins/elastic/templates/responses.html create mode 100644 ruty/mails/skins/elastic/templates/settings.html create mode 100644 ruty/mails/skins/elastic/templates/settingsedit.html create mode 100644 ruty/mails/skins/elastic/thumbnail.png create mode 100644 ruty/mails/skins/elastic/ui.js create mode 100644 ruty/mails/skins/elastic/ui.min.js create mode 100644 ruty/mails/skins/elastic/watermark.html create mode 100644 ruty/mails/temp/.htaccess create mode 100644 ruty/mails/vendor/autoload.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/LICENSE create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/README.md create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/composer.json create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Common/BitArray.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Common/BitMatrix.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Common/BitUtils.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Common/CharacterSetEci.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Common/EcBlock.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Common/EcBlocks.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Common/ErrorCorrectionLevel.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Common/FormatInformation.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Common/Mode.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Common/ReedSolomonCodec.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Common/Version.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Encoder/BlockPair.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Encoder/ByteMatrix.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Encoder/Encoder.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Encoder/MaskUtil.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Encoder/MatrixUtil.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Encoder/QrCode.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Exception/ExceptionInterface.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Exception/InvalidArgumentException.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Exception/OutOfBoundsException.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Exception/RuntimeException.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Exception/UnexpectedValueException.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Exception/WriterException.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Color/Alpha.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Color/Cmyk.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Color/ColorInterface.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Color/Gray.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Color/Rgb.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Eye/CompositeEye.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Eye/EyeInterface.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Eye/ModuleEye.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Eye/SimpleCircleEye.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Eye/SquareEye.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Image/EpsImageBackEnd.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Image/ImageBackEndInterface.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Image/ImagickImageBackEnd.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Image/SvgImageBackEnd.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Image/TransformationMatrix.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/ImageRenderer.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Module/DotsModule.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Module/EdgeIterator/Edge.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Module/EdgeIterator/EdgeIterator.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Module/ModuleInterface.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Module/RoundnessModule.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Module/SquareModule.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Path/Close.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Path/Curve.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Path/EllipticArc.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Path/Line.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Path/Move.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Path/OperationInterface.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/Path/Path.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/PlainTextRenderer.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/RendererInterface.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/RendererStyle/EyeFill.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/RendererStyle/Fill.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/RendererStyle/Gradient.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/RendererStyle/GradientType.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Renderer/RendererStyle/RendererStyle.php create mode 100644 ruty/mails/vendor/bacon/bacon-qr-code/src/Writer.php create mode 100644 ruty/mails/vendor/bin/crypt-gpg-pinentry create mode 100644 ruty/mails/vendor/composer/ClassLoader.php create mode 100644 ruty/mails/vendor/composer/InstalledVersions.php create mode 100644 ruty/mails/vendor/composer/LICENSE create mode 100644 ruty/mails/vendor/composer/autoload_classmap.php create mode 100644 ruty/mails/vendor/composer/autoload_files.php create mode 100644 ruty/mails/vendor/composer/autoload_namespaces.php create mode 100644 ruty/mails/vendor/composer/autoload_psr4.php create mode 100644 ruty/mails/vendor/composer/autoload_real.php create mode 100644 ruty/mails/vendor/composer/autoload_static.php create mode 100644 ruty/mails/vendor/composer/include_paths.php create mode 100644 ruty/mails/vendor/composer/installed.json create mode 100644 ruty/mails/vendor/composer/installed.php create mode 100644 ruty/mails/vendor/composer/platform_check.php create mode 100644 ruty/mails/vendor/dasprid/enum/LICENSE create mode 100644 ruty/mails/vendor/dasprid/enum/README.md create mode 100644 ruty/mails/vendor/dasprid/enum/composer.json create mode 100644 ruty/mails/vendor/dasprid/enum/src/AbstractEnum.php create mode 100644 ruty/mails/vendor/dasprid/enum/src/EnumMap.php create mode 100644 ruty/mails/vendor/dasprid/enum/src/Exception/CloneNotSupportedException.php create mode 100644 ruty/mails/vendor/dasprid/enum/src/Exception/ExceptionInterface.php create mode 100644 ruty/mails/vendor/dasprid/enum/src/Exception/ExpectationException.php create mode 100644 ruty/mails/vendor/dasprid/enum/src/Exception/IllegalArgumentException.php create mode 100644 ruty/mails/vendor/dasprid/enum/src/Exception/MismatchException.php create mode 100644 ruty/mails/vendor/dasprid/enum/src/Exception/SerializeNotSupportedException.php create mode 100644 ruty/mails/vendor/dasprid/enum/src/Exception/UnserializeNotSupportedException.php create mode 100644 ruty/mails/vendor/dasprid/enum/src/NullValue.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/CHANGELOG.md create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/LICENSE create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/README.md create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/UPGRADING.md create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/composer.json create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/BodySummarizer.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Client.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/ClientInterface.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/ClientTrait.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/HandlerStack.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/MessageFormatter.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Middleware.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Pool.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/RequestOptions.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/TransferStats.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/Utils.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/functions.php create mode 100644 ruty/mails/vendor/guzzlehttp/guzzle/src/functions_include.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/CHANGELOG.md create mode 100644 ruty/mails/vendor/guzzlehttp/promises/LICENSE create mode 100644 ruty/mails/vendor/guzzlehttp/promises/README.md create mode 100644 ruty/mails/vendor/guzzlehttp/promises/composer.json create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/AggregateException.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/CancellationException.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/Coroutine.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/Create.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/Each.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/EachPromise.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/FulfilledPromise.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/Is.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/Promise.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/PromiseInterface.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/PromisorInterface.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/RejectedPromise.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/RejectionException.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/TaskQueue.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/TaskQueueInterface.php create mode 100644 ruty/mails/vendor/guzzlehttp/promises/src/Utils.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/CHANGELOG.md create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/LICENSE create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/README.md create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/composer.json create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/AppendStream.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/BufferStream.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/CachingStream.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/DroppingStream.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/Exception/MalformedUriException.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/FnStream.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/Header.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/HttpFactory.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/InflateStream.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/LazyOpenStream.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/LimitStream.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/Message.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/MessageTrait.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/MimeType.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/MultipartStream.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/NoSeekStream.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/PumpStream.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/Query.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/Request.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/Response.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/Rfc7230.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/ServerRequest.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/Stream.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/StreamWrapper.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/UploadedFile.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/Uri.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/UriComparator.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/UriNormalizer.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/UriResolver.php create mode 100644 ruty/mails/vendor/guzzlehttp/psr7/src/Utils.php create mode 100644 ruty/mails/vendor/kolab/net_ldap3/.arcconfig create mode 100644 ruty/mails/vendor/kolab/net_ldap3/LICENSE create mode 100644 ruty/mails/vendor/kolab/net_ldap3/composer.json create mode 100644 ruty/mails/vendor/kolab/net_ldap3/lib/Net/LDAP3.php create mode 100644 ruty/mails/vendor/kolab/net_ldap3/lib/Net/LDAP3/Result.php create mode 100644 ruty/mails/vendor/masterminds/html5/CREDITS create mode 100644 ruty/mails/vendor/masterminds/html5/LICENSE.txt create mode 100644 ruty/mails/vendor/masterminds/html5/README.md create mode 100644 ruty/mails/vendor/masterminds/html5/RELEASE.md create mode 100644 ruty/mails/vendor/masterminds/html5/UPGRADING.md create mode 100644 ruty/mails/vendor/masterminds/html5/bin/entities.php create mode 100644 ruty/mails/vendor/masterminds/html5/composer.json create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Elements.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Entities.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Exception.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/InstructionProcessor.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Parser/CharacterReference.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Parser/DOMTreeBuilder.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Parser/EventHandler.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Parser/FileInputStream.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Parser/InputStream.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Parser/ParseError.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Parser/README.md create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Parser/Scanner.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Parser/StringInputStream.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Parser/Tokenizer.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Parser/TreeBuildingRules.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Parser/UTF8Utils.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Serializer/HTML5Entities.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Serializer/OutputRules.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Serializer/README.md create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Serializer/RulesInterface.php create mode 100644 ruty/mails/vendor/masterminds/html5/src/HTML5/Serializer/Traverser.php create mode 100644 ruty/mails/vendor/pear/auth_sasl/Auth/SASL.php create mode 100644 ruty/mails/vendor/pear/auth_sasl/Auth/SASL/Anonymous.php create mode 100644 ruty/mails/vendor/pear/auth_sasl/Auth/SASL/Common.php create mode 100644 ruty/mails/vendor/pear/auth_sasl/Auth/SASL/CramMD5.php create mode 100644 ruty/mails/vendor/pear/auth_sasl/Auth/SASL/DigestMD5.php create mode 100644 ruty/mails/vendor/pear/auth_sasl/Auth/SASL/External.php create mode 100644 ruty/mails/vendor/pear/auth_sasl/Auth/SASL/Login.php create mode 100644 ruty/mails/vendor/pear/auth_sasl/Auth/SASL/Plain.php create mode 100644 ruty/mails/vendor/pear/auth_sasl/Auth/SASL/SCRAM.php create mode 100644 ruty/mails/vendor/pear/auth_sasl/README.md create mode 100644 ruty/mails/vendor/pear/auth_sasl/composer.json create mode 100644 ruty/mails/vendor/pear/auth_sasl/package.xml create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Action.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Action/Callback.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Action/Counter.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Action/Help.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Action/List.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Action/Password.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Action/StoreArray.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Action/StoreFalse.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Action/StoreFloat.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Action/StoreInt.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Action/StoreString.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Action/StoreTrue.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Action/Version.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Argument.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Command.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/CustomMessageProvider.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Element.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Exception.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/MessageProvider.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/MessageProvider/Default.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Option.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Outputter.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Outputter/Default.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Renderer.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Renderer/Default.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/Result.php create mode 100644 ruty/mails/vendor/pear/console_commandline/Console/CommandLine/XmlParser.php create mode 100644 ruty/mails/vendor/pear/console_commandline/README.rst create mode 100644 ruty/mails/vendor/pear/console_commandline/composer.json create mode 100644 ruty/mails/vendor/pear/console_commandline/data/xmlschema.rng create mode 100644 ruty/mails/vendor/pear/console_commandline/phpunit.xml create mode 100644 ruty/mails/vendor/pear/console_getopt/Console/Getopt.php create mode 100644 ruty/mails/vendor/pear/console_getopt/LICENSE create mode 100644 ruty/mails/vendor/pear/console_getopt/README.rst create mode 100644 ruty/mails/vendor/pear/console_getopt/composer.json create mode 100644 ruty/mails/vendor/pear/console_getopt/package.xml create mode 100644 ruty/mails/vendor/pear/crypt_gpg/Crypt/GPG.php create mode 100644 ruty/mails/vendor/pear/crypt_gpg/Crypt/GPG/Engine.php create mode 100644 ruty/mails/vendor/pear/crypt_gpg/Crypt/GPG/Exceptions.php create mode 100644 ruty/mails/vendor/pear/crypt_gpg/Crypt/GPG/Key.php create mode 100644 ruty/mails/vendor/pear/crypt_gpg/Crypt/GPG/KeyGenerator.php create mode 100644 ruty/mails/vendor/pear/crypt_gpg/Crypt/GPG/PinEntry.php create mode 100644 ruty/mails/vendor/pear/crypt_gpg/Crypt/GPG/ProcessControl.php create mode 100644 ruty/mails/vendor/pear/crypt_gpg/Crypt/GPG/ProcessHandler.php create mode 100644 ruty/mails/vendor/pear/crypt_gpg/Crypt/GPG/Signature.php create mode 100644 ruty/mails/vendor/pear/crypt_gpg/Crypt/GPG/SignatureCreationInfo.php create mode 100644 ruty/mails/vendor/pear/crypt_gpg/Crypt/GPG/SubKey.php create mode 100644 ruty/mails/vendor/pear/crypt_gpg/Crypt/GPG/UserId.php create mode 100644 ruty/mails/vendor/pear/crypt_gpg/Crypt/GPGAbstract.php create mode 100644 ruty/mails/vendor/pear/crypt_gpg/LICENSE create mode 100644 ruty/mails/vendor/pear/crypt_gpg/README.md create mode 100644 ruty/mails/vendor/pear/crypt_gpg/composer.json create mode 100644 ruty/mails/vendor/pear/crypt_gpg/data/pinentry-cli.xml create mode 100644 ruty/mails/vendor/pear/crypt_gpg/scripts/crypt-gpg-pinentry create mode 100644 ruty/mails/vendor/pear/mail_mime/Mail/mime.php create mode 100644 ruty/mails/vendor/pear/mail_mime/Mail/mimePart.php create mode 100644 ruty/mails/vendor/pear/mail_mime/README create mode 100644 ruty/mails/vendor/pear/mail_mime/composer.json create mode 100644 ruty/mails/vendor/pear/net_ldap2/LICENSE create mode 100644 ruty/mails/vendor/pear/net_ldap2/Net/LDAP2.php create mode 100644 ruty/mails/vendor/pear/net_ldap2/Net/LDAP2/Entry.php create mode 100644 ruty/mails/vendor/pear/net_ldap2/Net/LDAP2/Filter.php create mode 100644 ruty/mails/vendor/pear/net_ldap2/Net/LDAP2/LDIF.php create mode 100644 ruty/mails/vendor/pear/net_ldap2/Net/LDAP2/RootDSE.php create mode 100644 ruty/mails/vendor/pear/net_ldap2/Net/LDAP2/Schema.php create mode 100644 ruty/mails/vendor/pear/net_ldap2/Net/LDAP2/SchemaCache.interface.php create mode 100644 ruty/mails/vendor/pear/net_ldap2/Net/LDAP2/Search.php create mode 100644 ruty/mails/vendor/pear/net_ldap2/Net/LDAP2/SimpleFileSchemaCache.php create mode 100644 ruty/mails/vendor/pear/net_ldap2/Net/LDAP2/Util.php create mode 100644 ruty/mails/vendor/pear/net_ldap2/composer.json create mode 100644 ruty/mails/vendor/pear/net_ldap2/package.xml create mode 100644 ruty/mails/vendor/pear/net_sieve/Sieve.php create mode 100644 ruty/mails/vendor/pear/net_sieve/composer.json create mode 100644 ruty/mails/vendor/pear/net_smtp/LICENSE create mode 100644 ruty/mails/vendor/pear/net_smtp/Net/SMTP.php create mode 100644 ruty/mails/vendor/pear/net_smtp/README.rst create mode 100644 ruty/mails/vendor/pear/net_smtp/composer.json create mode 100644 ruty/mails/vendor/pear/net_socket/Net/Socket.php create mode 100644 ruty/mails/vendor/pear/net_socket/composer.json create mode 100644 ruty/mails/vendor/pear/net_socket/package.xml create mode 100644 ruty/mails/vendor/pear/pear-core-minimal/README.rst create mode 100644 ruty/mails/vendor/pear/pear-core-minimal/composer.json create mode 100644 ruty/mails/vendor/pear/pear-core-minimal/src/OS/Guess.php create mode 100644 ruty/mails/vendor/pear/pear-core-minimal/src/PEAR.php create mode 100644 ruty/mails/vendor/pear/pear-core-minimal/src/PEAR/Error.php create mode 100644 ruty/mails/vendor/pear/pear-core-minimal/src/PEAR/ErrorStack.php create mode 100644 ruty/mails/vendor/pear/pear-core-minimal/src/System.php create mode 100644 ruty/mails/vendor/pear/pear_exception/LICENSE create mode 100644 ruty/mails/vendor/pear/pear_exception/PEAR/Exception.php create mode 100644 ruty/mails/vendor/pear/pear_exception/composer.json create mode 100644 ruty/mails/vendor/psr/http-client/CHANGELOG.md create mode 100644 ruty/mails/vendor/psr/http-client/LICENSE create mode 100644 ruty/mails/vendor/psr/http-client/README.md create mode 100644 ruty/mails/vendor/psr/http-client/composer.json create mode 100644 ruty/mails/vendor/psr/http-client/src/ClientExceptionInterface.php create mode 100644 ruty/mails/vendor/psr/http-client/src/ClientInterface.php create mode 100644 ruty/mails/vendor/psr/http-client/src/NetworkExceptionInterface.php create mode 100644 ruty/mails/vendor/psr/http-client/src/RequestExceptionInterface.php create mode 100644 ruty/mails/vendor/psr/http-factory/LICENSE create mode 100644 ruty/mails/vendor/psr/http-factory/README.md create mode 100644 ruty/mails/vendor/psr/http-factory/composer.json create mode 100644 ruty/mails/vendor/psr/http-factory/src/RequestFactoryInterface.php create mode 100644 ruty/mails/vendor/psr/http-factory/src/ResponseFactoryInterface.php create mode 100644 ruty/mails/vendor/psr/http-factory/src/ServerRequestFactoryInterface.php create mode 100644 ruty/mails/vendor/psr/http-factory/src/StreamFactoryInterface.php create mode 100644 ruty/mails/vendor/psr/http-factory/src/UploadedFileFactoryInterface.php create mode 100644 ruty/mails/vendor/psr/http-factory/src/UriFactoryInterface.php create mode 100644 ruty/mails/vendor/psr/http-message/CHANGELOG.md create mode 100644 ruty/mails/vendor/psr/http-message/LICENSE create mode 100644 ruty/mails/vendor/psr/http-message/README.md create mode 100644 ruty/mails/vendor/psr/http-message/composer.json create mode 100644 ruty/mails/vendor/psr/http-message/docs/PSR7-Interfaces.md create mode 100644 ruty/mails/vendor/psr/http-message/docs/PSR7-Usage.md create mode 100644 ruty/mails/vendor/psr/http-message/src/MessageInterface.php create mode 100644 ruty/mails/vendor/psr/http-message/src/RequestInterface.php create mode 100644 ruty/mails/vendor/psr/http-message/src/ResponseInterface.php create mode 100644 ruty/mails/vendor/psr/http-message/src/ServerRequestInterface.php create mode 100644 ruty/mails/vendor/psr/http-message/src/StreamInterface.php create mode 100644 ruty/mails/vendor/psr/http-message/src/UploadedFileInterface.php create mode 100644 ruty/mails/vendor/psr/http-message/src/UriInterface.php create mode 100644 ruty/mails/vendor/ralouphie/getallheaders/LICENSE create mode 100644 ruty/mails/vendor/ralouphie/getallheaders/README.md create mode 100644 ruty/mails/vendor/ralouphie/getallheaders/composer.json create mode 100644 ruty/mails/vendor/ralouphie/getallheaders/src/getallheaders.php create mode 100644 ruty/mails/vendor/roundcube/plugin-installer/README.md create mode 100644 ruty/mails/vendor/roundcube/plugin-installer/composer.json create mode 100644 ruty/mails/vendor/roundcube/plugin-installer/src/Roundcube/Composer/ExtensionInstaller.php create mode 100644 ruty/mails/vendor/roundcube/plugin-installer/src/Roundcube/Composer/PluginInstaller.php create mode 100644 ruty/mails/vendor/roundcube/plugin-installer/src/Roundcube/Composer/RoundcubeInstaller.php create mode 100644 ruty/mails/vendor/roundcube/plugin-installer/src/Roundcube/Composer/SkinInstaller.php create mode 100644 ruty/mails/vendor/roundcube/rtf-html-php/CHANGELOG.md create mode 100644 ruty/mails/vendor/roundcube/rtf-html-php/LICENSE create mode 100644 ruty/mails/vendor/roundcube/rtf-html-php/README.md create mode 100644 ruty/mails/vendor/roundcube/rtf-html-php/composer.json create mode 100644 ruty/mails/vendor/roundcube/rtf-html-php/src/ControlSymbol.php create mode 100644 ruty/mails/vendor/roundcube/rtf-html-php/src/ControlWord.php create mode 100644 ruty/mails/vendor/roundcube/rtf-html-php/src/Document.php create mode 100644 ruty/mails/vendor/roundcube/rtf-html-php/src/Element.php create mode 100644 ruty/mails/vendor/roundcube/rtf-html-php/src/Group.php create mode 100644 ruty/mails/vendor/roundcube/rtf-html-php/src/Html/Font.php create mode 100644 ruty/mails/vendor/roundcube/rtf-html-php/src/Html/HtmlFormatter.php create mode 100644 ruty/mails/vendor/roundcube/rtf-html-php/src/Html/Image.php create mode 100644 ruty/mails/vendor/roundcube/rtf-html-php/src/Html/State.php create mode 100644 ruty/mails/vendor/roundcube/rtf-html-php/src/Text.php create mode 100644 ruty/mails/vendor/symfony/deprecation-contracts/CHANGELOG.md create mode 100644 ruty/mails/vendor/symfony/deprecation-contracts/LICENSE create mode 100644 ruty/mails/vendor/symfony/deprecation-contracts/README.md create mode 100644 ruty/mails/vendor/symfony/deprecation-contracts/composer.json create mode 100644 ruty/mails/vendor/symfony/deprecation-contracts/function.php diff --git a/ruty/mails/SQL/mssql.initial.sql b/ruty/mails/SQL/mssql.initial.sql new file mode 100644 index 0000000..b49a1ea --- /dev/null +++ b/ruty/mails/SQL/mssql.initial.sql @@ -0,0 +1,491 @@ +CREATE TABLE [dbo].[cache] ( + [user_id] [int] NOT NULL , + [cache_key] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL , + [expires] [datetime] NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[cache_shared] ( + [cache_key] [varchar] (255) COLLATE Latin1_General_CS_AS NOT NULL , + [expires] [datetime] NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[cache_index] ( + [user_id] [int] NOT NULL , + [mailbox] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL , + [expires] [datetime] NULL , + [valid] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[cache_thread] ( + [user_id] [int] NOT NULL , + [mailbox] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL , + [expires] [datetime] NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[cache_messages] ( + [user_id] [int] NOT NULL , + [mailbox] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL , + [uid] [int] NOT NULL , + [expires] [datetime] NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL , + [flags] [int] NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[collected_addresses] ( + [address_id] [int] IDENTITY (1, 1) NOT NULL , + [user_id] [int] NOT NULL , + [changed] [datetime] NOT NULL , + [name] [varchar] (255) COLLATE Latin1_General_CI_AI NOT NULL , + [email] [varchar] (255) COLLATE Latin1_General_CI_AI NOT NULL , + [type] [int] NOT NULL +) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[contacts] ( + [contact_id] [int] IDENTITY (1, 1) NOT NULL , + [user_id] [int] NOT NULL , + [changed] [datetime] NOT NULL , + [del] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL , + [name] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [email] [varchar] (8000) COLLATE Latin1_General_CI_AI NOT NULL , + [firstname] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [surname] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [vcard] [text] COLLATE Latin1_General_CI_AI NULL , + [words] [text] COLLATE Latin1_General_CI_AI NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[contactgroups] ( + [contactgroup_id] [int] IDENTITY (1, 1) NOT NULL , + [user_id] [int] NOT NULL , + [changed] [datetime] NOT NULL , + [del] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL , + [name] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[contactgroupmembers] ( + [contactgroup_id] [int] NOT NULL , + [contact_id] [int] NOT NULL , + [created] [datetime] NOT NULL +) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[identities] ( + [identity_id] [int] IDENTITY (1, 1) NOT NULL , + [user_id] [int] NOT NULL , + [changed] [datetime] NOT NULL , + [del] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL , + [standard] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL , + [name] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [organization] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [email] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [reply-to] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [bcc] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [signature] [text] COLLATE Latin1_General_CI_AI NULL, + [html_signature] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[responses] ( + [response_id] [int] IDENTITY (1, 1) NOT NULL , + [user_id] [int] NOT NULL , + [changed] [datetime] NOT NULL , + [del] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL , + [name] [varchar] (255) COLLATE Latin1_General_CI_AI NOT NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL, + [is_html] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[session] ( + [sess_id] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [changed] [datetime] NULL , + [ip] [varchar] (40) COLLATE Latin1_General_CI_AI NOT NULL , + [vars] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[users] ( + [user_id] [int] IDENTITY (1, 1) NOT NULL , + [username] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL , + [mail_host] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [created] [datetime] NOT NULL , + [last_login] [datetime] NULL , + [failed_login] [datetime] NULL , + [failed_login_counter] [int] NULL , + [language] [varchar] (16) COLLATE Latin1_General_CI_AI NULL , + [preferences] [text] COLLATE Latin1_General_CI_AI NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[dictionary] ( + [user_id] [int] , + [language] [varchar] (16) COLLATE Latin1_General_CI_AI NOT NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[searches] ( + [search_id] [int] IDENTITY (1, 1) NOT NULL , + [user_id] [int] NOT NULL , + [type] [tinyint] NOT NULL , + [name] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[filestore] ( + [file_id] [int] IDENTITY (1, 1) NOT NULL , + [user_id] [int] NOT NULL , + [context] [varchar] (32) COLLATE Latin1_General_CI_AI NOT NULL , + [filename] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [mtime] [int] NOT NULL , + [data] [text] COLLATE Latin1_General_CI_AI NULL , +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[system] ( + [name] [varchar] (64) COLLATE Latin1_General_CI_AI NOT NULL , + [value] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [dbo].[cache] WITH NOCHECK ADD + PRIMARY KEY CLUSTERED + ( + [user_id],[cache_key] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[cache_shared] WITH NOCHECK ADD + PRIMARY KEY CLUSTERED + ( + [cache_key] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[cache_index] WITH NOCHECK ADD + PRIMARY KEY CLUSTERED + ( + [user_id],[mailbox] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[cache_thread] WITH NOCHECK ADD + PRIMARY KEY CLUSTERED + ( + [user_id],[mailbox] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[cache_messages] WITH NOCHECK ADD + PRIMARY KEY CLUSTERED + ( + [user_id],[mailbox],[uid] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[collected_addresses] WITH NOCHECK ADD + CONSTRAINT [PK_collected_addresses_address_id] PRIMARY KEY CLUSTERED + ( + [address_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[contacts] WITH NOCHECK ADD + CONSTRAINT [PK_contacts_contact_id] PRIMARY KEY CLUSTERED + ( + [contact_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[contactgroups] WITH NOCHECK ADD + CONSTRAINT [PK_contactgroups_contactgroup_id] PRIMARY KEY CLUSTERED + ( + [contactgroup_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[contactgroupmembers] WITH NOCHECK ADD + CONSTRAINT [PK_contactgroupmembers_id] PRIMARY KEY CLUSTERED + ( + [contactgroup_id], [contact_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[identities] WITH NOCHECK ADD + PRIMARY KEY CLUSTERED + ( + [identity_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[responses] WITH NOCHECK ADD + PRIMARY KEY CLUSTERED + ( + [response_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[session] WITH NOCHECK ADD + CONSTRAINT [PK_session_sess_id] PRIMARY KEY CLUSTERED + ( + [sess_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[users] WITH NOCHECK ADD + CONSTRAINT [PK_users_user_id] PRIMARY KEY CLUSTERED + ( + [user_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[searches] WITH NOCHECK ADD + CONSTRAINT [PK_searches_search_id] PRIMARY KEY CLUSTERED + ( + [search_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[filestore] WITH NOCHECK ADD + CONSTRAINT [PK_filestore_file_id] PRIMARY KEY CLUSTERED + ( + [file_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[system] WITH NOCHECK ADD + CONSTRAINT [PK_system_name] PRIMARY KEY CLUSTERED + ( + [name] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[cache] ADD + CONSTRAINT [DF_cache_user_id] DEFAULT ('0') FOR [user_id], + CONSTRAINT [DF_cache_cache_key] DEFAULT ('') FOR [cache_key] +GO + +ALTER TABLE [dbo].[cache_index] ADD + CONSTRAINT [DF_cache_index_valid] DEFAULT ('0') FOR [valid] +GO + +ALTER TABLE [dbo].[cache_messages] ADD + CONSTRAINT [DF_cache_messages_flags] DEFAULT (0) FOR [flags] +GO + +CREATE INDEX [IX_cache_shared_cache_key] ON [dbo].[cache_shared]([cache_key]) ON [PRIMARY] +GO + +CREATE INDEX [IX_cache_index_user_id] ON [dbo].[cache_index]([user_id]) ON [PRIMARY] +GO + +CREATE INDEX [IX_cache_thread_user_id] ON [dbo].[cache_thread]([user_id]) ON [PRIMARY] +GO + +CREATE INDEX [IX_cache_messages_user_id] ON [dbo].[cache_messages]([user_id]) ON [PRIMARY] +GO + +CREATE INDEX [IX_cache_expires] ON [dbo].[cache]([expires]) ON [PRIMARY] +GO + +CREATE INDEX [IX_cache_shared_expires] ON [dbo].[cache_shared]([expires]) ON [PRIMARY] +GO + +CREATE INDEX [IX_cache_index_expires] ON [dbo].[cache_index]([expires]) ON [PRIMARY] +GO + +CREATE INDEX [IX_cache_thread_expires] ON [dbo].[cache_thread]([expires]) ON [PRIMARY] +GO + +CREATE INDEX [IX_cache_messages_expires] ON [dbo].[cache_messages]([expires]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[collected_addresses] ADD + CONSTRAINT [DF_collected_addresses_user_id] DEFAULT (0) FOR [user_id], + CONSTRAINT [DF_collected_addresses_changed] DEFAULT (getdate()) FOR [changed], + CONSTRAINT [DF_collected_addresses_name] DEFAULT ('') FOR [name] +GO + +CREATE UNIQUE INDEX [IX_collected_addresses_user_id] ON [dbo].[collected_addresses]([user_id],[type],[email]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[contacts] ADD + CONSTRAINT [DF_contacts_user_id] DEFAULT (0) FOR [user_id], + CONSTRAINT [DF_contacts_changed] DEFAULT (getdate()) FOR [changed], + CONSTRAINT [DF_contacts_del] DEFAULT ('0') FOR [del], + CONSTRAINT [DF_contacts_name] DEFAULT ('') FOR [name], + CONSTRAINT [DF_contacts_email] DEFAULT ('') FOR [email], + CONSTRAINT [DF_contacts_firstname] DEFAULT ('') FOR [firstname], + CONSTRAINT [DF_contacts_surname] DEFAULT ('') FOR [surname], + CONSTRAINT [CK_contacts_del] CHECK ([del] = '1' or [del] = '0') +GO + +CREATE INDEX [IX_contacts_user_id] ON [dbo].[contacts]([user_id]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[contactgroups] ADD + CONSTRAINT [DF_contactgroups_user_id] DEFAULT (0) FOR [user_id], + CONSTRAINT [DF_contactgroups_changed] DEFAULT (getdate()) FOR [changed], + CONSTRAINT [DF_contactgroups_del] DEFAULT ('0') FOR [del], + CONSTRAINT [DF_contactgroups_name] DEFAULT ('') FOR [name], + CONSTRAINT [CK_contactgroups_del] CHECK ([del] = '1' or [del] = '0') +GO + +CREATE INDEX [IX_contactgroups_user_id] ON [dbo].[contactgroups]([user_id]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[contactgroupmembers] ADD + CONSTRAINT [DF_contactgroupmembers_contactgroup_id] DEFAULT (0) FOR [contactgroup_id], + CONSTRAINT [DF_contactgroupmembers_contact_id] DEFAULT (0) FOR [contact_id], + CONSTRAINT [DF_contactgroupmembers_created] DEFAULT (getdate()) FOR [created] +GO + +CREATE INDEX [IX_contactgroupmembers_contact_id] ON [dbo].[contactgroupmembers]([contact_id]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[identities] ADD + CONSTRAINT [DF_identities_user] DEFAULT ('0') FOR [user_id], + CONSTRAINT [DF_identities_del] DEFAULT ('0') FOR [del], + CONSTRAINT [DF_identities_standard] DEFAULT ('0') FOR [standard], + CONSTRAINT [DF_identities_name] DEFAULT ('') FOR [name], + CONSTRAINT [DF_identities_organization] DEFAULT ('') FOR [organization], + CONSTRAINT [DF_identities_email] DEFAULT ('') FOR [email], + CONSTRAINT [DF_identities_reply] DEFAULT ('') FOR [reply-to], + CONSTRAINT [DF_identities_bcc] DEFAULT ('') FOR [bcc], + CONSTRAINT [DF_identities_html_signature] DEFAULT ('0') FOR [html_signature], + CHECK ([standard] = '1' or [standard] = '0'), + CHECK ([del] = '1' or [del] = '0') +GO + +CREATE INDEX [IX_identities_user_id] ON [dbo].[identities]([user_id]) ON [PRIMARY] +GO +CREATE INDEX [IX_identities_email] ON [dbo].[identities]([email],[del]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[responses] ADD + CONSTRAINT [DF_responses_user] DEFAULT ('0') FOR [user_id], + CONSTRAINT [DF_responses_del] DEFAULT ('0') FOR [del], + CONSTRAINT [DF_responses_is_html] DEFAULT ('0') FOR [is_html], + CHECK ([del] = '1' or [del] = '0'), + CHECK ([is_html] = '1' or [is_html] = '0') +GO + +CREATE INDEX [IX_responses_user_id] ON [dbo].[responses]([user_id]) ON [PRIMARY] +GO +ALTER TABLE [dbo].[session] ADD + CONSTRAINT [DF_session_sess_id] DEFAULT ('') FOR [sess_id], + CONSTRAINT [DF_session_ip] DEFAULT ('') FOR [ip] +GO + +CREATE INDEX [IX_session_changed] ON [dbo].[session]([changed]) ON [PRIMARY] +GO + +CREATE INDEX [IX_filestore_user_id] ON [dbo].[filestore]([user_id]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[users] ADD + CONSTRAINT [DF_users_username] DEFAULT ('') FOR [username], + CONSTRAINT [DF_users_mail_host] DEFAULT ('') FOR [mail_host], + CONSTRAINT [DF_users_created] DEFAULT (getdate()) FOR [created] +GO + +CREATE UNIQUE INDEX [IX_users_username] ON [dbo].[users]([username],[mail_host]) ON [PRIMARY] +GO + +CREATE UNIQUE INDEX [IX_dictionary_user_language] ON [dbo].[dictionary]([user_id],[language]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[searches] ADD + CONSTRAINT [DF_searches_user] DEFAULT (0) FOR [user_id], + CONSTRAINT [DF_searches_type] DEFAULT (0) FOR [type] +GO + +CREATE UNIQUE INDEX [IX_searches_user_type_name] ON [dbo].[searches]([user_id],[type],[name]) ON [PRIMARY] +GO + +CREATE UNIQUE INDEX [IX_filestore_user_id_context_filename] ON [dbo].[filestore]([user_id],[context],[filename]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[identities] ADD CONSTRAINT [FK_identities_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[responses] ADD CONSTRAINT [FK_responses_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[collected_addresses] ADD CONSTRAINT [FK_collected_addresses_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[contacts] ADD CONSTRAINT [FK_contacts_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[contactgroups] ADD CONSTRAINT [FK_contactgroups_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[cache] ADD CONSTRAINT [FK_cache_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[cache_index] ADD CONSTRAINT [FK_cache_index_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[cache_thread] ADD CONSTRAINT [FK_cache_thread_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[cache_messages] ADD CONSTRAINT [FK_cache_messages_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[contactgroupmembers] ADD CONSTRAINT [FK_contactgroupmembers_contactgroup_id] + FOREIGN KEY ([contactgroup_id]) REFERENCES [dbo].[contactgroups] ([contactgroup_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[searches] ADD CONSTRAINT [FK_searches_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[filestore] ADD CONSTRAINT [FK_filestore_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +-- Use trigger instead of foreign key (#1487112) +-- "Introducing FOREIGN KEY constraint ... may cause cycles or multiple cascade paths." +CREATE TRIGGER [contact_delete_member] ON [dbo].[contacts] + AFTER DELETE AS + DELETE FROM [dbo].[contactgroupmembers] + WHERE [contact_id] IN (SELECT [contact_id] FROM deleted) +GO + +INSERT INTO [dbo].[system] ([name], [value]) VALUES ('roundcube-version', '2022081200') +GO + \ No newline at end of file diff --git a/ruty/mails/SQL/mssql/2009103100.sql b/ruty/mails/SQL/mssql/2009103100.sql new file mode 100644 index 0000000..356f6c0 --- /dev/null +++ b/ruty/mails/SQL/mssql/2009103100.sql @@ -0,0 +1,87 @@ +-- Updates from version 0.3.1 + +ALTER TABLE [dbo].[messages] ADD CONSTRAINT [FK_messages_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[cache] ADD CONSTRAINT [FK_cache_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[contacts] ADD CONSTRAINT [FK_contacts_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[identities] ADD CONSTRAINT [FK_identities_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[identities] ADD [changed] [datetime] NULL +GO + +CREATE TABLE [dbo].[contactgroups] ( + [contactgroup_id] [int] IDENTITY (1, 1) NOT NULL , + [user_id] [int] NOT NULL , + [changed] [datetime] NOT NULL , + [del] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL , + [name] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[contactgroupmembers] ( + [contactgroup_id] [int] NOT NULL , + [contact_id] [int] NOT NULL , + [created] [datetime] NOT NULL +) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[contactgroups] WITH NOCHECK ADD + CONSTRAINT [PK_contactgroups_contactgroup_id] PRIMARY KEY CLUSTERED + ( + [contactgroup_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[contactgroupmembers] WITH NOCHECK ADD + CONSTRAINT [PK_contactgroupmembers_id] PRIMARY KEY CLUSTERED + ( + [contactgroup_id], [contact_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[contactgroups] ADD + CONSTRAINT [DF_contactgroups_user_id] DEFAULT (0) FOR [user_id], + CONSTRAINT [DF_contactgroups_changed] DEFAULT (getdate()) FOR [changed], + CONSTRAINT [DF_contactgroups_del] DEFAULT ('0') FOR [del], + CONSTRAINT [DF_contactgroups_name] DEFAULT ('') FOR [name], + CONSTRAINT [CK_contactgroups_del] CHECK ([del] = '1' or [del] = '0') +GO + +CREATE INDEX [IX_contactgroups_user_id] ON [dbo].[contacts]([user_id]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[contactgroupmembers] ADD + CONSTRAINT [DF_contactgroupmembers_contactgroup_id] DEFAULT (0) FOR [contactgroup_id], + CONSTRAINT [DF_contactgroupmembers_contact_id] DEFAULT (0) FOR [contact_id], + CONSTRAINT [DF_contactgroupmembers_created] DEFAULT (getdate()) FOR [created] +GO + +ALTER TABLE [dbo].[contactgroupmembers] ADD CONSTRAINT [FK_contactgroupmembers_contactgroup_id] + FOREIGN KEY ([contactgroup_id]) REFERENCES [dbo].[contactgroups] ([contactgroup_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +CREATE TRIGGER [contact_delete_member] ON [dbo].[contacts] + AFTER DELETE AS + DELETE FROM [dbo].[contactgroupmembers] + WHERE [contact_id] IN (SELECT [contact_id] FROM deleted) +GO + +ALTER TABLE [dbo].[contactgroups] ADD CONSTRAINT [FK_contactgroups_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO diff --git a/ruty/mails/SQL/mssql/2010100600.sql b/ruty/mails/SQL/mssql/2010100600.sql new file mode 100644 index 0000000..fb045e3 --- /dev/null +++ b/ruty/mails/SQL/mssql/2010100600.sql @@ -0,0 +1,9 @@ +-- Updates from version 0.4.2 + +DROP INDEX [IX_users_username] +GO +CREATE UNIQUE INDEX [IX_users_username] ON [dbo].[users]([username],[mail_host]) ON [PRIMARY] +GO +ALTER TABLE [dbo].[contacts] ALTER COLUMN [email] [varchar] (255) COLLATE Latin1_General_CI_AI NOT NULL +GO + \ No newline at end of file diff --git a/ruty/mails/SQL/mssql/2011011200.sql b/ruty/mails/SQL/mssql/2011011200.sql new file mode 100644 index 0000000..b0c6966 --- /dev/null +++ b/ruty/mails/SQL/mssql/2011011200.sql @@ -0,0 +1,10 @@ +-- Updates from version 0.5.x + +ALTER TABLE [dbo].[contacts] ADD [words] [text] COLLATE Latin1_General_CI_AI NULL +GO +CREATE INDEX [IX_contactgroupmembers_contact_id] ON [dbo].[contactgroupmembers]([contact_id]) ON [PRIMARY] +GO +DELETE FROM [dbo].[messages] +GO +DELETE FROM [dbo].[cache] +GO diff --git a/ruty/mails/SQL/mssql/2011092800.sql b/ruty/mails/SQL/mssql/2011092800.sql new file mode 100644 index 0000000..8cc9ecb --- /dev/null +++ b/ruty/mails/SQL/mssql/2011092800.sql @@ -0,0 +1,127 @@ +-- Updates from version 0.6 + +CREATE TABLE [dbo].[dictionary] ( + [user_id] [int] , + [language] [varchar] (5) COLLATE Latin1_General_CI_AI NOT NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO +CREATE UNIQUE INDEX [IX_dictionary_user_language] ON [dbo].[dictionary]([user_id],[language]) ON [PRIMARY] +GO + +CREATE TABLE [dbo].[searches] ( + [search_id] [int] IDENTITY (1, 1) NOT NULL , + [user_id] [int] NOT NULL , + [type] [tinyint] NOT NULL , + [name] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [dbo].[searches] WITH NOCHECK ADD + CONSTRAINT [PK_searches_search_id] PRIMARY KEY CLUSTERED + ( + [search_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[searches] ADD + CONSTRAINT [DF_searches_user] DEFAULT (0) FOR [user_id], + CONSTRAINT [DF_searches_type] DEFAULT (0) FOR [type], +GO + +CREATE UNIQUE INDEX [IX_searches_user_type_name] ON [dbo].[searches]([user_id],[type],[name]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[searches] ADD CONSTRAINT [FK_searches_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +DROP TABLE [dbo].[messages] +GO +CREATE TABLE [dbo].[cache_index] ( + [user_id] [int] NOT NULL , + [mailbox] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [changed] [datetime] NOT NULL , + [valid] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[cache_thread] ( + [user_id] [int] NOT NULL , + [mailbox] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [changed] [datetime] NOT NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[cache_messages] ( + [user_id] [int] NOT NULL , + [mailbox] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [uid] [int] NOT NULL , + [changed] [datetime] NOT NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL , + [flags] [int] NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [dbo].[cache_index] WITH NOCHECK ADD + PRIMARY KEY CLUSTERED + ( + [user_id],[mailbox] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[cache_thread] WITH NOCHECK ADD + PRIMARY KEY CLUSTERED + ( + [user_id],[mailbox] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[cache_messages] WITH NOCHECK ADD + PRIMARY KEY CLUSTERED + ( + [user_id],[mailbox],[uid] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[cache_index] ADD + CONSTRAINT [DF_cache_index_changed] DEFAULT (getdate()) FOR [changed], + CONSTRAINT [DF_cache_index_valid] DEFAULT ('0') FOR [valid] +GO + +CREATE INDEX [IX_cache_index_user_id] ON [dbo].[cache_index]([user_id]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[cache_thread] ADD + CONSTRAINT [DF_cache_thread_changed] DEFAULT (getdate()) FOR [changed] +GO + +CREATE INDEX [IX_cache_thread_user_id] ON [dbo].[cache_thread]([user_id]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[cache_messages] ADD + CONSTRAINT [DF_cache_messages_changed] DEFAULT (getdate()) FOR [changed], + CONSTRAINT [DF_cache_messages_flags] DEFAULT (0) FOR [flags] +GO + +CREATE INDEX [IX_cache_messages_user_id] ON [dbo].[cache_messages]([user_id]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[cache_index] ADD CONSTRAINT [FK_cache_index_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[cache_thread] ADD CONSTRAINT [FK_cache_thread_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + +ALTER TABLE [dbo].[cache_messages] ADD CONSTRAINT [FK_cache_messages_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO diff --git a/ruty/mails/SQL/mssql/2011111600.sql b/ruty/mails/SQL/mssql/2011111600.sql new file mode 100644 index 0000000..2b73184 --- /dev/null +++ b/ruty/mails/SQL/mssql/2011111600.sql @@ -0,0 +1,4 @@ +-- Updates from version 0.7-beta + +ALTER TABLE [dbo].[session] ALTER COLUMN [sess_id] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL +GO diff --git a/ruty/mails/SQL/mssql/2011121400.sql b/ruty/mails/SQL/mssql/2011121400.sql new file mode 100644 index 0000000..fde63ea --- /dev/null +++ b/ruty/mails/SQL/mssql/2011121400.sql @@ -0,0 +1,9 @@ +-- Updates from version 0.7 + +ALTER TABLE [dbo].[contacts] DROP CONSTRAINT [DF_contacts_email] +GO +ALTER TABLE [dbo].[contacts] ALTER COLUMN [email] [text] COLLATE Latin1_General_CI_AI NOT NULL +GO +ALTER TABLE [dbo].[contacts] ADD CONSTRAINT [DF_contacts_email] DEFAULT ('') FOR [email] +GO + \ No newline at end of file diff --git a/ruty/mails/SQL/mssql/2012051800.sql b/ruty/mails/SQL/mssql/2012051800.sql new file mode 100644 index 0000000..8dcf7bf --- /dev/null +++ b/ruty/mails/SQL/mssql/2012051800.sql @@ -0,0 +1,18 @@ +-- Updates from version 0.8-rc + +ALTER TABLE [dbo].[contacts] DROP CONSTRAINT [DF_contacts_email] +GO +ALTER TABLE [dbo].[contacts] ALTER COLUMN [email] [varchar] (8000) COLLATE Latin1_General_CI_AI NOT NULL +GO +ALTER TABLE [dbo].[contacts] ADD CONSTRAINT [DF_contacts_email] DEFAULT ('') FOR [email] +GO + +-- Updates from version 0.8 + +ALTER TABLE [dbo].[cache] DROP COLUMN [cache_id] +GO +ALTER TABLE [dbo].[users] DROP COLUMN [alias] +GO +CREATE INDEX [IX_identities_email] ON [dbo].[identities]([email],[del]) ON [PRIMARY] +GO + \ No newline at end of file diff --git a/ruty/mails/SQL/mssql/2012080700.sql b/ruty/mails/SQL/mssql/2012080700.sql new file mode 100644 index 0000000..4db512c --- /dev/null +++ b/ruty/mails/SQL/mssql/2012080700.sql @@ -0,0 +1,8 @@ +-- Updates from version 0.8 + +ALTER TABLE [dbo].[cache] DROP COLUMN [cache_id] +GO +ALTER TABLE [dbo].[users] DROP COLUMN [alias] +GO +CREATE INDEX [IX_identities_email] ON [dbo].[identities]([email],[del]) ON [PRIMARY] +GO diff --git a/ruty/mails/SQL/mssql/2013011000.sql b/ruty/mails/SQL/mssql/2013011000.sql new file mode 100644 index 0000000..c4bcb86 --- /dev/null +++ b/ruty/mails/SQL/mssql/2013011000.sql @@ -0,0 +1,14 @@ +-- Upgrades from 0.9-beta + +CREATE TABLE [dbo].[system] ( + [name] [varchar] (64) COLLATE Latin1_General_CI_AI NOT NULL , + [value] [text] COLLATE Latin1_General_CI_AI +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [dbo].[system] WITH NOCHECK ADD + CONSTRAINT [PK_system_name] PRIMARY KEY CLUSTERED + ( + [name] + ) ON [PRIMARY] +GO diff --git a/ruty/mails/SQL/mssql/2013042700.sql b/ruty/mails/SQL/mssql/2013042700.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/mssql/2013042700.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/mssql/2013052500.sql b/ruty/mails/SQL/mssql/2013052500.sql new file mode 100644 index 0000000..1fddfed --- /dev/null +++ b/ruty/mails/SQL/mssql/2013052500.sql @@ -0,0 +1,17 @@ +CREATE TABLE [dbo].[cache_shared] ( + [cache_key] [varchar] (255) COLLATE Latin1_General_CI_AI NOT NULL , + [created] [datetime] NOT NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [dbo].[cache_shared] ADD + CONSTRAINT [DF_cache_shared_created] DEFAULT (getdate()) FOR [created] +GO + +CREATE INDEX [IX_cache_shared_cache_key] ON [dbo].[cache_shared]([cache_key]) ON [PRIMARY] +GO + +CREATE INDEX [IX_cache_shared_created] ON [dbo].[cache_shared]([created]) ON [PRIMARY] +GO + diff --git a/ruty/mails/SQL/mssql/2013061000.sql b/ruty/mails/SQL/mssql/2013061000.sql new file mode 100644 index 0000000..5e8b791 --- /dev/null +++ b/ruty/mails/SQL/mssql/2013061000.sql @@ -0,0 +1,44 @@ +ALTER TABLE [dbo].[cache] ADD [expires] [datetime] NULL +GO +ALTER TABLE [dbo].[cache_shared] ADD [expires] [datetime] NULL +GO +ALTER TABLE [dbo].[cache_index] ADD [expires] [datetime] NULL +GO +ALTER TABLE [dbo].[cache_thread] ADD [expires] [datetime] NULL +GO +ALTER TABLE [dbo].[cache_messages] ADD [expires] [datetime] NULL +GO + +UPDATE [dbo].[cache] SET [expires] = DATEADD(second, 604800, [created]) +GO +UPDATE [dbo].[cache_shared] SET [expires] = DATEADD(second, 604800, [created]) +GO +UPDATE [dbo].[cache_index] SET [expires] = DATEADD(second, 604800, [changed]) +GO +UPDATE [dbo].[cache_thread] SET [expires] = DATEADD(second, 604800, [changed]) +GO +UPDATE [dbo].[cache_messages] SET [expires] = DATEADD(second, 604800, [changed]) +GO + +DROP INDEX [IX_cache_created] +GO +DROP INDEX [IX_cache_shared_created] +GO +ALTER TABLE [dbo].[cache_index] DROP COLUMN [changed] +GO +ALTER TABLE [dbo].[cache_thread] DROP COLUMN [changed] +GO +ALTER TABLE [dbo].[cache_messages] DROP COLUMN [changed] +GO + +CREATE INDEX [IX_cache_expires] ON [dbo].[cache]([expires]) ON [PRIMARY] +GO +CREATE INDEX [IX_cache_shared_expires] ON [dbo].[cache_shared]([expires]) ON [PRIMARY] +GO +CREATE INDEX [IX_cache_index_expires] ON [dbo].[cache_index]([expires]) ON [PRIMARY] +GO +CREATE INDEX [IX_cache_thread_expires] ON [dbo].[cache_thread]([expires]) ON [PRIMARY] +GO +CREATE INDEX [IX_cache_messages_expires] ON [dbo].[cache_messages]([expires]) ON [PRIMARY] +GO + \ No newline at end of file diff --git a/ruty/mails/SQL/mssql/2014042900.sql b/ruty/mails/SQL/mssql/2014042900.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/mssql/2014042900.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/mssql/2015030800.sql b/ruty/mails/SQL/mssql/2015030800.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/mssql/2015030800.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/mssql/2015111100.sql b/ruty/mails/SQL/mssql/2015111100.sql new file mode 100644 index 0000000..9abff98 --- /dev/null +++ b/ruty/mails/SQL/mssql/2015111100.sql @@ -0,0 +1,4 @@ +ALTER TABLE [dbo].[users] ADD [failed_login] [datetime] NULL +GO +ALTER TABLE [dbo].[users] ADD [failed_login_counter] [int] NULL +GO diff --git a/ruty/mails/SQL/mssql/2016081200.sql b/ruty/mails/SQL/mssql/2016081200.sql new file mode 100644 index 0000000..a8ee99c --- /dev/null +++ b/ruty/mails/SQL/mssql/2016081200.sql @@ -0,0 +1,5 @@ +ALTER TABLE [dbo].[session] DROP CONSTRAINT [DF_session_created] +GO + +ALTER TABLE [dbo].[session] DROP COLUMN [created] +GO diff --git a/ruty/mails/SQL/mssql/2016100900.sql b/ruty/mails/SQL/mssql/2016100900.sql new file mode 100644 index 0000000..38b359a --- /dev/null +++ b/ruty/mails/SQL/mssql/2016100900.sql @@ -0,0 +1,2 @@ +ALTER TABLE [dbo].[session] ALTER COLUMN [ip] [varchar] (40) COLLATE Latin1_General_CI_AI NOT NULL +GO diff --git a/ruty/mails/SQL/mssql/2016112200.sql b/ruty/mails/SQL/mssql/2016112200.sql new file mode 100644 index 0000000..302a3ae --- /dev/null +++ b/ruty/mails/SQL/mssql/2016112200.sql @@ -0,0 +1,36 @@ +DROP TABLE [dbo].[cache] +GO +DROP TABLE [dbo].[cache_shared] +GO + +CREATE TABLE [dbo].[cache] ( + [user_id] [int] NOT NULL , + [cache_key] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [expires] [datetime] NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO +CREATE TABLE [dbo].[cache_shared] ( + [cache_key] [varchar] (255) COLLATE Latin1_General_CI_AI NOT NULL , + [expires] [datetime] NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO +ALTER TABLE [dbo].[cache] ADD + CONSTRAINT [DF_cache_user_id] DEFAULT ('0') FOR [user_id], + CONSTRAINT [DF_cache_cache_key] DEFAULT ('') FOR [cache_key] +GO +CREATE INDEX [IX_cache_expires] ON [dbo].[cache]([expires]) ON [PRIMARY] +GO +CREATE INDEX [IX_cache_shared_expires] ON [dbo].[cache_shared]([expires]) ON [PRIMARY] +GO +ALTER TABLE [dbo].[cache] WITH NOCHECK ADD + PRIMARY KEY CLUSTERED ( + [user_id],[cache_key] + ) ON [PRIMARY] +GO +ALTER TABLE [dbo].[cache_shared] WITH NOCHECK ADD + PRIMARY KEY CLUSTERED ( + [cache_key] + ) ON [PRIMARY] +GO diff --git a/ruty/mails/SQL/mssql/2018021600.sql b/ruty/mails/SQL/mssql/2018021600.sql new file mode 100644 index 0000000..176a712 --- /dev/null +++ b/ruty/mails/SQL/mssql/2018021600.sql @@ -0,0 +1,24 @@ +CREATE TABLE [dbo].[filestore] ( + [file_id] [int] IDENTITY (1, 1) NOT NULL , + [user_id] [int] NOT NULL , + [filename] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL , + [mtime] [int] NOT NULL , + [data] [text] COLLATE Latin1_General_CI_AI NULL , +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [dbo].[filestore] WITH NOCHECK ADD + CONSTRAINT [PK_filestore_file_id] PRIMARY KEY CLUSTERED + ( + [file_id] + ) ON [PRIMARY] +GO + +CREATE INDEX [IX_filestore_user_id] ON [dbo].[filestore]([user_id]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[filestore] ADD CONSTRAINT [FK_filestore_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + diff --git a/ruty/mails/SQL/mssql/2018122300.sql b/ruty/mails/SQL/mssql/2018122300.sql new file mode 100644 index 0000000..175b93f --- /dev/null +++ b/ruty/mails/SQL/mssql/2018122300.sql @@ -0,0 +1,9 @@ +ALTER TABLE [dbo].[filestore] ADD [context] varchar(32) COLLATE Latin1_General_CI_AI NOT NULL +GO + +UPDATE [dbo].[filestore] SET [context] = 'enigma' +GO + +CREATE UNIQUE INDEX [IX_filestore_user_id_context_filename] ON [dbo].[filestore]([user_id],[context],[filename]) ON [PRIMARY] +GO + diff --git a/ruty/mails/SQL/mssql/2019092900.sql b/ruty/mails/SQL/mssql/2019092900.sql new file mode 100644 index 0000000..3a14a5a --- /dev/null +++ b/ruty/mails/SQL/mssql/2019092900.sql @@ -0,0 +1,18 @@ +ALTER TABLE [dbo].[cache] ALTER COLUMN + [cache_key] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL +GO +ALTER TABLE [dbo].[cache_shared] ALTER COLUMN + [cache_key] [varchar] (255) COLLATE Latin1_General_CS_AS NOT NULL +GO +ALTER TABLE [dbo].[cache_index] ALTER COLUMN + [mailbox] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL +GO +ALTER TABLE [dbo].[cache_messages] ALTER COLUMN + [mailbox] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL +GO +ALTER TABLE [dbo].[cache_thread] ALTER COLUMN + [mailbox] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL +GO +ALTER TABLE [dbo].[users] ALTER COLUMN + [username] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL +GO diff --git a/ruty/mails/SQL/mssql/2020020100.sql b/ruty/mails/SQL/mssql/2020020100.sql new file mode 100644 index 0000000..355e5a5 --- /dev/null +++ b/ruty/mails/SQL/mssql/2020020100.sql @@ -0,0 +1,4 @@ +ALTER TABLE [dbo].[users] ALTER COLUMN [language] [varchar] (16) COLLATE Latin1_General_CI_AI NULL +GO +ALTER TABLE [dbo].[dictionary] ALTER COLUMN [language] [varchar] (16) COLLATE Latin1_General_CI_AI NOT NULL +GO diff --git a/ruty/mails/SQL/mssql/2020020101.sql b/ruty/mails/SQL/mssql/2020020101.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/mssql/2020020101.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/mssql/2020091000.sql b/ruty/mails/SQL/mssql/2020091000.sql new file mode 100644 index 0000000..2edb309 --- /dev/null +++ b/ruty/mails/SQL/mssql/2020091000.sql @@ -0,0 +1,31 @@ +CREATE TABLE [dbo].[collected_addresses] ( + [address_id] [int] IDENTITY (1, 1) NOT NULL , + [user_id] [int] NOT NULL , + [changed] [datetime] NOT NULL , + [name] [varchar] (255) COLLATE Latin1_General_CI_AI NOT NULL , + [email] [varchar] (255) COLLATE Latin1_General_CI_AI NOT NULL , + [type] [int] NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [dbo].[collected_addresses] WITH NOCHECK ADD + CONSTRAINT [PK_collected_addresses_address_id] PRIMARY KEY CLUSTERED + ( + [address_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[collected_addresses] ADD + CONSTRAINT [DF_collected_addresses_user_id] DEFAULT (0) FOR [user_id], + CONSTRAINT [DF_collected_addresses_changed] DEFAULT (getdate()) FOR [changed], + CONSTRAINT [DF_collected_addresses_name] DEFAULT ('') FOR [name], +GO + +CREATE UNIQUE INDEX [IX_collected_addresses_user_id] ON [dbo].[collected_addresses]([user_id],[type],[email]) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[collected_addresses] ADD CONSTRAINT [FK_collected_addresses_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + diff --git a/ruty/mails/SQL/mssql/2020122900.sql b/ruty/mails/SQL/mssql/2020122900.sql new file mode 100644 index 0000000..73cbb58 --- /dev/null +++ b/ruty/mails/SQL/mssql/2020122900.sql @@ -0,0 +1 @@ +--empty \ No newline at end of file diff --git a/ruty/mails/SQL/mssql/2021081000.sql b/ruty/mails/SQL/mssql/2021081000.sql new file mode 100644 index 0000000..011b155 --- /dev/null +++ b/ruty/mails/SQL/mssql/2021081000.sql @@ -0,0 +1,33 @@ +CREATE TABLE [dbo].[responses] ( + [response_id] [int] IDENTITY (1, 1) NOT NULL , + [user_id] [int] NOT NULL , + [changed] [datetime] NOT NULL , + [del] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL , + [name] [varchar] (255) COLLATE Latin1_General_CI_AI NOT NULL , + [data] [text] COLLATE Latin1_General_CI_AI NOT NULL, + [is_html] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [dbo].[responses] WITH NOCHECK ADD + PRIMARY KEY CLUSTERED + ( + [response_id] + ) ON [PRIMARY] +GO + +ALTER TABLE [dbo].[responses] ADD + CONSTRAINT [DF_responses_user] DEFAULT ('0') FOR [user_id], + CONSTRAINT [DF_responses_del] DEFAULT ('0') FOR [del], + CONSTRAINT [DF_responses_is_html] DEFAULT ('0') FOR [is_html], + CHECK ([del] = '1' or [del] = '0'), + CHECK ([is_html] = '1' or [is_html] = '0') +GO + +CREATE INDEX [IX_responses_user_id] ON [dbo].[responses]([user_id]) ON [PRIMARY] +GO +ALTER TABLE [dbo].[responses] ADD CONSTRAINT [FK_responses_user_id] + FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id]) + ON DELETE CASCADE ON UPDATE CASCADE +GO + diff --git a/ruty/mails/SQL/mssql/2021100300.sql b/ruty/mails/SQL/mssql/2021100300.sql new file mode 100644 index 0000000..49daeda --- /dev/null +++ b/ruty/mails/SQL/mssql/2021100300.sql @@ -0,0 +1 @@ +-- SQLite only \ No newline at end of file diff --git a/ruty/mails/SQL/mssql/2022081200.sql b/ruty/mails/SQL/mssql/2022081200.sql new file mode 100644 index 0000000..105e39e --- /dev/null +++ b/ruty/mails/SQL/mssql/2022081200.sql @@ -0,0 +1 @@ +-- SQLite/Postgres only \ No newline at end of file diff --git a/ruty/mails/SQL/mysql.initial.sql b/ruty/mails/SQL/mysql.initial.sql new file mode 100644 index 0000000..f829cb3 --- /dev/null +++ b/ruty/mails/SQL/mysql.initial.sql @@ -0,0 +1,263 @@ +-- Roundcube Webmail initial database structure + + +SET FOREIGN_KEY_CHECKS=0; + +-- Table structure for table `session` + +CREATE TABLE `session` ( + `sess_id` varchar(128) NOT NULL, + `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + `ip` varchar(40) NOT NULL, + `vars` mediumtext NOT NULL, + PRIMARY KEY(`sess_id`), + INDEX `changed_index` (`changed`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + + +-- Table structure for table `users` + +CREATE TABLE `users` ( + `user_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `username` varchar(128) BINARY NOT NULL, + `mail_host` varchar(128) NOT NULL, + `created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + `last_login` datetime, + `failed_login` datetime, + `failed_login_counter` int(10) UNSIGNED, + `language` varchar(16), + `preferences` longtext, + PRIMARY KEY(`user_id`), + UNIQUE `username` (`username`, `mail_host`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + + +-- Table structure for table `cache` + +CREATE TABLE `cache` ( + `user_id` int(10) UNSIGNED NOT NULL, + `cache_key` varchar(128) BINARY NOT NULL, + `expires` datetime, + `data` longtext NOT NULL, + PRIMARY KEY (`user_id`, `cache_key`), + CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `expires_index` (`expires`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + + +-- Table structure for table `cache_shared` + +CREATE TABLE `cache_shared` ( + `cache_key` varchar(255) BINARY NOT NULL, + `expires` datetime, + `data` longtext NOT NULL, + PRIMARY KEY (`cache_key`), + INDEX `expires_index` (`expires`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + + +-- Table structure for table `cache_index` + +CREATE TABLE `cache_index` ( + `user_id` int(10) UNSIGNED NOT NULL, + `mailbox` varchar(255) BINARY NOT NULL, + `expires` datetime, + `valid` tinyint(1) NOT NULL DEFAULT '0', + `data` longtext NOT NULL, + CONSTRAINT `user_id_fk_cache_index` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `expires_index` (`expires`), + PRIMARY KEY (`user_id`, `mailbox`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + + +-- Table structure for table `cache_thread` + +CREATE TABLE `cache_thread` ( + `user_id` int(10) UNSIGNED NOT NULL, + `mailbox` varchar(255) BINARY NOT NULL, + `expires` datetime, + `data` longtext NOT NULL, + CONSTRAINT `user_id_fk_cache_thread` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `expires_index` (`expires`), + PRIMARY KEY (`user_id`, `mailbox`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + + +-- Table structure for table `cache_messages` + +CREATE TABLE `cache_messages` ( + `user_id` int(10) UNSIGNED NOT NULL, + `mailbox` varchar(255) BINARY NOT NULL, + `uid` int(11) UNSIGNED NOT NULL DEFAULT '0', + `expires` datetime, + `data` longtext NOT NULL, + `flags` int(11) NOT NULL DEFAULT '0', + CONSTRAINT `user_id_fk_cache_messages` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `expires_index` (`expires`), + PRIMARY KEY (`user_id`, `mailbox`, `uid`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + + +-- Table structure for table `collected_addresses` + +CREATE TABLE `collected_addresses` ( + `address_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + `name` varchar(255) NOT NULL DEFAULT '', + `email` varchar(255) NOT NULL, + `user_id` int(10) UNSIGNED NOT NULL, + `type` int(10) UNSIGNED NOT NULL, + PRIMARY KEY(`address_id`), + CONSTRAINT `user_id_fk_collected_addresses` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + UNIQUE INDEX `user_email_collected_addresses_index` (`user_id`, `type`, `email`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + + +-- Table structure for table `contacts` + +CREATE TABLE `contacts` ( + `contact_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + `del` tinyint(1) NOT NULL DEFAULT '0', + `name` varchar(128) NOT NULL DEFAULT '', + `email` text NOT NULL, + `firstname` varchar(128) NOT NULL DEFAULT '', + `surname` varchar(128) NOT NULL DEFAULT '', + `vcard` longtext, + `words` text, + `user_id` int(10) UNSIGNED NOT NULL, + PRIMARY KEY(`contact_id`), + CONSTRAINT `user_id_fk_contacts` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `user_contacts_index` (`user_id`,`del`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + + +-- Table structure for table `contactgroups` + +CREATE TABLE `contactgroups` ( + `contactgroup_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `user_id` int(10) UNSIGNED NOT NULL, + `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + `del` tinyint(1) NOT NULL DEFAULT '0', + `name` varchar(128) NOT NULL DEFAULT '', + PRIMARY KEY(`contactgroup_id`), + CONSTRAINT `user_id_fk_contactgroups` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `contactgroups_user_index` (`user_id`,`del`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + + +-- Table structure for table `contactgroupmembers` + +CREATE TABLE `contactgroupmembers` ( + `contactgroup_id` int(10) UNSIGNED NOT NULL, + `contact_id` int(10) UNSIGNED NOT NULL, + `created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + PRIMARY KEY (`contactgroup_id`, `contact_id`), + CONSTRAINT `contactgroup_id_fk_contactgroups` FOREIGN KEY (`contactgroup_id`) + REFERENCES `contactgroups`(`contactgroup_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `contact_id_fk_contacts` FOREIGN KEY (`contact_id`) + REFERENCES `contacts`(`contact_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `contactgroupmembers_contact_index` (`contact_id`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB; + + +-- Table structure for table `identities` + +CREATE TABLE `identities` ( + `identity_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `user_id` int(10) UNSIGNED NOT NULL, + `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + `del` tinyint(1) NOT NULL DEFAULT '0', + `standard` tinyint(1) NOT NULL DEFAULT '0', + `name` varchar(128) NOT NULL, + `organization` varchar(128) NOT NULL DEFAULT '', + `email` varchar(128) NOT NULL, + `reply-to` varchar(128) NOT NULL DEFAULT '', + `bcc` varchar(128) NOT NULL DEFAULT '', + `signature` longtext, + `html_signature` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY(`identity_id`), + CONSTRAINT `user_id_fk_identities` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `user_identities_index` (`user_id`, `del`), + INDEX `email_identities_index` (`email`, `del`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + + +-- Table structure for table `responses` + +CREATE TABLE `responses` ( + `response_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `user_id` int(10) UNSIGNED NOT NULL, + `name` varchar(255) NOT NULL, + `data` longtext NOT NULL, + `is_html` tinyint(1) NOT NULL DEFAULT '0', + `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + `del` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`response_id`), + CONSTRAINT `user_id_fk_responses` FOREIGN KEY (`user_id`) + REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `user_responses_index` (`user_id`, `del`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + + +-- Table structure for table `dictionary` + +CREATE TABLE `dictionary` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, -- redundant, for compat. with Galera Cluster + `user_id` int(10) UNSIGNED, -- NULL here is for "shared dictionaries" + `language` varchar(16) NOT NULL, + `data` longtext NOT NULL, + CONSTRAINT `user_id_fk_dictionary` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + UNIQUE `uniqueness` (`user_id`, `language`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + + +-- Table structure for table `searches` + +CREATE TABLE `searches` ( + `search_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `user_id` int(10) UNSIGNED NOT NULL, + `type` int(3) NOT NULL DEFAULT '0', + `name` varchar(128) NOT NULL, + `data` text, + PRIMARY KEY(`search_id`), + CONSTRAINT `user_id_fk_searches` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + UNIQUE `uniqueness` (`user_id`, `type`, `name`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- Table structure for table `filestore` + +CREATE TABLE `filestore` ( + `file_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `user_id` int(10) UNSIGNED NOT NULL, + `context` varchar(32) NOT NULL, + `filename` varchar(128) NOT NULL, + `mtime` int(10) NOT NULL, + `data` longtext NOT NULL, + PRIMARY KEY (`file_id`), + CONSTRAINT `user_id_fk_filestore` FOREIGN KEY (`user_id`) + REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + UNIQUE `uniqueness` (`user_id`, `context`, `filename`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- Table structure for table `system` + +CREATE TABLE `system` ( + `name` varchar(64) NOT NULL, + `value` mediumtext, + PRIMARY KEY(`name`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +SET FOREIGN_KEY_CHECKS=1; + +INSERT INTO `system` (`name`, `value`) VALUES ('roundcube-version', '2022081200'); diff --git a/ruty/mails/SQL/mysql/2008030300.sql b/ruty/mails/SQL/mysql/2008030300.sql new file mode 100644 index 0000000..9a3d048 --- /dev/null +++ b/ruty/mails/SQL/mysql/2008030300.sql @@ -0,0 +1,16 @@ +-- Updates from version 0.1-stable + +TRUNCATE TABLE `messages`; + +ALTER TABLE `messages` + DROP INDEX `idx`, + DROP INDEX `uid`; + +ALTER TABLE `cache` + DROP INDEX `cache_key`, + DROP INDEX `session_id`, + ADD INDEX `user_cache_index` (`user_id`,`cache_key`); + +ALTER TABLE `users` + ADD INDEX `username_index` (`username`), + ADD INDEX `alias_index` (`alias`); diff --git a/ruty/mails/SQL/mysql/2008040500.sql b/ruty/mails/SQL/mysql/2008040500.sql new file mode 100644 index 0000000..f538f63 --- /dev/null +++ b/ruty/mails/SQL/mysql/2008040500.sql @@ -0,0 +1,9 @@ +-- Updates from version 0.1.1 + +ALTER TABLE `identities` + MODIFY `signature` text, + MODIFY `bcc` varchar(128) NOT NULL DEFAULT '', + MODIFY `reply-to` varchar(128) NOT NULL DEFAULT '', + MODIFY `organization` varchar(128) NOT NULL DEFAULT '', + MODIFY `name` varchar(128) NOT NULL, + MODIFY `email` varchar(128) NOT NULL; diff --git a/ruty/mails/SQL/mysql/2008060900.sql b/ruty/mails/SQL/mysql/2008060900.sql new file mode 100644 index 0000000..9f8de0a --- /dev/null +++ b/ruty/mails/SQL/mysql/2008060900.sql @@ -0,0 +1,4 @@ +-- Updates from version 0.2-alpha + +ALTER TABLE `messages` + ADD INDEX `created_index` (`created`); diff --git a/ruty/mails/SQL/mysql/2008092100.sql b/ruty/mails/SQL/mysql/2008092100.sql new file mode 100644 index 0000000..3989c75 --- /dev/null +++ b/ruty/mails/SQL/mysql/2008092100.sql @@ -0,0 +1,20 @@ +-- Updates from version 0.2-beta (InnoDB required) + +ALTER TABLE `cache` + DROP `session_id`; + +ALTER TABLE `session` + ADD INDEX `changed_index` (`changed`); + +ALTER TABLE `cache` + ADD INDEX `created_index` (`created`); + +ALTER TABLE `users` + CHANGE `language` `language` varchar(5); + +ALTER TABLE `cache` ENGINE=InnoDB; +ALTER TABLE `session` ENGINE=InnoDB; +ALTER TABLE `messages` ENGINE=InnoDB; +ALTER TABLE `users` ENGINE=InnoDB; +ALTER TABLE `contacts` ENGINE=InnoDB; +ALTER TABLE `identities` ENGINE=InnoDB; diff --git a/ruty/mails/SQL/mysql/2009090400.sql b/ruty/mails/SQL/mysql/2009090400.sql new file mode 100644 index 0000000..fd31bed --- /dev/null +++ b/ruty/mails/SQL/mysql/2009090400.sql @@ -0,0 +1,12 @@ +-- Updates from version 0.3-stable + +TRUNCATE `messages`; + +ALTER TABLE `messages` + ADD INDEX `index_index` (`user_id`, `cache_key`, `idx`); + +ALTER TABLE `session` + CHANGE `vars` `vars` MEDIUMTEXT NOT NULL; + +ALTER TABLE `contacts` + ADD INDEX `user_contacts_index` (`user_id`,`email`); diff --git a/ruty/mails/SQL/mysql/2009103100.sql b/ruty/mails/SQL/mysql/2009103100.sql new file mode 100644 index 0000000..aafbe23 --- /dev/null +++ b/ruty/mails/SQL/mysql/2009103100.sql @@ -0,0 +1,52 @@ +-- Updates from version 0.3.1 +-- WARNING: Make sure that all tables are using InnoDB engine!!! +-- If not, use: ALTER TABLE xxx ENGINE=InnoDB; + +/* MySQL bug workaround: http://bugs.mysql.com/bug.php?id=46293 */ +/*!40014 SET FOREIGN_KEY_CHECKS=0 */; + +ALTER TABLE `messages` DROP FOREIGN KEY `user_id_fk_messages`; +ALTER TABLE `cache` DROP FOREIGN KEY `user_id_fk_cache`; +ALTER TABLE `contacts` DROP FOREIGN KEY `user_id_fk_contacts`; +ALTER TABLE `identities` DROP FOREIGN KEY `user_id_fk_identities`; + +ALTER TABLE `messages` ADD CONSTRAINT `user_id_fk_messages` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `cache` ADD CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `contacts` ADD CONSTRAINT `user_id_fk_contacts` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `identities` ADD CONSTRAINT `user_id_fk_identities` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `contacts` ALTER `name` SET DEFAULT ''; +ALTER TABLE `contacts` ALTER `firstname` SET DEFAULT ''; +ALTER TABLE `contacts` ALTER `surname` SET DEFAULT ''; + +ALTER TABLE `identities` ADD INDEX `user_identities_index` (`user_id`, `del`); +ALTER TABLE `identities` ADD `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00' AFTER `user_id`; + +CREATE TABLE `contactgroups` ( + `contactgroup_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0', + `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + `del` tinyint(1) NOT NULL DEFAULT '0', + `name` varchar(128) NOT NULL DEFAULT '', + PRIMARY KEY(`contactgroup_id`), + CONSTRAINT `user_id_fk_contactgroups` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `contactgroups_user_index` (`user_id`,`del`) +) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; + +CREATE TABLE `contactgroupmembers` ( + `contactgroup_id` int(10) UNSIGNED NOT NULL, + `contact_id` int(10) UNSIGNED NOT NULL DEFAULT '0', + `created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + PRIMARY KEY (`contactgroup_id`, `contact_id`), + CONSTRAINT `contactgroup_id_fk_contactgroups` FOREIGN KEY (`contactgroup_id`) + REFERENCES `contactgroups`(`contactgroup_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `contact_id_fk_contacts` FOREIGN KEY (`contact_id`) + REFERENCES `contacts`(`contact_id`) ON DELETE CASCADE ON UPDATE CASCADE +) /*!40000 ENGINE=INNODB */; + +/*!40014 SET FOREIGN_KEY_CHECKS=1 */; diff --git a/ruty/mails/SQL/mysql/2010042300.sql b/ruty/mails/SQL/mysql/2010042300.sql new file mode 100644 index 0000000..8b90af4 --- /dev/null +++ b/ruty/mails/SQL/mysql/2010042300.sql @@ -0,0 +1,4 @@ +-- Updates from version 0.4-beta + +ALTER TABLE `users` CHANGE `last_login` `last_login` datetime DEFAULT NULL; +UPDATE `users` SET `last_login` = NULL WHERE `last_login` = '1000-01-01 00:00:00'; diff --git a/ruty/mails/SQL/mysql/2010100600.sql b/ruty/mails/SQL/mysql/2010100600.sql new file mode 100644 index 0000000..ca0fec8 --- /dev/null +++ b/ruty/mails/SQL/mysql/2010100600.sql @@ -0,0 +1,8 @@ +-- Updates from version 0.4.2 + +ALTER TABLE `users` DROP INDEX `username_index`; +ALTER TABLE `users` ADD UNIQUE `username` (`username`, `mail_host`); + +ALTER TABLE `contacts` MODIFY `email` varchar(255) NOT NULL; + +TRUNCATE TABLE `messages`; diff --git a/ruty/mails/SQL/mysql/2011011200.sql b/ruty/mails/SQL/mysql/2011011200.sql new file mode 100644 index 0000000..6597034 --- /dev/null +++ b/ruty/mails/SQL/mysql/2011011200.sql @@ -0,0 +1,8 @@ +-- Updates from version 0.5.x + +ALTER TABLE `contacts` ADD `words` TEXT NULL AFTER `vcard`; +ALTER TABLE `contacts` CHANGE `vcard` `vcard` LONGTEXT /*!40101 CHARACTER SET utf8 */ NULL DEFAULT NULL; +ALTER TABLE `contactgroupmembers` ADD INDEX `contactgroupmembers_contact_index` (`contact_id`); + +TRUNCATE TABLE `messages`; +TRUNCATE TABLE `cache`; diff --git a/ruty/mails/SQL/mysql/2011092800.sql b/ruty/mails/SQL/mysql/2011092800.sql new file mode 100644 index 0000000..6b7cbe1 --- /dev/null +++ b/ruty/mails/SQL/mysql/2011092800.sql @@ -0,0 +1,67 @@ +-- Updates from version 0.6 + +/*!40014 SET FOREIGN_KEY_CHECKS=0 */; + +ALTER TABLE `users` CHANGE `alias` `alias` varchar(128) BINARY NOT NULL; +ALTER TABLE `users` CHANGE `username` `username` varchar(128) BINARY NOT NULL; + +CREATE TABLE `dictionary` ( + `user_id` int(10) UNSIGNED DEFAULT NULL, + `language` varchar(5) NOT NULL, + `data` longtext NOT NULL, + CONSTRAINT `user_id_fk_dictionary` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + UNIQUE `uniqueness` (`user_id`, `language`) +) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; + +CREATE TABLE `searches` ( + `search_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0', + `type` int(3) NOT NULL DEFAULT '0', + `name` varchar(128) NOT NULL, + `data` text, + PRIMARY KEY(`search_id`), + CONSTRAINT `user_id_fk_searches` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + UNIQUE `uniqueness` (`user_id`, `type`, `name`) +) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; + +DROP TABLE `messages`; + +CREATE TABLE `cache_index` ( + `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0', + `mailbox` varchar(255) BINARY NOT NULL, + `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + `valid` tinyint(1) NOT NULL DEFAULT '0', + `data` longtext NOT NULL, + CONSTRAINT `user_id_fk_cache_index` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `changed_index` (`changed`), + PRIMARY KEY (`user_id`, `mailbox`) +) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; + +CREATE TABLE `cache_thread` ( + `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0', + `mailbox` varchar(255) BINARY NOT NULL, + `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + `data` longtext NOT NULL, + CONSTRAINT `user_id_fk_cache_thread` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `changed_index` (`changed`), + PRIMARY KEY (`user_id`, `mailbox`) +) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; + +CREATE TABLE `cache_messages` ( + `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0', + `mailbox` varchar(255) BINARY NOT NULL, + `uid` int(11) UNSIGNED NOT NULL DEFAULT '0', + `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + `data` longtext NOT NULL, + `flags` int(11) NOT NULL DEFAULT '0', + CONSTRAINT `user_id_fk_cache_messages` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `changed_index` (`changed`), + PRIMARY KEY (`user_id`, `mailbox`, `uid`) +) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; + +/*!40014 SET FOREIGN_KEY_CHECKS=1 */; diff --git a/ruty/mails/SQL/mysql/2011111600.sql b/ruty/mails/SQL/mysql/2011111600.sql new file mode 100644 index 0000000..6f53daa --- /dev/null +++ b/ruty/mails/SQL/mysql/2011111600.sql @@ -0,0 +1,3 @@ +-- Updates from version 0.7-beta + +ALTER TABLE `session` CHANGE `sess_id` `sess_id` varchar(128) NOT NULL; diff --git a/ruty/mails/SQL/mysql/2011121400.sql b/ruty/mails/SQL/mysql/2011121400.sql new file mode 100644 index 0000000..5aee806 --- /dev/null +++ b/ruty/mails/SQL/mysql/2011121400.sql @@ -0,0 +1,22 @@ +-- Updates from version 0.7 + +/*!40014 SET FOREIGN_KEY_CHECKS=0 */; + +ALTER TABLE `contacts` DROP FOREIGN KEY `user_id_fk_contacts`; +ALTER TABLE `contacts` DROP INDEX `user_contacts_index`; +ALTER TABLE `contacts` MODIFY `email` text NOT NULL; +ALTER TABLE `contacts` ADD INDEX `user_contacts_index` (`user_id`,`del`); +ALTER TABLE `contacts` ADD CONSTRAINT `user_id_fk_contacts` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `cache` ALTER `user_id` DROP DEFAULT; +ALTER TABLE `cache_index` ALTER `user_id` DROP DEFAULT; +ALTER TABLE `cache_thread` ALTER `user_id` DROP DEFAULT; +ALTER TABLE `cache_messages` ALTER `user_id` DROP DEFAULT; +ALTER TABLE `contacts` ALTER `user_id` DROP DEFAULT; +ALTER TABLE `contactgroups` ALTER `user_id` DROP DEFAULT; +ALTER TABLE `contactgroupmembers` ALTER `contact_id` DROP DEFAULT; +ALTER TABLE `identities` ALTER `user_id` DROP DEFAULT; +ALTER TABLE `searches` ALTER `user_id` DROP DEFAULT; + +/*!40014 SET FOREIGN_KEY_CHECKS=1 */; diff --git a/ruty/mails/SQL/mysql/2012080700.sql b/ruty/mails/SQL/mysql/2012080700.sql new file mode 100644 index 0000000..789b712 --- /dev/null +++ b/ruty/mails/SQL/mysql/2012080700.sql @@ -0,0 +1,5 @@ +-- Updates from version 0.8 + +ALTER TABLE `cache` DROP COLUMN `cache_id`; +ALTER TABLE `users` DROP COLUMN `alias`; +ALTER TABLE `identities` ADD INDEX `email_identities_index` (`email`, `del`); diff --git a/ruty/mails/SQL/mysql/2013011000.sql b/ruty/mails/SQL/mysql/2013011000.sql new file mode 100644 index 0000000..d1ea001 --- /dev/null +++ b/ruty/mails/SQL/mysql/2013011000.sql @@ -0,0 +1,7 @@ +-- Upgrade from 0.9-beta + +CREATE TABLE IF NOT EXISTS `system` ( + `name` varchar(64) NOT NULL, + `value` mediumtext, + PRIMARY KEY(`name`) +) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; diff --git a/ruty/mails/SQL/mysql/2013042700.sql b/ruty/mails/SQL/mysql/2013042700.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/mysql/2013042700.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/mysql/2013052500.sql b/ruty/mails/SQL/mysql/2013052500.sql new file mode 100644 index 0000000..b5f72b8 --- /dev/null +++ b/ruty/mails/SQL/mysql/2013052500.sql @@ -0,0 +1,7 @@ +CREATE TABLE `cache_shared` ( + `cache_key` varchar(255) /*!40101 CHARACTER SET ascii COLLATE ascii_general_ci */ NOT NULL, + `created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + `data` longtext NOT NULL, + INDEX `created_index` (`created`), + INDEX `cache_key_index` (`cache_key`) +) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; diff --git a/ruty/mails/SQL/mysql/2013061000.sql b/ruty/mails/SQL/mysql/2013061000.sql new file mode 100644 index 0000000..54041b3 --- /dev/null +++ b/ruty/mails/SQL/mysql/2013061000.sql @@ -0,0 +1,24 @@ +ALTER TABLE `cache` ADD `expires` datetime DEFAULT NULL; +ALTER TABLE `cache_shared` ADD `expires` datetime DEFAULT NULL; +ALTER TABLE `cache_index` ADD `expires` datetime DEFAULT NULL; +ALTER TABLE `cache_thread` ADD `expires` datetime DEFAULT NULL; +ALTER TABLE `cache_messages` ADD `expires` datetime DEFAULT NULL; + +-- initialize expires column with created/changed date + 7days +UPDATE `cache` SET `expires` = `created` + interval 604800 second; +UPDATE `cache_shared` SET `expires` = `created` + interval 604800 second; +UPDATE `cache_index` SET `expires` = `changed` + interval 604800 second; +UPDATE `cache_thread` SET `expires` = `changed` + interval 604800 second; +UPDATE `cache_messages` SET `expires` = `changed` + interval 604800 second; + +ALTER TABLE `cache` DROP INDEX `created_index`; +ALTER TABLE `cache_shared` DROP INDEX `created_index`; +ALTER TABLE `cache_index` DROP `changed`; +ALTER TABLE `cache_thread` DROP `changed`; +ALTER TABLE `cache_messages` DROP `changed`; + +ALTER TABLE `cache` ADD INDEX `expires_index` (`expires`); +ALTER TABLE `cache_shared` ADD INDEX `expires_index` (`expires`); +ALTER TABLE `cache_index` ADD INDEX `expires_index` (`expires`); +ALTER TABLE `cache_thread` ADD INDEX `expires_index` (`expires`); +ALTER TABLE `cache_messages` ADD INDEX `expires_index` (`expires`); diff --git a/ruty/mails/SQL/mysql/2014042900.sql b/ruty/mails/SQL/mysql/2014042900.sql new file mode 100644 index 0000000..9d93716 --- /dev/null +++ b/ruty/mails/SQL/mysql/2014042900.sql @@ -0,0 +1 @@ +ALTER TABLE `users` CHANGE `preferences` `preferences` longtext; diff --git a/ruty/mails/SQL/mysql/2015030800.sql b/ruty/mails/SQL/mysql/2015030800.sql new file mode 100644 index 0000000..5ff6f14 --- /dev/null +++ b/ruty/mails/SQL/mysql/2015030800.sql @@ -0,0 +1 @@ +ALTER TABLE `identities` CHANGE `signature` `signature` longtext; diff --git a/ruty/mails/SQL/mysql/2015111100.sql b/ruty/mails/SQL/mysql/2015111100.sql new file mode 100644 index 0000000..08ea8fc --- /dev/null +++ b/ruty/mails/SQL/mysql/2015111100.sql @@ -0,0 +1,3 @@ +ALTER TABLE `users` + ADD `failed_login` datetime DEFAULT NULL, + ADD `failed_login_counter` int(10) UNSIGNED DEFAULT NULL; diff --git a/ruty/mails/SQL/mysql/2016081200.sql b/ruty/mails/SQL/mysql/2016081200.sql new file mode 100644 index 0000000..aa09087 --- /dev/null +++ b/ruty/mails/SQL/mysql/2016081200.sql @@ -0,0 +1 @@ +ALTER TABLE `session` DROP COLUMN `created`; diff --git a/ruty/mails/SQL/mysql/2016100900.sql b/ruty/mails/SQL/mysql/2016100900.sql new file mode 100644 index 0000000..ea096e9 --- /dev/null +++ b/ruty/mails/SQL/mysql/2016100900.sql @@ -0,0 +1 @@ +ALTER TABLE `session` MODIFY `ip` varchar(40) NOT NULL; diff --git a/ruty/mails/SQL/mysql/2016112200.sql b/ruty/mails/SQL/mysql/2016112200.sql new file mode 100644 index 0000000..1bfc9ef --- /dev/null +++ b/ruty/mails/SQL/mysql/2016112200.sql @@ -0,0 +1,25 @@ +-- redundant column, for compat. with Galera Cluster +ALTER TABLE `dictionary` ADD COLUMN `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; + +DROP TABLE `cache`; +DROP TABLE `cache_shared`; + +CREATE TABLE `cache` ( + `user_id` int(10) UNSIGNED NOT NULL, + `cache_key` varchar(128) /*!40101 CHARACTER SET ascii COLLATE ascii_general_ci */ NOT NULL, + `expires` datetime DEFAULT NULL, + `data` longtext NOT NULL, + PRIMARY KEY (`user_id`, `cache_key`), + CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `expires_index` (`expires`) +) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; + + +CREATE TABLE `cache_shared` ( + `cache_key` varchar(255) /*!40101 CHARACTER SET ascii COLLATE ascii_general_ci */ NOT NULL, + `expires` datetime DEFAULT NULL, + `data` longtext NOT NULL, + PRIMARY KEY (`cache_key`), + INDEX `expires_index` (`expires`) +) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; diff --git a/ruty/mails/SQL/mysql/2018021600.sql b/ruty/mails/SQL/mysql/2018021600.sql new file mode 100644 index 0000000..ed72c0e --- /dev/null +++ b/ruty/mails/SQL/mysql/2018021600.sql @@ -0,0 +1,11 @@ +CREATE TABLE `filestore` ( + `file_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `user_id` int(10) UNSIGNED NOT NULL, + `filename` varchar(128) NOT NULL, + `mtime` int(10) NOT NULL, + `data` longtext NOT NULL, + PRIMARY KEY (`file_id`), + CONSTRAINT `user_id_fk_filestore` FOREIGN KEY (`user_id`) + REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + UNIQUE `uniqueness` (`user_id`, `filename`) +) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; diff --git a/ruty/mails/SQL/mysql/2018122300.sql b/ruty/mails/SQL/mysql/2018122300.sql new file mode 100644 index 0000000..26e90a1 --- /dev/null +++ b/ruty/mails/SQL/mysql/2018122300.sql @@ -0,0 +1,7 @@ +ALTER TABLE `filestore` ADD COLUMN `context` varchar(32) NOT NULL; +UPDATE `filestore` SET `context` = 'enigma'; +ALTER TABLE `filestore` DROP FOREIGN KEY `user_id_fk_filestore`; +ALTER TABLE `filestore` DROP INDEX `uniqueness`; +ALTER TABLE `filestore` ADD UNIQUE INDEX `uniqueness` (`user_id`, `context`, `filename`); +ALTER TABLE `filestore` ADD CONSTRAINT `user_id_fk_filestore` FOREIGN KEY (`user_id`) + REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/ruty/mails/SQL/mysql/2019092900.sql b/ruty/mails/SQL/mysql/2019092900.sql new file mode 100644 index 0000000..204b159 --- /dev/null +++ b/ruty/mails/SQL/mysql/2019092900.sql @@ -0,0 +1,2 @@ +ALTER TABLE `cache` CHANGE `cache_key` `cache_key` varchar(128) BINARY NOT NULL; +ALTER TABLE `cache_shared` CHANGE `cache_key` `cache_key` varchar(255) BINARY NOT NULL; diff --git a/ruty/mails/SQL/mysql/2020020100.sql b/ruty/mails/SQL/mysql/2020020100.sql new file mode 100644 index 0000000..51b2f77 --- /dev/null +++ b/ruty/mails/SQL/mysql/2020020100.sql @@ -0,0 +1,2 @@ +ALTER TABLE `users` MODIFY `language` varchar(16); +ALTER TABLE `dictionary` MODIFY `language` varchar(16) NOT NULL; diff --git a/ruty/mails/SQL/mysql/2020020101.sql b/ruty/mails/SQL/mysql/2020020101.sql new file mode 100644 index 0000000..0a0402b --- /dev/null +++ b/ruty/mails/SQL/mysql/2020020101.sql @@ -0,0 +1,70 @@ +-- Dropping foreign keys and changing table format is needed for some versions of MySQL (#7277) +ALTER TABLE `cache` DROP FOREIGN KEY `user_id_fk_cache`; +ALTER TABLE `cache_index` DROP FOREIGN KEY `user_id_fk_cache_index`; +ALTER TABLE `cache_thread` DROP FOREIGN KEY `user_id_fk_cache_thread`; +ALTER TABLE `cache_messages` DROP FOREIGN KEY `user_id_fk_cache_messages`; +ALTER TABLE `contactgroups` DROP FOREIGN KEY `user_id_fk_contactgroups`; +ALTER TABLE `contacts` DROP FOREIGN KEY `user_id_fk_contacts`; +ALTER TABLE `dictionary` DROP FOREIGN KEY `user_id_fk_dictionary`; +ALTER TABLE `filestore` DROP FOREIGN KEY `user_id_fk_filestore`; +ALTER TABLE `identities` DROP FOREIGN KEY `user_id_fk_identities`; +ALTER TABLE `searches` DROP FOREIGN KEY `user_id_fk_searches`; + +ALTER TABLE `session` ROW_FORMAT=DYNAMIC; +ALTER TABLE `users` ROW_FORMAT=DYNAMIC; +ALTER TABLE `cache` ROW_FORMAT=DYNAMIC; +ALTER TABLE `cache_shared` ROW_FORMAT=DYNAMIC; +ALTER TABLE `cache_index` ROW_FORMAT=DYNAMIC; +ALTER TABLE `cache_thread` ROW_FORMAT=DYNAMIC; +ALTER TABLE `cache_messages` ROW_FORMAT=DYNAMIC; +ALTER TABLE `contacts` ROW_FORMAT=DYNAMIC; +ALTER TABLE `contactgroups` ROW_FORMAT=DYNAMIC; +ALTER TABLE `contactgroupmembers` ROW_FORMAT=DYNAMIC; +ALTER TABLE `identities` ROW_FORMAT=DYNAMIC; +ALTER TABLE `dictionary` ROW_FORMAT=DYNAMIC; +ALTER TABLE `searches` ROW_FORMAT=DYNAMIC; +ALTER TABLE `filestore` ROW_FORMAT=DYNAMIC; +ALTER TABLE `system` ROW_FORMAT=DYNAMIC; + +ALTER TABLE `session` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `users` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `cache` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `cache_shared` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `cache_index` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `cache_thread` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `cache_messages` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `contacts` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `contactgroups` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `identities` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `dictionary` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `searches` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `filestore` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +ALTER TABLE `system` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +ALTER TABLE `users` CHANGE `username` `username` varchar(128) BINARY NOT NULL; +ALTER TABLE `cache` CHANGE `cache_key` `cache_key` varchar(128) BINARY NOT NULL; +ALTER TABLE `cache_shared` CHANGE `cache_key` `cache_key` varchar(255) BINARY NOT NULL; +ALTER TABLE `cache_index` CHANGE `mailbox` `mailbox` varchar(255) BINARY NOT NULL; +ALTER TABLE `cache_thread` CHANGE `mailbox` `mailbox` varchar(255) BINARY NOT NULL; +ALTER TABLE `cache_messages` CHANGE `mailbox` `mailbox` varchar(255) BINARY NOT NULL; + +ALTER TABLE `cache` + ADD CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `cache_index` + ADD CONSTRAINT `user_id_fk_cache_index` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `cache_thread` + ADD CONSTRAINT `user_id_fk_cache_thread` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `cache_messages` + ADD CONSTRAINT `user_id_fk_cache_messages` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `contactgroups` + ADD CONSTRAINT `user_id_fk_contactgroups` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `contacts` + ADD CONSTRAINT `user_id_fk_contacts` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `dictionary` + ADD CONSTRAINT `user_id_fk_dictionary` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `filestore` + ADD CONSTRAINT `user_id_fk_filestore` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `identities` + ADD CONSTRAINT `user_id_fk_identities` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `searches` + ADD CONSTRAINT `user_id_fk_searches` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/ruty/mails/SQL/mysql/2020091000.sql b/ruty/mails/SQL/mysql/2020091000.sql new file mode 100644 index 0000000..aa098e3 --- /dev/null +++ b/ruty/mails/SQL/mysql/2020091000.sql @@ -0,0 +1,12 @@ +CREATE TABLE `collected_addresses` ( + `address_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + `name` varchar(255) NOT NULL DEFAULT '', + `email` varchar(255) NOT NULL, + `user_id` int(10) UNSIGNED NOT NULL, + `type` int(10) UNSIGNED NOT NULL, + PRIMARY KEY(`address_id`), + CONSTRAINT `user_id_fk_collected_addresses` FOREIGN KEY (`user_id`) + REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + UNIQUE INDEX `user_email_collected_addresses_index` (`user_id`, `type`, `email`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/ruty/mails/SQL/mysql/2020122900.sql b/ruty/mails/SQL/mysql/2020122900.sql new file mode 100644 index 0000000..0711ed9 --- /dev/null +++ b/ruty/mails/SQL/mysql/2020122900.sql @@ -0,0 +1 @@ +-- empty diff --git a/ruty/mails/SQL/mysql/2021081000.sql b/ruty/mails/SQL/mysql/2021081000.sql new file mode 100644 index 0000000..19068d1 --- /dev/null +++ b/ruty/mails/SQL/mysql/2021081000.sql @@ -0,0 +1,13 @@ +CREATE TABLE `responses` ( + `response_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `user_id` int(10) UNSIGNED NOT NULL, + `name` varchar(255) NOT NULL, + `data` longtext NOT NULL, + `is_html` tinyint(1) NOT NULL DEFAULT '0', + `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00', + `del` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`response_id`), + CONSTRAINT `user_id_fk_responses` FOREIGN KEY (`user_id`) + REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE, + INDEX `user_responses_index` (`user_id`, `del`) +) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/ruty/mails/SQL/mysql/2021100300.sql b/ruty/mails/SQL/mysql/2021100300.sql new file mode 100644 index 0000000..49daeda --- /dev/null +++ b/ruty/mails/SQL/mysql/2021100300.sql @@ -0,0 +1 @@ +-- SQLite only \ No newline at end of file diff --git a/ruty/mails/SQL/mysql/2022081200.sql b/ruty/mails/SQL/mysql/2022081200.sql new file mode 100644 index 0000000..105e39e --- /dev/null +++ b/ruty/mails/SQL/mysql/2022081200.sql @@ -0,0 +1 @@ +-- SQLite/Postgres only \ No newline at end of file diff --git a/ruty/mails/SQL/oracle.initial.sql b/ruty/mails/SQL/oracle.initial.sql new file mode 100644 index 0000000..989681c --- /dev/null +++ b/ruty/mails/SQL/oracle.initial.sql @@ -0,0 +1,288 @@ +-- Roundcube Webmail initial database structure +-- This was tested with Oracle 11g + +CREATE TABLE "users" ( + "user_id" integer PRIMARY KEY, + "username" varchar(128) NOT NULL, + "mail_host" varchar(128) NOT NULL, + "created" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "last_login" timestamp with time zone DEFAULT NULL, + "failed_login" timestamp with time zone DEFAULT NULL, + "failed_login_counter" integer DEFAULT NULL, + "language" varchar(16), + "preferences" long DEFAULT NULL, + CONSTRAINT "users_username_key" UNIQUE ("username", "mail_host") +); + +CREATE SEQUENCE "users_seq" + START WITH 1 INCREMENT BY 1 NOMAXVALUE; + +CREATE TRIGGER "users_seq_trig" +BEFORE INSERT ON "users" FOR EACH ROW +BEGIN + :NEW."user_id" := "users_seq".nextval; +END; +/ + +CREATE TABLE "session" ( + "sess_id" varchar(128) NOT NULL PRIMARY KEY, + "changed" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "ip" varchar(41) NOT NULL, + "vars" long NOT NULL +); + +CREATE INDEX "session_changed_idx" ON "session" ("changed"); + + +CREATE TABLE "identities" ( + "identity_id" integer PRIMARY KEY, + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE, + "changed" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "del" smallint DEFAULT 0 NOT NULL, + "standard" smallint DEFAULT 0 NOT NULL, + "name" varchar(128) NOT NULL, + "organization" varchar(128), + "email" varchar(128) NOT NULL, + "reply-to" varchar(128), + "bcc" varchar(128), + "signature" long, + "html_signature" integer DEFAULT 0 NOT NULL +); + +CREATE INDEX "identities_user_id_idx" ON "identities" ("user_id", "del"); +CREATE INDEX "identities_email_idx" ON "identities" ("email", "del"); + +CREATE SEQUENCE "identities_seq" + START WITH 1 INCREMENT BY 1 NOMAXVALUE; + +CREATE TRIGGER "identities_seq_trig" +BEFORE INSERT ON "identities" FOR EACH ROW +BEGIN + :NEW."identity_id" := "identities_seq".nextval; +END; +/ + + +CREATE TABLE "responses" ( + "response_id" integer PRIMARY KEY, + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE, + "changed" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "del" smallint DEFAULT 0 NOT NULL, + "name" varchar(128) NOT NULL, + "data" long NOT NULL, + "is_html" smallint DEFAULT 0 NOT NULL +); + +CREATE INDEX "responses_user_id_idx" ON "responses" ("user_id", "del"); + +CREATE SEQUENCE "responses_seq" + START WITH 1 INCREMENT BY 1 NOMAXVALUE; + +CREATE TRIGGER "responses_seq_trig" +BEFORE INSERT ON "responses" FOR EACH ROW +BEGIN + :NEW."response_id" := "response_seq".nextval; +END; +/ + + +CREATE TABLE "collected_addresses" ( + "address_id" integer PRIMARY KEY, + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE, + "changed" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "name" varchar(255) DEFAULT NULL, + "email" varchar(255) DEFAULT NULL, + "type" integer NOT NULL +); + +CREATE UNIQUE INDEX "collected_addresses_user_id_idx" ON "collected_addresses" ("user_id", "type", "email"); + +CREATE SEQUENCE "collected_addresses_seq" + START WITH 1 INCREMENT BY 1 NOMAXVALUE; + +CREATE TRIGGER "collected_addresses_seq_trig" +BEFORE INSERT ON "collected_addresses" FOR EACH ROW +BEGIN + :NEW."address_id" := "collected_addresses_seq".nextval; +END; +/ + +CREATE TABLE "contacts" ( + "contact_id" integer PRIMARY KEY, + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE, + "changed" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "del" smallint DEFAULT 0 NOT NULL, + "name" varchar(128) DEFAULT NULL, + "email" varchar(4000) DEFAULT NULL, + "firstname" varchar(128) DEFAULT NULL, + "surname" varchar(128) DEFAULT NULL, + "vcard" long, + "words" varchar(4000) +); + +CREATE INDEX "contacts_user_id_idx" ON "contacts" ("user_id", "del"); + +CREATE SEQUENCE "contacts_seq" + START WITH 1 INCREMENT BY 1 NOMAXVALUE; + +CREATE TRIGGER "contacts_seq_trig" +BEFORE INSERT ON "contacts" FOR EACH ROW +BEGIN + :NEW."contact_id" := "contacts_seq".nextval; +END; +/ + +CREATE TABLE "contactgroups" ( + "contactgroup_id" integer PRIMARY KEY, + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE, + "changed" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "del" smallint DEFAULT 0 NOT NULL, + "name" varchar(128) NOT NULL +); + +CREATE INDEX "contactgroups_user_id_idx" ON "contactgroups" ("user_id", "del"); + +CREATE SEQUENCE "contactgroups_seq" + START WITH 1 INCREMENT BY 1 NOMAXVALUE; + +CREATE TRIGGER "contactgroups_seq_trig" +BEFORE INSERT ON "contactgroups" FOR EACH ROW +BEGIN + :NEW."contactgroup_id" := "contactgroups_seq".nextval; +END; +/ + +CREATE TABLE "contactgroupmembers" ( + "contactgroup_id" integer NOT NULL + REFERENCES "contactgroups" ("contactgroup_id") ON DELETE CASCADE, + "contact_id" integer NOT NULL + REFERENCES "contacts" ("contact_id") ON DELETE CASCADE, + "created" timestamp with time zone DEFAULT current_timestamp NOT NULL, + PRIMARY KEY ("contactgroup_id", "contact_id") +); + +CREATE INDEX "contactgroupmembers_idx" ON "contactgroupmembers" ("contact_id"); + + +CREATE TABLE "cache" ( + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE, + "cache_key" varchar(128) NOT NULL, + "expires" timestamp with time zone DEFAULT NULL, + "data" long NOT NULL, + PRIMARY KEY ("user_id", "cache_key") +); + +CREATE INDEX "cache_expires_idx" ON "cache" ("expires"); + + +CREATE TABLE "cache_shared" ( + "cache_key" varchar(255) NOT NULL, + "expires" timestamp with time zone DEFAULT NULL, + "data" long NOT NULL, + PRIMARY KEY ("cache_key") +); + +CREATE INDEX "cache_shared_expires_idx" ON "cache_shared" ("expires"); + + +CREATE TABLE "cache_index" ( + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE, + "mailbox" varchar(255) NOT NULL, + "expires" timestamp with time zone DEFAULT NULL, + "valid" smallint DEFAULT 0 NOT NULL, + "data" long NOT NULL, + PRIMARY KEY ("user_id", "mailbox") +); + +CREATE INDEX "cache_index_expires_idx" ON "cache_index" ("expires"); + + +CREATE TABLE "cache_thread" ( + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE, + "mailbox" varchar(255) NOT NULL, + "expires" timestamp with time zone DEFAULT NULL, + "data" long NOT NULL, + PRIMARY KEY ("user_id", "mailbox") +); + +CREATE INDEX "cache_thread_expires_idx" ON "cache_thread" ("expires"); + + +CREATE TABLE "cache_messages" ( + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE, + "mailbox" varchar(255) NOT NULL, + "uid" integer NOT NULL, + "expires" timestamp with time zone DEFAULT NULL, + "data" long NOT NULL, + "flags" integer DEFAULT 0 NOT NULL, + PRIMARY KEY ("user_id", "mailbox", "uid") +); + +CREATE INDEX "cache_messages_expires_idx" ON "cache_messages" ("expires"); + + +CREATE TABLE "dictionary" ( + "user_id" integer DEFAULT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE, + "language" varchar(16) NOT NULL, + "data" long DEFAULT NULL, + CONSTRAINT "dictionary_user_id_lang_key" UNIQUE ("user_id", "language") +); + + +CREATE TABLE "searches" ( + "search_id" integer PRIMARY KEY, + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE, + "type" smallint DEFAULT 0 NOT NULL, + "name" varchar(128) NOT NULL, + "data" long NOT NULL, + CONSTRAINT "searches_user_id_key" UNIQUE ("user_id", "type", "name") +); + +CREATE SEQUENCE "searches_seq" + START WITH 1 INCREMENT BY 1 NOMAXVALUE; + +CREATE TRIGGER "searches_seq_trig" +BEFORE INSERT ON "searches" FOR EACH ROW +BEGIN + :NEW."search_id" := "searches_seq".nextval; +END; +/ + +CREATE TABLE "filestore" ( + "file_id" integer PRIMARY KEY, + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE ON UPDATE CASCADE, + "context" varchar(32) NOT NULL, + "filename" varchar(128) NOT NULL, + "mtime" integer NOT NULL, + "data" long, + CONSTRAINT "filestore_user_id_key" UNIQUE ("user_id", "context", "filename") +); + +CREATE SEQUENCE "filestore_seq" + START WITH 1 INCREMENT BY 1 NOMAXVALUE; + +CREATE TRIGGER "filestore_seq_trig" +BEFORE INSERT ON "filestore" FOR EACH ROW +BEGIN + :NEW."user_id" := "filestore_seq".nextval; +END; +/ + +CREATE TABLE "system" ( + "name" varchar(64) NOT NULL PRIMARY KEY, + "value" long +); + +INSERT INTO "system" ("name", "value") VALUES ('roundcube-version', '2022081200'); diff --git a/ruty/mails/SQL/oracle/2015030800.sql b/ruty/mails/SQL/oracle/2015030800.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/oracle/2015030800.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/oracle/2015111100.sql b/ruty/mails/SQL/oracle/2015111100.sql new file mode 100644 index 0000000..010203f --- /dev/null +++ b/ruty/mails/SQL/oracle/2015111100.sql @@ -0,0 +1,2 @@ +ALTER TABLE "users" ADD "failed_login" timestamp with time zone DEFAULT NULL; +ALTER TABLE "users" ADD "failed_login_counter" integer DEFAULT NULL; diff --git a/ruty/mails/SQL/oracle/2016081200.sql b/ruty/mails/SQL/oracle/2016081200.sql new file mode 100644 index 0000000..aacfe41 --- /dev/null +++ b/ruty/mails/SQL/oracle/2016081200.sql @@ -0,0 +1 @@ +ALTER TABLE "session" DROP COLUMN "created"; diff --git a/ruty/mails/SQL/oracle/2016100900.sql b/ruty/mails/SQL/oracle/2016100900.sql new file mode 100644 index 0000000..030f169 --- /dev/null +++ b/ruty/mails/SQL/oracle/2016100900.sql @@ -0,0 +1 @@ +ALTER TABLE "session" MODIFY "ip" varchar(41) NOT NULL; diff --git a/ruty/mails/SQL/oracle/2016112200.sql b/ruty/mails/SQL/oracle/2016112200.sql new file mode 100644 index 0000000..3aab265 --- /dev/null +++ b/ruty/mails/SQL/oracle/2016112200.sql @@ -0,0 +1,23 @@ +DROP TABLE "cache"; +DROP TABLE "cache_shared"; + +CREATE TABLE "cache" ( + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE, + "cache_key" varchar(128) NOT NULL, + "expires" timestamp with time zone DEFAULT NULL, + "data" long NOT NULL, + PRIMARY KEY ("user_id", "cache_key") +); + +CREATE INDEX "cache_expires_idx" ON "cache" ("expires"); + + +CREATE TABLE "cache_shared" ( + "cache_key" varchar(255) NOT NULL, + "expires" timestamp with time zone DEFAULT NULL, + "data" long NOT NULL, + PRIMARY KEY ("cache_key") +); + +CREATE INDEX "cache_shared_expires_idx" ON "cache_shared" ("expires"); diff --git a/ruty/mails/SQL/oracle/2018021600.sql b/ruty/mails/SQL/oracle/2018021600.sql new file mode 100644 index 0000000..2fe3bcd --- /dev/null +++ b/ruty/mails/SQL/oracle/2018021600.sql @@ -0,0 +1,19 @@ +CREATE TABLE "filestore" ( + "file_id" integer PRIMARY KEY, + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE ON UPDATE CASCADE, + "filename" varchar(128) NOT NULL, + "mtime" integer NOT NULL, + "data" long, + CONSTRAINT "filestore_user_id_key" UNIQUE ("user_id", "filename") +); + +CREATE SEQUENCE "filestore_seq" + START WITH 1 INCREMENT BY 1 NOMAXVALUE; + +CREATE TRIGGER "filestore_seq_trig" +BEFORE INSERT ON "filestore" FOR EACH ROW +BEGIN + :NEW."user_id" := "filestore_seq".nextval; +END; +/ diff --git a/ruty/mails/SQL/oracle/2018122300.sql b/ruty/mails/SQL/oracle/2018122300.sql new file mode 100644 index 0000000..dd75dfc --- /dev/null +++ b/ruty/mails/SQL/oracle/2018122300.sql @@ -0,0 +1,4 @@ +ALTER TABLE "filestore" ADD COLUMN "context" varchar(32) NOT NULL; +UPDATE "filestore" SET "context" = 'enigma'; +ALTER TABLE "filestore" DROP CONSTRAINT "filestore_user_id_key"; +ALTER TABLE "filestore" ADD CONSTRAINT "filestore_user_id_key" UNIQUE ("user_id", "context", "filename"); diff --git a/ruty/mails/SQL/oracle/2019092900.sql b/ruty/mails/SQL/oracle/2019092900.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/oracle/2019092900.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/oracle/2020020100.sql b/ruty/mails/SQL/oracle/2020020100.sql new file mode 100644 index 0000000..2590179 --- /dev/null +++ b/ruty/mails/SQL/oracle/2020020100.sql @@ -0,0 +1,2 @@ +ALTER TABLE "users" MODIFY "language" varchar(16) NOT NULL; +ALTER TABLE "dictionary" MODIFY "language" varchar(16); diff --git a/ruty/mails/SQL/oracle/2020020101.sql b/ruty/mails/SQL/oracle/2020020101.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/oracle/2020020101.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/oracle/2020091000.sql b/ruty/mails/SQL/oracle/2020091000.sql new file mode 100644 index 0000000..0e598cd --- /dev/null +++ b/ruty/mails/SQL/oracle/2020091000.sql @@ -0,0 +1,21 @@ +CREATE TABLE "collected_addresses" ( + "address_id" integer PRIMARY KEY, + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE, + "changed" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "name" varchar(255) DEFAULT NULL, + "email" varchar(255) DEFAULT NULL, + "type" integer NOT NULL +); + +CREATE UNIQUE INDEX "collected_addresses_user_id_idx" ON "collected_addresses" ("user_id", "type", "email"); + +CREATE SEQUENCE "collected_addresses_seq" + START WITH 1 INCREMENT BY 1 NOMAXVALUE; + +CREATE TRIGGER "collected_addresses_seq_trig" +BEFORE INSERT ON "collected_addresses" FOR EACH ROW +BEGIN + :NEW."address_id" := "collected_addresses_seq".nextval; +END; +/ diff --git a/ruty/mails/SQL/oracle/2020122900.sql b/ruty/mails/SQL/oracle/2020122900.sql new file mode 100644 index 0000000..73cbb58 --- /dev/null +++ b/ruty/mails/SQL/oracle/2020122900.sql @@ -0,0 +1 @@ +--empty \ No newline at end of file diff --git a/ruty/mails/SQL/oracle/2021081000.sql b/ruty/mails/SQL/oracle/2021081000.sql new file mode 100644 index 0000000..fb99b5d --- /dev/null +++ b/ruty/mails/SQL/oracle/2021081000.sql @@ -0,0 +1,22 @@ +CREATE TABLE "responses" ( + "response_id" integer PRIMARY KEY, + "user_id" integer NOT NULL + REFERENCES "users" ("user_id") ON DELETE CASCADE, + "changed" timestamp with time zone DEFAULT current_timestamp NOT NULL, + "del" smallint DEFAULT 0 NOT NULL, + "name" varchar(128) NOT NULL, + "data" long NOT NULL, + "is_html" smallint DEFAULT 0 NOT NULL +); + +CREATE INDEX "responses_user_id_idx" ON "responses" ("user_id", "del"); + +CREATE SEQUENCE "responses_seq" + START WITH 1 INCREMENT BY 1 NOMAXVALUE; + +CREATE TRIGGER "responses_seq_trig" +BEFORE INSERT ON "responses" FOR EACH ROW +BEGIN + :NEW."response_id" := "response_seq".nextval; +END; +/ diff --git a/ruty/mails/SQL/oracle/2021100300.sql b/ruty/mails/SQL/oracle/2021100300.sql new file mode 100644 index 0000000..49daeda --- /dev/null +++ b/ruty/mails/SQL/oracle/2021100300.sql @@ -0,0 +1 @@ +-- SQLite only \ No newline at end of file diff --git a/ruty/mails/SQL/oracle/2022081200.sql b/ruty/mails/SQL/oracle/2022081200.sql new file mode 100644 index 0000000..105e39e --- /dev/null +++ b/ruty/mails/SQL/oracle/2022081200.sql @@ -0,0 +1 @@ +-- SQLite/Postgres only \ No newline at end of file diff --git a/ruty/mails/SQL/postgres.initial.sql b/ruty/mails/SQL/postgres.initial.sql new file mode 100644 index 0000000..209f006 --- /dev/null +++ b/ruty/mails/SQL/postgres.initial.sql @@ -0,0 +1,378 @@ +-- Roundcube Webmail initial database structure + +-- +-- Sequence "users_seq" +-- Name: users_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE users_seq + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + +-- +-- Table "users" +-- Name: users; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE users ( + user_id integer DEFAULT nextval('users_seq'::text) PRIMARY KEY, + username varchar(128) DEFAULT '' NOT NULL, + mail_host varchar(128) DEFAULT '' NOT NULL, + created timestamp with time zone DEFAULT now() NOT NULL, + last_login timestamp with time zone, + failed_login timestamp with time zone, + failed_login_counter integer, + "language" varchar(16), + preferences text, + CONSTRAINT users_username_key UNIQUE (username, mail_host) +); + + +-- +-- Table "session" +-- Name: session; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE "session" ( + sess_id varchar(128) DEFAULT '' PRIMARY KEY, + changed timestamp with time zone DEFAULT now() NOT NULL, + ip varchar(41) NOT NULL, + vars text NOT NULL +); + +CREATE INDEX session_changed_idx ON session (changed); + + +-- +-- Sequence "identities_seq" +-- Name: identities_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE identities_seq + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + +-- +-- Table "identities" +-- Name: identities; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE identities ( + identity_id integer DEFAULT nextval('identities_seq'::text) PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed timestamp with time zone DEFAULT now() NOT NULL, + del smallint DEFAULT 0 NOT NULL, + standard smallint DEFAULT 0 NOT NULL, + name varchar(128) NOT NULL, + organization varchar(128), + email varchar(128) NOT NULL, + "reply-to" varchar(128), + bcc varchar(128), + signature text, + html_signature smallint DEFAULT 0 NOT NULL +); + +CREATE INDEX identities_user_id_idx ON identities (user_id, del); +CREATE INDEX identities_email_idx ON identities (email, del); + + +-- +-- Sequence "responses_seq" +-- Name: responses_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE responses_seq + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + +-- +-- Table "responses" +-- Name: responses; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE responses ( + response_id integer DEFAULT nextval('responses_seq'::text) PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed timestamp with time zone DEFAULT now() NOT NULL, + del smallint DEFAULT 0 NOT NULL, + name varchar(255) NOT NULL, + data text NOT NULL, + is_html smallint DEFAULT 0 NOT NULL +); + +CREATE INDEX responses_user_id_idx ON responses (user_id, del); + + +-- +-- Sequence "collected_addresses_seq" +-- Name: collected_addresses_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE collected_addresses_seq + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + +-- +-- Table "collected_addresses" +-- Name: collected_addresses; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE collected_addresses ( + address_id integer DEFAULT nextval('collected_addresses_seq'::text) PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed timestamp with time zone DEFAULT now() NOT NULL, + name varchar(255) DEFAULT '' NOT NULL, + email varchar(255) NOT NULL, + "type" integer NOT NULL +); + +CREATE UNIQUE INDEX collected_addresses_user_id_idx ON collected_addresses (user_id, "type", email); + + +-- +-- Sequence "contacts_seq" +-- Name: contacts_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE contacts_seq + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + +-- +-- Table "contacts" +-- Name: contacts; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE contacts ( + contact_id integer DEFAULT nextval('contacts_seq'::text) PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed timestamp with time zone DEFAULT now() NOT NULL, + del smallint DEFAULT 0 NOT NULL, + name varchar(128) DEFAULT '' NOT NULL, + email text DEFAULT '' NOT NULL, + firstname varchar(128) DEFAULT '' NOT NULL, + surname varchar(128) DEFAULT '' NOT NULL, + vcard text, + words text +); + +CREATE INDEX contacts_user_id_idx ON contacts (user_id, del); + +-- +-- Sequence "contactgroups_seq" +-- Name: contactgroups_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE contactgroups_seq + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + +-- +-- Table "contactgroups" +-- Name: contactgroups; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE contactgroups ( + contactgroup_id integer DEFAULT nextval('contactgroups_seq'::text) PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed timestamp with time zone DEFAULT now() NOT NULL, + del smallint NOT NULL DEFAULT 0, + name varchar(128) NOT NULL DEFAULT '' +); + +CREATE INDEX contactgroups_user_id_idx ON contactgroups (user_id, del); + +-- +-- Table "contactgroupmembers" +-- Name: contactgroupmembers; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE contactgroupmembers ( + contactgroup_id integer NOT NULL + REFERENCES contactgroups(contactgroup_id) ON DELETE CASCADE ON UPDATE CASCADE, + contact_id integer NOT NULL + REFERENCES contacts(contact_id) ON DELETE CASCADE ON UPDATE CASCADE, + created timestamp with time zone DEFAULT now() NOT NULL, + PRIMARY KEY (contactgroup_id, contact_id) +); + +CREATE INDEX contactgroupmembers_contact_id_idx ON contactgroupmembers (contact_id); + +-- +-- Table "cache" +-- Name: cache; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE "cache" ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + cache_key varchar(128) DEFAULT '' NOT NULL, + expires timestamp with time zone, + data text NOT NULL, + PRIMARY KEY (user_id, cache_key) +); + +CREATE INDEX cache_expires_idx ON "cache" (expires); + +-- +-- Table "cache_shared" +-- Name: cache_shared; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE "cache_shared" ( + cache_key varchar(255) NOT NULL PRIMARY KEY, + expires timestamp with time zone, + data text NOT NULL +); + +CREATE INDEX cache_shared_expires_idx ON "cache_shared" (expires); + +-- +-- Table "cache_index" +-- Name: cache_index; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE cache_index ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + expires timestamp with time zone, + valid smallint NOT NULL DEFAULT 0, + data text NOT NULL, + PRIMARY KEY (user_id, mailbox) +); + +CREATE INDEX cache_index_expires_idx ON cache_index (expires); + +-- +-- Table "cache_thread" +-- Name: cache_thread; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE cache_thread ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + expires timestamp with time zone, + data text NOT NULL, + PRIMARY KEY (user_id, mailbox) +); + +CREATE INDEX cache_thread_expires_idx ON cache_thread (expires); + +-- +-- Table "cache_messages" +-- Name: cache_messages; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE cache_messages ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + uid integer NOT NULL, + expires timestamp with time zone, + data text NOT NULL, + flags integer NOT NULL DEFAULT 0, + PRIMARY KEY (user_id, mailbox, uid) +); + +CREATE INDEX cache_messages_expires_idx ON cache_messages (expires); + +-- +-- Table "dictionary" +-- Name: dictionary; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE dictionary ( + user_id integer + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + "language" varchar(16) NOT NULL, + data text NOT NULL, + CONSTRAINT dictionary_user_id_language_key UNIQUE (user_id, "language") +); + +-- +-- Sequence "searches_seq" +-- Name: searches_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE searches_seq + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + +-- +-- Table "searches" +-- Name: searches; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE searches ( + search_id integer DEFAULT nextval('searches_seq'::text) PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + "type" smallint DEFAULT 0 NOT NULL, + name varchar(128) NOT NULL, + data text NOT NULL, + CONSTRAINT searches_user_id_key UNIQUE (user_id, "type", name) +); + +-- +-- Sequence "filestore_seq" +-- Name: filestore_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE "filestore_seq" + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + +-- +-- Table "filestore" +-- Name: filestore; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE "filestore" ( + file_id integer DEFAULT nextval('filestore_seq'::text) PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + context varchar(32) NOT NULL, + filename varchar(128) NOT NULL, + mtime integer NOT NULL, + data text NOT NULL, + CONSTRAINT filestore_user_id_filename UNIQUE (user_id, context, filename) +); + +-- +-- Table "system" +-- Name: system; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE "system" ( + name varchar(64) NOT NULL PRIMARY KEY, + value text +); + +INSERT INTO "system" (name, value) VALUES ('roundcube-version', '2022081200'); diff --git a/ruty/mails/SQL/postgres/2008030300.sql b/ruty/mails/SQL/postgres/2008030300.sql new file mode 100644 index 0000000..67a8f15 --- /dev/null +++ b/ruty/mails/SQL/postgres/2008030300.sql @@ -0,0 +1,18 @@ +-- Updates from version 0.1-stable to 0.1.1 + +CREATE INDEX cache_user_id_idx ON cache (user_id, cache_key); +CREATE INDEX contacts_user_id_idx ON contacts (user_id); +CREATE INDEX identities_user_id_idx ON identities (user_id); + +CREATE INDEX users_username_id_idx ON users (username); +CREATE INDEX users_alias_id_idx ON users (alias); + +-- added ON DELETE/UPDATE actions +ALTER TABLE messages DROP CONSTRAINT messages_user_id_fkey; +ALTER TABLE messages ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE identities DROP CONSTRAINT identities_user_id_fkey; +ALTER TABLE identities ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE contacts DROP CONSTRAINT contacts_user_id_fkey; +ALTER TABLE contacts ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE cache DROP CONSTRAINT cache_user_id_fkey; +ALTER TABLE cache ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/ruty/mails/SQL/postgres/2008060900.sql b/ruty/mails/SQL/postgres/2008060900.sql new file mode 100644 index 0000000..7c60a44 --- /dev/null +++ b/ruty/mails/SQL/postgres/2008060900.sql @@ -0,0 +1,3 @@ +-- Updates from version 0.2-alpha + +CREATE INDEX messages_created_idx ON messages (created); diff --git a/ruty/mails/SQL/postgres/2008092100.sql b/ruty/mails/SQL/postgres/2008092100.sql new file mode 100644 index 0000000..6cd1929 --- /dev/null +++ b/ruty/mails/SQL/postgres/2008092100.sql @@ -0,0 +1,14 @@ +-- Updates from version 0.2-beta + +ALTER TABLE cache DROP session_id; + +CREATE INDEX session_changed_idx ON session (changed); +CREATE INDEX cache_created_idx ON "cache" (created); + +ALTER TABLE users ALTER "language" DROP NOT NULL; +ALTER TABLE users ALTER "language" DROP DEFAULT; + +ALTER TABLE identities ALTER del TYPE smallint; +ALTER TABLE identities ALTER standard TYPE smallint; +ALTER TABLE contacts ALTER del TYPE smallint; +ALTER TABLE messages ALTER del TYPE smallint; diff --git a/ruty/mails/SQL/postgres/2009090400.sql b/ruty/mails/SQL/postgres/2009090400.sql new file mode 100644 index 0000000..8eb4949 --- /dev/null +++ b/ruty/mails/SQL/postgres/2009090400.sql @@ -0,0 +1,6 @@ +-- Updates from version 0.3-stable + +TRUNCATE messages; +CREATE INDEX messages_index_idx ON messages (user_id, cache_key, idx); +DROP INDEX contacts_user_id_idx; +CREATE INDEX contacts_user_id_idx ON contacts (user_id, email); diff --git a/ruty/mails/SQL/postgres/2009103100.sql b/ruty/mails/SQL/postgres/2009103100.sql new file mode 100644 index 0000000..2350f79 --- /dev/null +++ b/ruty/mails/SQL/postgres/2009103100.sql @@ -0,0 +1,32 @@ +-- Updates from version 0.3.1 + +DROP INDEX identities_user_id_idx; +CREATE INDEX identities_user_id_idx ON identities (user_id, del); + +ALTER TABLE identities ADD changed timestamp with time zone DEFAULT now() NOT NULL; + +CREATE SEQUENCE contactgroups_ids + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + +CREATE TABLE contactgroups ( + contactgroup_id integer DEFAULT nextval('contactgroups_ids'::text) PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed timestamp with time zone DEFAULT now() NOT NULL, + del smallint NOT NULL DEFAULT 0, + name varchar(128) NOT NULL DEFAULT '' +); + +CREATE INDEX contactgroups_user_id_idx ON contactgroups (user_id, del); + +CREATE TABLE contactgroupmembers ( + contactgroup_id integer NOT NULL + REFERENCES contactgroups(contactgroup_id) ON DELETE CASCADE ON UPDATE CASCADE, + contact_id integer NOT NULL + REFERENCES contacts(contact_id) ON DELETE CASCADE ON UPDATE CASCADE, + created timestamp with time zone DEFAULT now() NOT NULL, + PRIMARY KEY (contactgroup_id, contact_id) +); diff --git a/ruty/mails/SQL/postgres/2010042300.sql b/ruty/mails/SQL/postgres/2010042300.sql new file mode 100644 index 0000000..bc9bd82 --- /dev/null +++ b/ruty/mails/SQL/postgres/2010042300.sql @@ -0,0 +1,4 @@ +-- Updates from version 0.4-beta + +ALTER TABLE users ALTER last_login DROP NOT NULL; +ALTER TABLE users ALTER last_login SET DEFAULT NULL; diff --git a/ruty/mails/SQL/postgres/2010100600.sql b/ruty/mails/SQL/postgres/2010100600.sql new file mode 100644 index 0000000..8dfcc12 --- /dev/null +++ b/ruty/mails/SQL/postgres/2010100600.sql @@ -0,0 +1,7 @@ +-- Updates from version 0.4.2 + +DROP INDEX users_username_id_idx; +ALTER TABLE users ADD CONSTRAINT users_username_key UNIQUE (username, mail_host); +ALTER TABLE contacts ALTER email TYPE varchar(255); + +TRUNCATE messages; diff --git a/ruty/mails/SQL/postgres/2011011200.sql b/ruty/mails/SQL/postgres/2011011200.sql new file mode 100644 index 0000000..db468d8 --- /dev/null +++ b/ruty/mails/SQL/postgres/2011011200.sql @@ -0,0 +1,7 @@ +-- Updates from version 0.5.x + +ALTER TABLE contacts ADD words TEXT NULL; +CREATE INDEX contactgroupmembers_contact_id_idx ON contactgroupmembers (contact_id); + +TRUNCATE messages; +TRUNCATE cache; diff --git a/ruty/mails/SQL/postgres/2011092800.sql b/ruty/mails/SQL/postgres/2011092800.sql new file mode 100644 index 0000000..fac3cd3 --- /dev/null +++ b/ruty/mails/SQL/postgres/2011092800.sql @@ -0,0 +1,64 @@ +-- Updates from version 0.6 + +CREATE TABLE dictionary ( + user_id integer DEFAULT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + "language" varchar(5) NOT NULL, + data text NOT NULL, + CONSTRAINT dictionary_user_id_language_key UNIQUE (user_id, "language") +); + +CREATE SEQUENCE search_ids + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + +CREATE TABLE searches ( + search_id integer DEFAULT nextval('search_ids'::text) PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + "type" smallint DEFAULT 0 NOT NULL, + name varchar(128) NOT NULL, + data text NOT NULL, + CONSTRAINT searches_user_id_key UNIQUE (user_id, "type", name) +); + +DROP SEQUENCE message_ids; +DROP TABLE messages; + +CREATE TABLE cache_index ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + changed timestamp with time zone DEFAULT now() NOT NULL, + valid smallint NOT NULL DEFAULT 0, + data text NOT NULL, + PRIMARY KEY (user_id, mailbox) +); + +CREATE INDEX cache_index_changed_idx ON cache_index (changed); + +CREATE TABLE cache_thread ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + changed timestamp with time zone DEFAULT now() NOT NULL, + data text NOT NULL, + PRIMARY KEY (user_id, mailbox) +); + +CREATE INDEX cache_thread_changed_idx ON cache_thread (changed); + +CREATE TABLE cache_messages ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + uid integer NOT NULL, + changed timestamp with time zone DEFAULT now() NOT NULL, + data text NOT NULL, + flags integer NOT NULL DEFAULT 0, + PRIMARY KEY (user_id, mailbox, uid) +); + +CREATE INDEX cache_messages_changed_idx ON cache_messages (changed); diff --git a/ruty/mails/SQL/postgres/2011111600.sql b/ruty/mails/SQL/postgres/2011111600.sql new file mode 100644 index 0000000..a382ba0 --- /dev/null +++ b/ruty/mails/SQL/postgres/2011111600.sql @@ -0,0 +1,3 @@ +-- Updates from version 0.7-beta + +ALTER TABLE "session" ALTER sess_id TYPE varchar(128); diff --git a/ruty/mails/SQL/postgres/2011121400.sql b/ruty/mails/SQL/postgres/2011121400.sql new file mode 100644 index 0000000..81a0cb8 --- /dev/null +++ b/ruty/mails/SQL/postgres/2011121400.sql @@ -0,0 +1,5 @@ +-- Updates from version 0.7 + +DROP INDEX contacts_user_id_idx; +CREATE INDEX contacts_user_id_idx ON contacts USING btree (user_id, del); +ALTER TABLE contacts ALTER email TYPE text; diff --git a/ruty/mails/SQL/postgres/2012080700.sql b/ruty/mails/SQL/postgres/2012080700.sql new file mode 100644 index 0000000..41f6016 --- /dev/null +++ b/ruty/mails/SQL/postgres/2012080700.sql @@ -0,0 +1,7 @@ +-- Updates from version 0.8 + +ALTER TABLE cache DROP COLUMN cache_id; +DROP SEQUENCE cache_ids; + +ALTER TABLE users DROP COLUMN alias; +CREATE INDEX identities_email_idx ON identities (email, del); diff --git a/ruty/mails/SQL/postgres/2013011000.sql b/ruty/mails/SQL/postgres/2013011000.sql new file mode 100644 index 0000000..a8cf917 --- /dev/null +++ b/ruty/mails/SQL/postgres/2013011000.sql @@ -0,0 +1,4 @@ +CREATE TABLE "system" ( + name varchar(64) NOT NULL PRIMARY KEY, + value text +); diff --git a/ruty/mails/SQL/postgres/2013042700.sql b/ruty/mails/SQL/postgres/2013042700.sql new file mode 100644 index 0000000..bbd5675 --- /dev/null +++ b/ruty/mails/SQL/postgres/2013042700.sql @@ -0,0 +1,14 @@ +ALTER SEQUENCE user_ids RENAME TO users_seq; +ALTER TABLE users ALTER COLUMN user_id SET DEFAULT nextval('users_seq'::text); + +ALTER SEQUENCE identity_ids RENAME TO identities_seq; +ALTER TABLE identities ALTER COLUMN identity_id SET DEFAULT nextval('identities_seq'::text); + +ALTER SEQUENCE contact_ids RENAME TO contacts_seq; +ALTER TABLE contacts ALTER COLUMN contact_id SET DEFAULT nextval('contacts_seq'::text); + +ALTER SEQUENCE contactgroups_ids RENAME TO contactgroups_seq; +ALTER TABLE contactgroups ALTER COLUMN contactgroup_id SET DEFAULT nextval('contactgroups_seq'::text); + +ALTER SEQUENCE search_ids RENAME TO searches_seq; +ALTER TABLE searches ALTER COLUMN search_id SET DEFAULT nextval('searches_seq'::text); diff --git a/ruty/mails/SQL/postgres/2013052500.sql b/ruty/mails/SQL/postgres/2013052500.sql new file mode 100644 index 0000000..471e571 --- /dev/null +++ b/ruty/mails/SQL/postgres/2013052500.sql @@ -0,0 +1,8 @@ +CREATE TABLE "cache_shared" ( + cache_key varchar(255) NOT NULL, + created timestamp with time zone DEFAULT now() NOT NULL, + data text NOT NULL +); + +CREATE INDEX cache_shared_cache_key_idx ON "cache_shared" (cache_key); +CREATE INDEX cache_shared_created_idx ON "cache_shared" (created); diff --git a/ruty/mails/SQL/postgres/2013061000.sql b/ruty/mails/SQL/postgres/2013061000.sql new file mode 100644 index 0000000..9db0ebc --- /dev/null +++ b/ruty/mails/SQL/postgres/2013061000.sql @@ -0,0 +1,24 @@ +ALTER TABLE "cache" ADD expires timestamp with time zone DEFAULT NULL; +ALTER TABLE "cache_shared" ADD expires timestamp with time zone DEFAULT NULL; +ALTER TABLE "cache_index" ADD expires timestamp with time zone DEFAULT NULL; +ALTER TABLE "cache_thread" ADD expires timestamp with time zone DEFAULT NULL; +ALTER TABLE "cache_messages" ADD expires timestamp with time zone DEFAULT NULL; + +-- initialize expires column with created/changed date + 7days +UPDATE "cache" SET expires = created + interval '604800 seconds'; +UPDATE "cache_shared" SET expires = created + interval '604800 seconds'; +UPDATE "cache_index" SET expires = changed + interval '604800 seconds'; +UPDATE "cache_thread" SET expires = changed + interval '604800 seconds'; +UPDATE "cache_messages" SET expires = changed + interval '604800 seconds'; + +DROP INDEX cache_created_idx; +DROP INDEX cache_shared_created_idx; +ALTER TABLE "cache_index" DROP "changed"; +ALTER TABLE "cache_thread" DROP "changed"; +ALTER TABLE "cache_messages" DROP "changed"; + +CREATE INDEX cache_expires_idx ON "cache" (expires); +CREATE INDEX cache_shared_expires_idx ON "cache_shared" (expires); +CREATE INDEX cache_index_expires_idx ON "cache_index" (expires); +CREATE INDEX cache_thread_expires_idx ON "cache_thread" (expires); +CREATE INDEX cache_messages_expires_idx ON "cache_messages" (expires); diff --git a/ruty/mails/SQL/postgres/2014042900.sql b/ruty/mails/SQL/postgres/2014042900.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/postgres/2014042900.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/postgres/2015030800.sql b/ruty/mails/SQL/postgres/2015030800.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/postgres/2015030800.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/postgres/2015111100.sql b/ruty/mails/SQL/postgres/2015111100.sql new file mode 100644 index 0000000..3eea6d5 --- /dev/null +++ b/ruty/mails/SQL/postgres/2015111100.sql @@ -0,0 +1,2 @@ +ALTER TABLE "users" ADD failed_login timestamp with time zone DEFAULT NULL; +ALTER TABLE "users" ADD failed_login_counter integer DEFAULT NULL; diff --git a/ruty/mails/SQL/postgres/2016081200.sql b/ruty/mails/SQL/postgres/2016081200.sql new file mode 100644 index 0000000..7235b40 --- /dev/null +++ b/ruty/mails/SQL/postgres/2016081200.sql @@ -0,0 +1 @@ +ALTER TABLE "session" DROP COLUMN created; diff --git a/ruty/mails/SQL/postgres/2016100900.sql b/ruty/mails/SQL/postgres/2016100900.sql new file mode 100644 index 0000000..8eb7eed --- /dev/null +++ b/ruty/mails/SQL/postgres/2016100900.sql @@ -0,0 +1 @@ +ALTER TABLE session ALTER COLUMN ip TYPE character varying(41); diff --git a/ruty/mails/SQL/postgres/2016112200.sql b/ruty/mails/SQL/postgres/2016112200.sql new file mode 100644 index 0000000..34af971 --- /dev/null +++ b/ruty/mails/SQL/postgres/2016112200.sql @@ -0,0 +1,21 @@ +DROP TABLE "cache"; +DROP TABLE "cache_shared"; + +CREATE TABLE "cache" ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + cache_key varchar(128) DEFAULT '' NOT NULL, + expires timestamp with time zone DEFAULT NULL, + data text NOT NULL, + PRIMARY KEY (user_id, cache_key) +); + +CREATE INDEX cache_expires_idx ON "cache" (expires); + +CREATE TABLE "cache_shared" ( + cache_key varchar(255) NOT NULL PRIMARY KEY, + expires timestamp with time zone DEFAULT NULL, + data text NOT NULL +); + +CREATE INDEX cache_shared_expires_idx ON "cache_shared" (expires); diff --git a/ruty/mails/SQL/postgres/2018021600.sql b/ruty/mails/SQL/postgres/2018021600.sql new file mode 100644 index 0000000..e67ef1b --- /dev/null +++ b/ruty/mails/SQL/postgres/2018021600.sql @@ -0,0 +1,15 @@ +CREATE SEQUENCE "filestore_seq" + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + +CREATE TABLE "filestore" ( + file_id integer DEFAULT nextval('filestore_seq'::text) PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + filename varchar(128) NOT NULL, + mtime integer NOT NULL, + data text NOT NULL, + CONSTRAINT filestore_user_id_filename UNIQUE (user_id, filename) +); diff --git a/ruty/mails/SQL/postgres/2018122300.sql b/ruty/mails/SQL/postgres/2018122300.sql new file mode 100644 index 0000000..1a7d895 --- /dev/null +++ b/ruty/mails/SQL/postgres/2018122300.sql @@ -0,0 +1,5 @@ +ALTER TABLE "filestore" ADD COLUMN context varchar(32); +UPDATE "filestore" SET context = 'enigma'; +ALTER TABLE "filestore" ALTER COLUMN context SET NOT NULL; +ALTER TABLE "filestore" DROP CONSTRAINT "filestore_user_id_filename"; +ALTER TABLE "filestore" ADD CONSTRAINT "filestore_user_id_context_filename" UNIQUE (user_id, context, filename); diff --git a/ruty/mails/SQL/postgres/2019092900.sql b/ruty/mails/SQL/postgres/2019092900.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/postgres/2019092900.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/postgres/2020020100.sql b/ruty/mails/SQL/postgres/2020020100.sql new file mode 100644 index 0000000..f9c0e91 --- /dev/null +++ b/ruty/mails/SQL/postgres/2020020100.sql @@ -0,0 +1,2 @@ +ALTER TABLE "dictionary" ALTER COLUMN "language" TYPE varchar(16); +ALTER TABLE "users" ALTER COLUMN "language" TYPE varchar(16); diff --git a/ruty/mails/SQL/postgres/2020020101.sql b/ruty/mails/SQL/postgres/2020020101.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/postgres/2020020101.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/postgres/2020091000.sql b/ruty/mails/SQL/postgres/2020091000.sql new file mode 100644 index 0000000..fa618b3 --- /dev/null +++ b/ruty/mails/SQL/postgres/2020091000.sql @@ -0,0 +1,19 @@ + +CREATE SEQUENCE collected_addresses_seq + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + +CREATE TABLE collected_addresses ( + address_id integer DEFAULT nextval('collected_addresses_seq'::text) PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed timestamp with time zone DEFAULT now() NOT NULL, + name varchar(255) DEFAULT '' NOT NULL, + email varchar(255) NOT NULL, + "type" integer NOT NULL +); + +CREATE UNIQUE INDEX collected_addresses_user_id_idx ON collected_addresses (user_id, "type", email); diff --git a/ruty/mails/SQL/postgres/2020122900.sql b/ruty/mails/SQL/postgres/2020122900.sql new file mode 100644 index 0000000..4789533 --- /dev/null +++ b/ruty/mails/SQL/postgres/2020122900.sql @@ -0,0 +1,2 @@ +ALTER TABLE "users" ALTER COLUMN "preferences" DROP NOT NULL; +ALTER TABLE "users" ALTER COLUMN "preferences" SET DEFAULT NULL; diff --git a/ruty/mails/SQL/postgres/2021081000.sql b/ruty/mails/SQL/postgres/2021081000.sql new file mode 100644 index 0000000..8525521 --- /dev/null +++ b/ruty/mails/SQL/postgres/2021081000.sql @@ -0,0 +1,21 @@ +CREATE SEQUENCE responses_seq + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + +CREATE TABLE responses ( + response_id integer DEFAULT nextval('responses_seq'::text) PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed timestamp with time zone DEFAULT now() NOT NULL, + del smallint DEFAULT 0 NOT NULL, + name varchar(255) NOT NULL, + data text NOT NULL, + is_html smallint DEFAULT 0 NOT NULL +); + +CREATE UNIQUE INDEX responses_user_id_idx ON responses (user_id, del); + +ALTER TABLE identities ALTER html_signature TYPE smallint; diff --git a/ruty/mails/SQL/postgres/2021100300.sql b/ruty/mails/SQL/postgres/2021100300.sql new file mode 100644 index 0000000..49daeda --- /dev/null +++ b/ruty/mails/SQL/postgres/2021100300.sql @@ -0,0 +1 @@ +-- SQLite only \ No newline at end of file diff --git a/ruty/mails/SQL/postgres/2022081200.sql b/ruty/mails/SQL/postgres/2022081200.sql new file mode 100644 index 0000000..fee9438 --- /dev/null +++ b/ruty/mails/SQL/postgres/2022081200.sql @@ -0,0 +1,2 @@ +DROP INDEX responses_user_id_idx; +CREATE INDEX responses_user_id_idx ON responses (user_id, del); diff --git a/ruty/mails/SQL/sqlite.initial.sql b/ruty/mails/SQL/sqlite.initial.sql new file mode 100644 index 0000000..dd8f2f5 --- /dev/null +++ b/ruty/mails/SQL/sqlite.initial.sql @@ -0,0 +1,263 @@ +-- Roundcube Webmail initial database structure + +-- +-- Table structure for table users +-- + +CREATE TABLE users ( + user_id integer NOT NULL PRIMARY KEY, + username varchar(128) NOT NULL default '', + mail_host varchar(128) NOT NULL default '', + created datetime NOT NULL default '0000-00-00 00:00:00', + last_login datetime DEFAULT NULL, + failed_login datetime DEFAULT NULL, + failed_login_counter integer DEFAULT NULL, + language varchar(16), + preferences text DEFAULT NULL +); + +CREATE UNIQUE INDEX ix_users_username ON users(username, mail_host); + +-- +-- Table structure for table contacts and related +-- + +CREATE TABLE contacts ( + contact_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + email text NOT NULL default '', + firstname varchar(128) NOT NULL default '', + surname varchar(128) NOT NULL default '', + vcard text NOT NULL default '', + words text NOT NULL default '' +); + +CREATE INDEX ix_contacts_user_id ON contacts(user_id, del); + + +CREATE TABLE contactgroups ( + contactgroup_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '' +); + +CREATE INDEX ix_contactgroups_user_id ON contactgroups(user_id, del); + + +CREATE TABLE contactgroupmembers ( + contactgroup_id integer NOT NULL + REFERENCES contactgroups(contactgroup_id) ON DELETE CASCADE ON UPDATE CASCADE, + contact_id integer NOT NULL + REFERENCES contacts(contact_id) ON DELETE CASCADE ON UPDATE CASCADE, + created datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (contactgroup_id, contact_id) +); + +CREATE INDEX ix_contactgroupmembers_contact_id ON contactgroupmembers (contact_id); + +-- +-- Table structure for table collected_addresses +-- + +CREATE TABLE collected_addresses ( + address_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed datetime NOT NULL default '0000-00-00 00:00:00', + name varchar(255) NOT NULL default '', + email varchar(255) NOT NULL, + "type" integer NOT NULL +); + +CREATE UNIQUE INDEX ix_collected_addresses_user_id ON collected_addresses(user_id, "type", email); + +-- +-- Table structure for table identities +-- + +CREATE TABLE identities ( + identity_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + standard tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + organization varchar(128) default '', + email varchar(128) NOT NULL default '', + "reply-to" varchar(128) NOT NULL default '', + bcc varchar(128) NOT NULL default '', + signature text NOT NULL default '', + html_signature tinyint NOT NULL default '0' +); + +CREATE INDEX ix_identities_user_id ON identities(user_id, del); +CREATE INDEX ix_identities_email ON identities(email, del); + +-- +-- Table structure for table responses +-- + +CREATE TABLE responses ( + response_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(255) NOT NULL, + data text NOT NULL, + is_html tinyint NOT NULL default '0' +); + +CREATE INDEX ix_responses_user_id ON responses(user_id, del); + +-- +-- Table structure for table session +-- + +CREATE TABLE session ( + sess_id varchar(128) NOT NULL PRIMARY KEY, + changed datetime NOT NULL default '0000-00-00 00:00:00', + ip varchar(40) NOT NULL default '', + vars text NOT NULL +); + +CREATE INDEX ix_session_changed ON session (changed); + +-- +-- Table structure for table dictionary +-- + +CREATE TABLE dictionary ( + user_id integer DEFAULT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + language varchar(16) NOT NULL, + data text NOT NULL +); + +CREATE UNIQUE INDEX ix_dictionary_user_language ON dictionary (user_id, language); + +-- +-- Table structure for table searches +-- + +CREATE TABLE searches ( + search_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + "type" smallint NOT NULL DEFAULT '0', + name varchar(128) NOT NULL, + data text NOT NULL +); + +CREATE UNIQUE INDEX ix_searches_user_type_name ON searches (user_id, type, name); + +-- +-- Table structure for table cache +-- + +CREATE TABLE cache ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + cache_key varchar(128) NOT NULL default '', + expires datetime DEFAULT NULL, + data text NOT NULL, + PRIMARY KEY (user_id, cache_key) +); + +CREATE INDEX ix_cache_expires ON cache(expires); + +-- +-- Table structure for table cache_shared +-- + +CREATE TABLE cache_shared ( + cache_key varchar(255) NOT NULL, + expires datetime DEFAULT NULL, + data text NOT NULL, + PRIMARY KEY (cache_key) +); + +CREATE INDEX ix_cache_shared_expires ON cache_shared(expires); + +-- +-- Table structure for table cache_index +-- + +CREATE TABLE cache_index ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + expires datetime DEFAULT NULL, + valid smallint NOT NULL DEFAULT '0', + data text NOT NULL, + PRIMARY KEY (user_id, mailbox) +); + +CREATE INDEX ix_cache_index_expires ON cache_index (expires); + +-- +-- Table structure for table cache_thread +-- + +CREATE TABLE cache_thread ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + expires datetime DEFAULT NULL, + data text NOT NULL, + PRIMARY KEY (user_id, mailbox) +); + +CREATE INDEX ix_cache_thread_expires ON cache_thread (expires); + +-- +-- Table structure for table cache_messages +-- + +CREATE TABLE cache_messages ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + uid integer NOT NULL, + expires datetime DEFAULT NULL, + data text NOT NULL, + flags integer NOT NULL DEFAULT '0', + PRIMARY KEY (user_id, mailbox, uid) +); + +CREATE INDEX ix_cache_messages_expires ON cache_messages (expires); + +-- +-- Table structure for table filestore +-- + +CREATE TABLE filestore ( + file_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + context varchar(32) NOT NULL, + filename varchar(128) NOT NULL, + mtime integer NOT NULL, + data text NOT NULL +); + +CREATE UNIQUE INDEX ix_filestore_user_id ON filestore(user_id, context, filename); + +-- +-- Table structure for table system +-- + +CREATE TABLE system ( + name varchar(64) NOT NULL PRIMARY KEY, + value text NOT NULL +); + +INSERT INTO system (name, value) VALUES ('roundcube-version', '2022081200'); diff --git a/ruty/mails/SQL/sqlite/2008030300.sql b/ruty/mails/SQL/sqlite/2008030300.sql new file mode 100644 index 0000000..b5b4890 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2008030300.sql @@ -0,0 +1,25 @@ +-- Updates from version 0.1-stable to 0.1.1 + +DROP TABLE messages; + +CREATE TABLE messages ( + message_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL default '0', + del tinyint NOT NULL default '0', + cache_key varchar(128) NOT NULL default '', + created datetime NOT NULL default '0000-00-00 00:00:00', + idx integer NOT NULL default '0', + uid integer NOT NULL default '0', + subject varchar(255) NOT NULL default '', + "from" varchar(255) NOT NULL default '', + "to" varchar(255) NOT NULL default '', + "cc" varchar(255) NOT NULL default '', + "date" datetime NOT NULL default '0000-00-00 00:00:00', + size integer NOT NULL default '0', + headers text NOT NULL, + structure text +); + +CREATE INDEX ix_messages_user_cache_uid ON messages(user_id,cache_key,uid); +CREATE INDEX ix_users_username ON users(username); +CREATE INDEX ix_users_alias ON users(alias); diff --git a/ruty/mails/SQL/sqlite/2008060900.sql b/ruty/mails/SQL/sqlite/2008060900.sql new file mode 100644 index 0000000..157029c --- /dev/null +++ b/ruty/mails/SQL/sqlite/2008060900.sql @@ -0,0 +1,3 @@ +-- Updates from version 0.2-alpha + +CREATE INDEX ix_messages_created ON messages (created); diff --git a/ruty/mails/SQL/sqlite/2008092100.sql b/ruty/mails/SQL/sqlite/2008092100.sql new file mode 100644 index 0000000..8bc081c --- /dev/null +++ b/ruty/mails/SQL/sqlite/2008092100.sql @@ -0,0 +1,4 @@ +-- Updates from version 0.2-beta + +CREATE INDEX ix_session_changed ON session (changed); +CREATE INDEX ix_cache_created ON cache (created); diff --git a/ruty/mails/SQL/sqlite/2009090400.sql b/ruty/mails/SQL/sqlite/2009090400.sql new file mode 100644 index 0000000..c8a53ed --- /dev/null +++ b/ruty/mails/SQL/sqlite/2009090400.sql @@ -0,0 +1,8 @@ +-- Updates from version 0.3-stable + +DELETE FROM messages; +DROP INDEX ix_messages_user_cache_uid; +CREATE UNIQUE INDEX ix_messages_user_cache_uid ON messages (user_id,cache_key,uid); +CREATE INDEX ix_messages_index ON messages (user_id,cache_key,idx); +DROP INDEX ix_contacts_user_id; +CREATE INDEX ix_contacts_user_id ON contacts(user_id, email); diff --git a/ruty/mails/SQL/sqlite/2009103100.sql b/ruty/mails/SQL/sqlite/2009103100.sql new file mode 100644 index 0000000..bd7b174 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2009103100.sql @@ -0,0 +1,61 @@ +-- Updates from version 0.3.1 + +-- ALTER TABLE identities ADD COLUMN changed datetime NOT NULL default '0000-00-00 00:00:00'; -- + +CREATE TABLE temp_identities ( + identity_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL default '0', + standard tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + organization varchar(128) default '', + email varchar(128) NOT NULL default '', + "reply-to" varchar(128) NOT NULL default '', + bcc varchar(128) NOT NULL default '', + signature text NOT NULL default '', + html_signature tinyint NOT NULL default '0' +); +INSERT INTO temp_identities (identity_id, user_id, standard, name, organization, email, "reply-to", bcc, signature, html_signature) + SELECT identity_id, user_id, standard, name, organization, email, "reply-to", bcc, signature, html_signature + FROM identities WHERE del=0; + +DROP INDEX ix_identities_user_id; +DROP TABLE identities; + +CREATE TABLE identities ( + identity_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL default '0', + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + standard tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + organization varchar(128) default '', + email varchar(128) NOT NULL default '', + "reply-to" varchar(128) NOT NULL default '', + bcc varchar(128) NOT NULL default '', + signature text NOT NULL default '', + html_signature tinyint NOT NULL default '0' +); +CREATE INDEX ix_identities_user_id ON identities(user_id, del); + +INSERT INTO identities (identity_id, user_id, standard, name, organization, email, "reply-to", bcc, signature, html_signature) + SELECT identity_id, user_id, standard, name, organization, email, "reply-to", bcc, signature, html_signature + FROM temp_identities; + +DROP TABLE temp_identities; + +CREATE TABLE contactgroups ( + contactgroup_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL default '0', + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '' +); + +CREATE INDEX ix_contactgroups_user_id ON contactgroups(user_id, del); + +CREATE TABLE contactgroupmembers ( + contactgroup_id integer NOT NULL, + contact_id integer NOT NULL default '0', + created datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (contactgroup_id, contact_id) +); diff --git a/ruty/mails/SQL/sqlite/2010042300.sql b/ruty/mails/SQL/sqlite/2010042300.sql new file mode 100644 index 0000000..1a9023c --- /dev/null +++ b/ruty/mails/SQL/sqlite/2010042300.sql @@ -0,0 +1,35 @@ +-- Updates from version 0.4-beta + +CREATE TABLE tmp_users ( + user_id integer NOT NULL PRIMARY KEY, + username varchar(128) NOT NULL default '', + mail_host varchar(128) NOT NULL default '', + alias varchar(128) NOT NULL default '', + created datetime NOT NULL default '0000-00-00 00:00:00', + last_login datetime NOT NULL default '0000-00-00 00:00:00', + language varchar(5), + preferences text NOT NULL default '' +); + +INSERT INTO tmp_users (user_id, username, mail_host, alias, created, last_login, language, preferences) + SELECT user_id, username, mail_host, alias, created, last_login, language, preferences FROM users; + +DROP TABLE users; + +CREATE TABLE users ( + user_id integer NOT NULL PRIMARY KEY, + username varchar(128) NOT NULL default '', + mail_host varchar(128) NOT NULL default '', + alias varchar(128) NOT NULL default '', + created datetime NOT NULL default '0000-00-00 00:00:00', + last_login datetime DEFAULT NULL, + language varchar(5), + preferences text NOT NULL default '' +); + +INSERT INTO users (user_id, username, mail_host, alias, created, last_login, language, preferences) + SELECT user_id, username, mail_host, alias, created, last_login, language, preferences FROM tmp_users; + +CREATE INDEX ix_users_username ON users(username); +CREATE INDEX ix_users_alias ON users(alias); +DROP TABLE tmp_users; diff --git a/ruty/mails/SQL/sqlite/2010100600.sql b/ruty/mails/SQL/sqlite/2010100600.sql new file mode 100644 index 0000000..5c7259f --- /dev/null +++ b/ruty/mails/SQL/sqlite/2010100600.sql @@ -0,0 +1,40 @@ +-- Updates from version 0.4.2 + +DROP INDEX ix_users_username; +CREATE UNIQUE INDEX ix_users_username ON users(username, mail_host); + +CREATE TABLE contacts_tmp ( + contact_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL default '0', + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + email varchar(255) NOT NULL default '', + firstname varchar(128) NOT NULL default '', + surname varchar(128) NOT NULL default '', + vcard text NOT NULL default '' +); + +INSERT INTO contacts_tmp (contact_id, user_id, changed, del, name, email, firstname, surname, vcard) + SELECT contact_id, user_id, changed, del, name, email, firstname, surname, vcard FROM contacts; + +DROP TABLE contacts; +CREATE TABLE contacts ( + contact_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL default '0', + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + email varchar(255) NOT NULL default '', + firstname varchar(128) NOT NULL default '', + surname varchar(128) NOT NULL default '', + vcard text NOT NULL default '' +); + +INSERT INTO contacts (contact_id, user_id, changed, del, name, email, firstname, surname, vcard) + SELECT contact_id, user_id, changed, del, name, email, firstname, surname, vcard FROM contacts_tmp; + +CREATE INDEX ix_contacts_user_id ON contacts(user_id, email); +DROP TABLE contacts_tmp; + +DELETE FROM messages; diff --git a/ruty/mails/SQL/sqlite/2011011200.sql b/ruty/mails/SQL/sqlite/2011011200.sql new file mode 100644 index 0000000..4cca740 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2011011200.sql @@ -0,0 +1,41 @@ +-- Updates from version 0.5.x + +CREATE TABLE contacts_tmp ( + contact_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL default '0', + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + email varchar(255) NOT NULL default '', + firstname varchar(128) NOT NULL default '', + surname varchar(128) NOT NULL default '', + vcard text NOT NULL default '' +); + +INSERT INTO contacts_tmp (contact_id, user_id, changed, del, name, email, firstname, surname, vcard) + SELECT contact_id, user_id, changed, del, name, email, firstname, surname, vcard FROM contacts; + +DROP TABLE contacts; +CREATE TABLE contacts ( + contact_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL default '0', + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + email varchar(255) NOT NULL default '', + firstname varchar(128) NOT NULL default '', + surname varchar(128) NOT NULL default '', + vcard text NOT NULL default '', + words text NOT NULL default '' +); + +INSERT INTO contacts (contact_id, user_id, changed, del, name, email, firstname, surname, vcard) + SELECT contact_id, user_id, changed, del, name, email, firstname, surname, vcard FROM contacts_tmp; + +CREATE INDEX ix_contacts_user_id ON contacts(user_id, email); +DROP TABLE contacts_tmp; + + +DELETE FROM messages; +DELETE FROM cache; +CREATE INDEX ix_contactgroupmembers_contact_id ON contactgroupmembers (contact_id); diff --git a/ruty/mails/SQL/sqlite/2011092800.sql b/ruty/mails/SQL/sqlite/2011092800.sql new file mode 100644 index 0000000..27dbffc --- /dev/null +++ b/ruty/mails/SQL/sqlite/2011092800.sql @@ -0,0 +1,54 @@ +-- Updates from version 0.6 + +CREATE TABLE dictionary ( + user_id integer DEFAULT NULL, + "language" varchar(5) NOT NULL, + data text NOT NULL +); + +CREATE UNIQUE INDEX ix_dictionary_user_language ON dictionary (user_id, "language"); + +CREATE TABLE searches ( + search_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL DEFAULT '0', + "type" smallint NOT NULL DEFAULT '0', + name varchar(128) NOT NULL, + data text NOT NULL +); + +CREATE UNIQUE INDEX ix_searches_user_type_name ON searches (user_id, type, name); + +DROP TABLE messages; + +CREATE TABLE cache_index ( + user_id integer NOT NULL, + mailbox varchar(255) NOT NULL, + changed datetime NOT NULL default '0000-00-00 00:00:00', + valid smallint NOT NULL DEFAULT '0', + data text NOT NULL, + PRIMARY KEY (user_id, mailbox) +); + +CREATE INDEX ix_cache_index_changed ON cache_index (changed); + +CREATE TABLE cache_thread ( + user_id integer NOT NULL, + mailbox varchar(255) NOT NULL, + changed datetime NOT NULL default '0000-00-00 00:00:00', + data text NOT NULL, + PRIMARY KEY (user_id, mailbox) +); + +CREATE INDEX ix_cache_thread_changed ON cache_thread (changed); + +CREATE TABLE cache_messages ( + user_id integer NOT NULL, + mailbox varchar(255) NOT NULL, + uid integer NOT NULL, + changed datetime NOT NULL default '0000-00-00 00:00:00', + data text NOT NULL, + flags integer NOT NULL DEFAULT '0', + PRIMARY KEY (user_id, mailbox, uid) +); + +CREATE INDEX ix_cache_messages_changed ON cache_messages (changed); diff --git a/ruty/mails/SQL/sqlite/2011111600.sql b/ruty/mails/SQL/sqlite/2011111600.sql new file mode 100644 index 0000000..cea0d12 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2011111600.sql @@ -0,0 +1,11 @@ +-- Updates from version 0.7-beta + +DROP TABLE session; +CREATE TABLE session ( + sess_id varchar(128) NOT NULL PRIMARY KEY, + created datetime NOT NULL default '0000-00-00 00:00:00', + changed datetime NOT NULL default '0000-00-00 00:00:00', + ip varchar(40) NOT NULL default '', + vars text NOT NULL +); +CREATE INDEX ix_session_changed ON session (changed); diff --git a/ruty/mails/SQL/sqlite/2011121400.sql b/ruty/mails/SQL/sqlite/2011121400.sql new file mode 100644 index 0000000..9d92276 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2011121400.sql @@ -0,0 +1,38 @@ +-- Updates from version 0.7 + +CREATE TABLE contacts_tmp ( + contact_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL, + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + email text NOT NULL default '', + firstname varchar(128) NOT NULL default '', + surname varchar(128) NOT NULL default '', + vcard text NOT NULL default '', + words text NOT NULL default '' +); + +INSERT INTO contacts_tmp (contact_id, user_id, changed, del, name, email, firstname, surname, vcard, words) + SELECT contact_id, user_id, changed, del, name, email, firstname, surname, vcard, words FROM contacts; + +DROP TABLE contacts; + +CREATE TABLE contacts ( + contact_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL, + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + email text NOT NULL default '', + firstname varchar(128) NOT NULL default '', + surname varchar(128) NOT NULL default '', + vcard text NOT NULL default '', + words text NOT NULL default '' +); + +INSERT INTO contacts (contact_id, user_id, changed, del, name, email, firstname, surname, vcard, words) + SELECT contact_id, user_id, changed, del, name, email, firstname, surname, vcard, words FROM contacts_tmp; + +CREATE INDEX ix_contacts_user_id ON contacts(user_id, del); +DROP TABLE contacts_tmp; diff --git a/ruty/mails/SQL/sqlite/2012080700.sql b/ruty/mails/SQL/sqlite/2012080700.sql new file mode 100644 index 0000000..c6ede89 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2012080700.sql @@ -0,0 +1,44 @@ +-- Updates from version 0.8 + +DROP TABLE cache; +CREATE TABLE cache ( + user_id integer NOT NULL default 0, + cache_key varchar(128) NOT NULL default '', + created datetime NOT NULL default '0000-00-00 00:00:00', + data text NOT NULL +); + +CREATE INDEX ix_cache_user_cache_key ON cache(user_id, cache_key); +CREATE INDEX ix_cache_created ON cache(created); + +CREATE TABLE tmp_users ( + user_id integer NOT NULL PRIMARY KEY, + username varchar(128) NOT NULL default '', + mail_host varchar(128) NOT NULL default '', + created datetime NOT NULL default '0000-00-00 00:00:00', + last_login datetime DEFAULT NULL, + language varchar(5), + preferences text NOT NULL default '' +); + +INSERT INTO tmp_users (user_id, username, mail_host, created, last_login, language, preferences) + SELECT user_id, username, mail_host, created, last_login, language, preferences FROM users; + +DROP TABLE users; + +CREATE TABLE users ( + user_id integer NOT NULL PRIMARY KEY, + username varchar(128) NOT NULL default '', + mail_host varchar(128) NOT NULL default '', + created datetime NOT NULL default '0000-00-00 00:00:00', + last_login datetime DEFAULT NULL, + language varchar(5), + preferences text NOT NULL default '' +); + +INSERT INTO users (user_id, username, mail_host, created, last_login, language, preferences) + SELECT user_id, username, mail_host, created, last_login, language, preferences FROM tmp_users; + +CREATE UNIQUE INDEX ix_users_username ON users(username, mail_host); + +CREATE INDEX ix_identities_email ON identities(email, del); diff --git a/ruty/mails/SQL/sqlite/2013011000.sql b/ruty/mails/SQL/sqlite/2013011000.sql new file mode 100644 index 0000000..ec261a6 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2013011000.sql @@ -0,0 +1,6 @@ +-- Updates from version 0.9-beta + +CREATE TABLE IF NOT EXISTS system ( + name varchar(64) NOT NULL PRIMARY KEY, + value text NOT NULL +); diff --git a/ruty/mails/SQL/sqlite/2013011700.sql b/ruty/mails/SQL/sqlite/2013011700.sql new file mode 100644 index 0000000..533e70f --- /dev/null +++ b/ruty/mails/SQL/sqlite/2013011700.sql @@ -0,0 +1,2 @@ +-- drop temp table created in 2012080700.sql +DROP TABLE IF EXISTS tmp_users; diff --git a/ruty/mails/SQL/sqlite/2013042700.sql b/ruty/mails/SQL/sqlite/2013042700.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/sqlite/2013042700.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/sqlite/2013052500.sql b/ruty/mails/SQL/sqlite/2013052500.sql new file mode 100644 index 0000000..19ae1b1 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2013052500.sql @@ -0,0 +1,8 @@ +CREATE TABLE cache_shared ( + cache_key varchar(255) NOT NULL, + created datetime NOT NULL default '0000-00-00 00:00:00', + data text NOT NULL +); + +CREATE INDEX ix_cache_shared_cache_key ON cache_shared(cache_key); +CREATE INDEX ix_cache_shared_created ON cache_shared(created); diff --git a/ruty/mails/SQL/sqlite/2013061000.sql b/ruty/mails/SQL/sqlite/2013061000.sql new file mode 100644 index 0000000..3c6b43e --- /dev/null +++ b/ruty/mails/SQL/sqlite/2013061000.sql @@ -0,0 +1,48 @@ +DROP TABLE cache_index; +DROP TABLE cache_thread; +DROP TABLE cache_messages; + +ALTER TABLE cache ADD expires datetime DEFAULT NULL; +DROP INDEX ix_cache_created; + +ALTER TABLE cache_shared ADD expires datetime DEFAULT NULL; +DROP INDEX ix_cache_shared_created; + +UPDATE cache SET expires = datetime(created, '+604800 seconds'); +UPDATE cache_shared SET expires = datetime(created, '+604800 seconds'); + +CREATE INDEX ix_cache_expires ON cache(expires); +CREATE INDEX ix_cache_shared_expires ON cache_shared(expires); + +CREATE TABLE cache_index ( + user_id integer NOT NULL, + mailbox varchar(255) NOT NULL, + expires datetime DEFAULT NULL, + valid smallint NOT NULL DEFAULT '0', + data text NOT NULL, + PRIMARY KEY (user_id, mailbox) +); + +CREATE INDEX ix_cache_index_expires ON cache_index (expires); + +CREATE TABLE cache_thread ( + user_id integer NOT NULL, + mailbox varchar(255) NOT NULL, + expires datetime DEFAULT NULL, + data text NOT NULL, + PRIMARY KEY (user_id, mailbox) +); + +CREATE INDEX ix_cache_thread_expires ON cache_thread (expires); + +CREATE TABLE cache_messages ( + user_id integer NOT NULL, + mailbox varchar(255) NOT NULL, + uid integer NOT NULL, + expires datetime DEFAULT NULL, + data text NOT NULL, + flags integer NOT NULL DEFAULT '0', + PRIMARY KEY (user_id, mailbox, uid) +); + +CREATE INDEX ix_cache_messages_expires ON cache_messages (expires); diff --git a/ruty/mails/SQL/sqlite/2014042900.sql b/ruty/mails/SQL/sqlite/2014042900.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/sqlite/2014042900.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/sqlite/2015030800.sql b/ruty/mails/SQL/sqlite/2015030800.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/sqlite/2015030800.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/sqlite/2015111100.sql b/ruty/mails/SQL/sqlite/2015111100.sql new file mode 100644 index 0000000..34df0ea --- /dev/null +++ b/ruty/mails/SQL/sqlite/2015111100.sql @@ -0,0 +1,35 @@ +CREATE TABLE tmp_users ( + user_id integer NOT NULL PRIMARY KEY, + username varchar(128) NOT NULL default '', + mail_host varchar(128) NOT NULL default '', + created datetime NOT NULL default '0000-00-00 00:00:00', + last_login datetime DEFAULT NULL, + failed_login datetime DEFAULT NULL, + failed_login_counter integer DEFAULT NULL, + language varchar(5), + preferences text NOT NULL default '' +); + +INSERT INTO tmp_users (user_id, username, mail_host, created, last_login, language, preferences) + SELECT user_id, username, mail_host, created, last_login, language, preferences FROM users; + +DROP TABLE users; + +CREATE TABLE users ( + user_id integer NOT NULL PRIMARY KEY, + username varchar(128) NOT NULL default '', + mail_host varchar(128) NOT NULL default '', + created datetime NOT NULL default '0000-00-00 00:00:00', + last_login datetime DEFAULT NULL, + failed_login datetime DEFAULT NULL, + failed_login_counter integer DEFAULT NULL, + language varchar(5), + preferences text NOT NULL default '' +); + +INSERT INTO users (user_id, username, mail_host, created, last_login, language, preferences) + SELECT user_id, username, mail_host, created, last_login, language, preferences FROM tmp_users; + +CREATE UNIQUE INDEX ix_users_username ON users(username, mail_host); + +DROP TABLE tmp_users; diff --git a/ruty/mails/SQL/sqlite/2016081200.sql b/ruty/mails/SQL/sqlite/2016081200.sql new file mode 100644 index 0000000..8c3a3f1 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2016081200.sql @@ -0,0 +1,9 @@ +DROP TABLE session; +CREATE TABLE session ( + sess_id varchar(128) NOT NULL PRIMARY KEY, + changed datetime NOT NULL default '0000-00-00 00:00:00', + ip varchar(40) NOT NULL default '', + vars text NOT NULL +); + +CREATE INDEX ix_session_changed ON session (changed); diff --git a/ruty/mails/SQL/sqlite/2016100900.sql b/ruty/mails/SQL/sqlite/2016100900.sql new file mode 100644 index 0000000..e69de29 diff --git a/ruty/mails/SQL/sqlite/2016112200.sql b/ruty/mails/SQL/sqlite/2016112200.sql new file mode 100644 index 0000000..c185493 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2016112200.sql @@ -0,0 +1,21 @@ +DROP TABLE cache; +DROP TABLE cache_shared; + +CREATE TABLE cache ( + user_id integer NOT NULL default 0, + cache_key varchar(128) NOT NULL default '', + expires datetime DEFAULT NULL, + data text NOT NULL, + PRIMARY KEY (user_id, cache_key) +); + +CREATE INDEX ix_cache_expires ON cache(expires); + +CREATE TABLE cache_shared ( + cache_key varchar(255) NOT NULL, + expires datetime DEFAULT NULL, + data text NOT NULL, + PRIMARY KEY (cache_key) +); + +CREATE INDEX ix_cache_shared_expires ON cache_shared(expires); diff --git a/ruty/mails/SQL/sqlite/2018021600.sql b/ruty/mails/SQL/sqlite/2018021600.sql new file mode 100644 index 0000000..c7973cd --- /dev/null +++ b/ruty/mails/SQL/sqlite/2018021600.sql @@ -0,0 +1,9 @@ +CREATE TABLE filestore ( + file_id integer PRIMARY KEY, + user_id integer NOT NULL, + filename varchar(128) NOT NULL, + mtime integer NOT NULL, + data text NOT NULL +); + +CREATE UNIQUE INDEX ix_filestore_user_id ON filestore(user_id, filename); diff --git a/ruty/mails/SQL/sqlite/2018122300.sql b/ruty/mails/SQL/sqlite/2018122300.sql new file mode 100644 index 0000000..7abb098 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2018122300.sql @@ -0,0 +1,29 @@ +CREATE TABLE tmp_filestore ( + file_id integer PRIMARY KEY, + user_id integer NOT NULL, + filename varchar(128) NOT NULL, + mtime integer NOT NULL, + data text NOT NULL +); + +INSERT INTO tmp_filestore (file_id, user_id, filename, mtime, data) + SELECT file_id, user_id, filename, mtime, data FROM filestore; + +DROP TABLE filestore; + +CREATE TABLE filestore ( + file_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL, + context varchar(32) NOT NULL, + filename varchar(128) NOT NULL, + mtime integer NOT NULL, + data text NOT NULL +); + +INSERT INTO filestore (file_id, user_id, filename, mtime, data, context) + SELECT file_id, user_id, filename, mtime, data, 'enigma' FROM tmp_filestore; + +CREATE UNIQUE INDEX ix_filestore_user_id ON filestore(user_id, context, filename); + +DROP TABLE tmp_filestore; + diff --git a/ruty/mails/SQL/sqlite/2019092900.sql b/ruty/mails/SQL/sqlite/2019092900.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/sqlite/2019092900.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/sqlite/2020020100.sql b/ruty/mails/SQL/sqlite/2020020100.sql new file mode 100644 index 0000000..03fdb72 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2020020100.sql @@ -0,0 +1,57 @@ +CREATE TABLE tmp_users ( + user_id integer NOT NULL PRIMARY KEY, + username varchar(128) NOT NULL default '', + mail_host varchar(128) NOT NULL default '', + created datetime NOT NULL default '0000-00-00 00:00:00', + last_login datetime DEFAULT NULL, + failed_login datetime DEFAULT NULL, + failed_login_counter integer DEFAULT NULL, + language varchar(16), + preferences text NOT NULL default '' +); + +INSERT INTO tmp_users (user_id, username, mail_host, created, last_login, failed_login, failed_login_counter, language, preferences) + SELECT user_id, username, mail_host, created, last_login, failed_login, failed_login_counter, language, preferences FROM users; + +DROP TABLE users; + +CREATE TABLE users ( + user_id integer NOT NULL PRIMARY KEY, + username varchar(128) NOT NULL default '', + mail_host varchar(128) NOT NULL default '', + created datetime NOT NULL default '0000-00-00 00:00:00', + last_login datetime DEFAULT NULL, + failed_login datetime DEFAULT NULL, + failed_login_counter integer DEFAULT NULL, + language varchar(16), + preferences text NOT NULL default '' +); + +INSERT INTO users (user_id, username, mail_host, created, last_login, failed_login, failed_login_counter, language, preferences) + SELECT user_id, username, mail_host, created, last_login, failed_login, failed_login_counter, language, preferences FROM tmp_users; + +CREATE UNIQUE INDEX ix_users_username ON users(username, mail_host); + +DROP TABLE tmp_users; + +CREATE TABLE tmp_dictionary ( + user_id integer DEFAULT NULL, + language varchar(16) NOT NULL, + data text NOT NULL +); + +INSERT INTO tmp_dictionary (user_id, language, data) SELECT user_id, language, data FROM dictionary; + +DROP TABLE dictionary; + +CREATE TABLE dictionary ( + user_id integer DEFAULT NULL, + language varchar(16) NOT NULL, + data text NOT NULL +); + +INSERT INTO dictionary (user_id, language, data) SELECT user_id, language, data FROM tmp_dictionary; + +CREATE UNIQUE INDEX ix_dictionary_user_language ON dictionary (user_id, language); + +DROP TABLE tmp_dictionary; diff --git a/ruty/mails/SQL/sqlite/2020020101.sql b/ruty/mails/SQL/sqlite/2020020101.sql new file mode 100644 index 0000000..fe6741a --- /dev/null +++ b/ruty/mails/SQL/sqlite/2020020101.sql @@ -0,0 +1 @@ +-- empty \ No newline at end of file diff --git a/ruty/mails/SQL/sqlite/2020091000.sql b/ruty/mails/SQL/sqlite/2020091000.sql new file mode 100644 index 0000000..2ea3096 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2020091000.sql @@ -0,0 +1,10 @@ +CREATE TABLE collected_addresses ( + address_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL, + changed datetime NOT NULL default '0000-00-00 00:00:00', + name varchar(255) NOT NULL default '', + email varchar(255) NOT NULL, + "type" integer NOT NULL +); + +CREATE UNIQUE INDEX ix_collected_addresses_user_id ON collected_addresses(user_id, "type", email); diff --git a/ruty/mails/SQL/sqlite/2020122900.sql b/ruty/mails/SQL/sqlite/2020122900.sql new file mode 100644 index 0000000..c3fb546 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2020122900.sql @@ -0,0 +1,35 @@ +CREATE TABLE tmp_users ( + user_id integer NOT NULL PRIMARY KEY, + username varchar(128) NOT NULL default '', + mail_host varchar(128) NOT NULL default '', + created datetime NOT NULL default '0000-00-00 00:00:00', + last_login datetime DEFAULT NULL, + failed_login datetime DEFAULT NULL, + failed_login_counter integer DEFAULT NULL, + language varchar(16), + preferences text DEFAULT NULL +); + +INSERT INTO tmp_users (user_id, username, mail_host, created, last_login, failed_login, failed_login_counter, language, preferences) + SELECT user_id, username, mail_host, created, last_login, failed_login, failed_login_counter, language, preferences FROM users; + +DROP TABLE users; + +CREATE TABLE users ( + user_id integer NOT NULL PRIMARY KEY, + username varchar(128) NOT NULL default '', + mail_host varchar(128) NOT NULL default '', + created datetime NOT NULL default '0000-00-00 00:00:00', + last_login datetime DEFAULT NULL, + failed_login datetime DEFAULT NULL, + failed_login_counter integer DEFAULT NULL, + language varchar(16), + preferences text DEFAULT NULL +); + +INSERT INTO users (user_id, username, mail_host, created, last_login, failed_login, failed_login_counter, language, preferences) + SELECT user_id, username, mail_host, created, last_login, failed_login, failed_login_counter, language, preferences FROM tmp_users; + +CREATE UNIQUE INDEX ix_users_username ON users(username, mail_host); + +DROP TABLE tmp_users; diff --git a/ruty/mails/SQL/sqlite/2021081000.sql b/ruty/mails/SQL/sqlite/2021081000.sql new file mode 100644 index 0000000..9fa55d9 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2021081000.sql @@ -0,0 +1,11 @@ +CREATE TABLE responses ( + response_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL default '0', + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(255) NOT NULL, + data text NOT NULL, + is_html tinyint NOT NULL default '0' +); + +CREATE UNIQUE INDEX ix_responses_user_id ON responses(user_id, del); diff --git a/ruty/mails/SQL/sqlite/2021100300.sql b/ruty/mails/SQL/sqlite/2021100300.sql new file mode 100644 index 0000000..2a547a6 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2021100300.sql @@ -0,0 +1,211 @@ +-- Add foreign keys + +DELETE FROM contacts WHERE user_id NOT IN (SELECT user_id FROM users); +ALTER TABLE contacts RENAME TO old_contacts; +DROP INDEX ix_contacts_user_id; +CREATE TABLE contacts ( + contact_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + email text NOT NULL default '', + firstname varchar(128) NOT NULL default '', + surname varchar(128) NOT NULL default '', + vcard text NOT NULL default '', + words text NOT NULL default '' +); +CREATE INDEX ix_contacts_user_id ON contacts(user_id, del); +INSERT INTO contacts (contact_id, user_id, changed, del, name, email, firstname, surname, vcard, words) + SELECT contact_id, user_id, changed, del, name, email, firstname, surname, vcard, words FROM old_contacts; +DROP TABLE old_contacts; + +DELETE FROM contactgroups WHERE user_id NOT IN (SELECT user_id FROM users); +ALTER TABLE contactgroups RENAME TO old_contactgroups; +DROP INDEX ix_contactgroups_user_id; +CREATE TABLE contactgroups ( + contactgroup_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '' +); +CREATE INDEX ix_contactgroups_user_id ON contactgroups(user_id, del); +INSERT INTO contactgroups (contactgroup_id, user_id, changed, del, name) + SELECT contactgroup_id, user_id, changed, del, name FROM old_contactgroups; +DROP TABLE old_contactgroups; + +DELETE FROM contactgroupmembers WHERE contact_id NOT IN (SELECT contact_id FROM contacts); +DELETE FROM contactgroupmembers WHERE contactgroup_id NOT IN (SELECT contactgroup_id FROM contactgroups); +ALTER TABLE contactgroupmembers RENAME TO old_contactgroupmembers; +DROP INDEX ix_contactgroupmembers_contact_id; +CREATE TABLE contactgroupmembers ( + contactgroup_id integer NOT NULL + REFERENCES contactgroups (contactgroup_id) ON DELETE CASCADE ON UPDATE CASCADE, + contact_id integer NOT NULL + REFERENCES contacts (contact_id) ON DELETE CASCADE ON UPDATE CASCADE, + created datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (contactgroup_id, contact_id) +); +INSERT INTO contactgroupmembers (contactgroup_id, contact_id, created) + SELECT contactgroup_id, contact_id, created FROM old_contactgroupmembers; +CREATE INDEX ix_contactgroupmembers_contact_id ON contactgroupmembers (contact_id); +DROP TABLE old_contactgroupmembers; + +DELETE FROM collected_addresses WHERE user_id NOT IN (SELECT user_id FROM users); +ALTER TABLE collected_addresses RENAME TO old_collected_addresses; +DROP INDEX ix_collected_addresses_user_id; +CREATE TABLE collected_addresses ( + address_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed datetime NOT NULL default '0000-00-00 00:00:00', + name varchar(255) NOT NULL default '', + email varchar(255) NOT NULL, + "type" integer NOT NULL +); +CREATE UNIQUE INDEX ix_collected_addresses_user_id ON collected_addresses(user_id, "type", email); +INSERT INTO collected_addresses (address_id, user_id, changed, name, email, "type") + SELECT address_id, user_id, changed, name, email, "type" FROM old_collected_addresses; +DROP TABLE old_collected_addresses; + +DELETE FROM identities WHERE user_id NOT IN (SELECT user_id FROM users); +ALTER TABLE identities RENAME TO old_identities; +DROP INDEX ix_identities_user_id; +DROP INDEX ix_identities_email; +CREATE TABLE identities ( + identity_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + standard tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + organization varchar(128) default '', + email varchar(128) NOT NULL default '', + "reply-to" varchar(128) NOT NULL default '', + bcc varchar(128) NOT NULL default '', + signature text NOT NULL default '', + html_signature tinyint NOT NULL default '0' +); +CREATE INDEX ix_identities_user_id ON identities(user_id, del); +CREATE INDEX ix_identities_email ON identities(email, del); +INSERT INTO identities (identity_id, user_id, changed, del, standard, name, organization, email, "reply-to", bcc, signature, html_signature) + SELECT identity_id, user_id, changed, del, standard, name, organization, email, "reply-to", bcc, signature, html_signature FROM old_identities; +DROP TABLE old_identities; + +DELETE FROM responses WHERE user_id NOT IN (SELECT user_id FROM users); +ALTER TABLE responses RENAME TO old_responses; +DROP INDEX ix_responses_user_id; +CREATE TABLE responses ( + response_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(255) NOT NULL, + data text NOT NULL, + is_html tinyint NOT NULL default '0' +); +CREATE INDEX ix_responses_user_id ON responses(user_id, del); +INSERT INTO responses (response_id, user_id, changed, del, name, data, is_html) + SELECT response_id, user_id, changed, del, name, data, is_html FROM old_responses; +DROP TABLE old_responses; + +DELETE FROM dictionary WHERE user_id IS NOT NULL AND user_id NOT IN (SELECT user_id FROM users); +ALTER TABLE dictionary RENAME TO old_dictionary; +DROP INDEX ix_dictionary_user_language; +CREATE TABLE dictionary ( + user_id integer DEFAULT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + language varchar(16) NOT NULL, + data text NOT NULL +); +CREATE UNIQUE INDEX ix_dictionary_user_language ON dictionary (user_id, language); +INSERT INTO dictionary (user_id, language, data) + SELECT user_id, language, data FROM old_dictionary; +DROP TABLE old_dictionary; + +DELETE FROM searches WHERE user_id NOT IN (SELECT user_id FROM users); +ALTER TABLE searches RENAME TO old_searches; +DROP INDEX ix_searches_user_type_name; +CREATE TABLE searches ( + search_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + "type" smallint NOT NULL DEFAULT '0', + name varchar(128) NOT NULL, + data text NOT NULL +); +CREATE UNIQUE INDEX ix_searches_user_type_name ON searches (user_id, type, name); +INSERT INTO searches (search_id, user_id, "type", name, data) + SELECT search_id, user_id, "type", name, data FROM old_searches; +DROP TABLE old_searches; + +DELETE FROM filestore WHERE user_id NOT IN (SELECT user_id FROM users); +ALTER TABLE filestore RENAME TO old_filestore; +DROP INDEX ix_filestore_user_id; +CREATE TABLE filestore ( + file_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + context varchar(32) NOT NULL, + filename varchar(128) NOT NULL, + mtime integer NOT NULL, + data text NOT NULL +); +CREATE UNIQUE INDEX ix_filestore_user_id ON filestore(user_id, context, filename); +INSERT INTO filestore (file_id, user_id, context, filename, mtime, data) + SELECT file_id, user_id, context, filename, mtime, data FROM old_filestore; +DROP TABLE old_filestore; + + +DROP TABLE cache; +CREATE TABLE cache ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + cache_key varchar(128) NOT NULL default '', + expires datetime DEFAULT NULL, + data text NOT NULL, + PRIMARY KEY (user_id, cache_key) +); +CREATE INDEX ix_cache_expires ON cache(expires); + +DROP TABLE cache_index; +CREATE TABLE cache_index ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + expires datetime DEFAULT NULL, + valid smallint NOT NULL DEFAULT '0', + data text NOT NULL, + PRIMARY KEY (user_id, mailbox) +); +CREATE INDEX ix_cache_index_expires ON cache_index (expires); + +DROP TABLE cache_thread; +CREATE TABLE cache_thread ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + expires datetime DEFAULT NULL, + data text NOT NULL, + PRIMARY KEY (user_id, mailbox) +); +CREATE INDEX ix_cache_thread_expires ON cache_thread (expires); + +DROP TABLE cache_messages; +CREATE TABLE cache_messages ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + uid integer NOT NULL, + expires datetime DEFAULT NULL, + data text NOT NULL, + flags integer NOT NULL DEFAULT '0', + PRIMARY KEY (user_id, mailbox, uid) +); + +CREATE INDEX ix_cache_messages_expires ON cache_messages (expires); diff --git a/ruty/mails/SQL/sqlite/2022081200.sql b/ruty/mails/SQL/sqlite/2022081200.sql new file mode 100644 index 0000000..d379fc5 --- /dev/null +++ b/ruty/mails/SQL/sqlite/2022081200.sql @@ -0,0 +1,2 @@ +DROP INDEX ix_responses_user_id; +CREATE INDEX ix_responses_user_id ON responses(user_id, del); diff --git a/ruty/mails/skins/elastic/README.md b/ruty/mails/skins/elastic/README.md new file mode 100644 index 0000000..8c663cd --- /dev/null +++ b/ruty/mails/skins/elastic/README.md @@ -0,0 +1,119 @@ +Roundcube Webmail Skin "Elastic" +================================ + +This skin package contains a theme for the Roundcube Webmail +software. It can be used, modified and redistributed according to +the terms described in the LICENSE section. + +For information about building or modifying Roundcube skins please visit +https://github.com/roundcube/roundcubemail/wiki/Skins + + +LICENSE +------- + +The contents of this folder are subject to the Creative Commons +Attribution-ShareAlike License. It is allowed to copy, distribute, +transmit and to adapt the work by keeping credits to the original +authors in the README.md file. +See http://creativecommons.org/licenses/by-sa/3.0/ for details. + +This folder also contains code licensed separately: +- Bootstrap Framework 4 from https://github.com/twbs/bootstrap +- FontAwesome 5 fonts from https://fontawesome.com/ +- Roboto font from https://google-webfonts-helper.herokuapp.com/fonts/roboto?subsets=cyrillic,latin-ext,cyrillic-ext,latin,greek,greek-ext + + +INSTALLATION +------------ + +All styles are written using LESS syntax. Thus it needs to be compiled +using the `lessc` (>= 2.5.2) command line tool. This comes with the `nodejs-less` +RPM package or using `npm install less` which depend on nodejs. +``` + $ lessc --clean-css="--s1 --advanced" styles/styles.less > styles/styles.min.css + $ lessc --clean-css="--s1 --advanced" styles/print.less > styles/print.min.css + $ lessc --clean-css="--s1 --advanced" styles/embed.less > styles/embed.min.css +``` +(`--clean-css="--s1 --advanced"` minifies the css, requires the clean-css Less plugin. +The plugin can be installed using `npm install less-plugin-clean-css`) + +References to image files from the included CSS files can be appended +with cache-buster marks to avoid browser caching issues after updating. + +Run `bin/updatecss.sh --dir skins/elastic` before packaging the skin +or after installing it on the destination system. + + +FOR DEVELOPERS +-------------- + +- Supported browsers: IE11+, Edge, Last 2 versions for Chrome/Firefox/Safari, + Android Browser 5+, iOS Safari 9+. + +- Skin color palette changes and other css modifications can be done + via _styles.less and _variables.less files. Where you can overwrite all + variables and add custom styles. + +- Minimum supported screen width is 240px (note that even if the device screen + resolution is e.g.320x372 changing the text size in device settings will reduce + the resolution) + +- Every page (which is not a frame) has following required structure: +``` + +
+
+
+
+
+
+ +``` + where `#layout-sidebar` and `#layout-list` are optional. Which element of the `#layout` will be displayed + as a main view on mobile devices can be defined by adding `selected` class to it. + +- The `` element will receive special classes that will be updated on resize + or orientation change: + - `touch`: A touch device, screen width <= 1024px, + - `layout-large`: Screen width > 1200px, + - `layout-normal`: Screen width <= 1200px and >= 768px, + - `layout-small`: Screen width < 768px and > 480px, + - `layout-phone`: Screen width <= 480px. + + Frames will have the same classes applied as their parent windows. + +- Every button, that is not + + +
+

+ +
+ + + + +
+

+ +

+
+ +
+
+ + +
+

+ +
+ +
+

+ +
+ +
+

+ +
+ +
+

+ +
+ +
+

+ +
+ + diff --git a/ruty/mails/skins/elastic/templates/bounce.html b/ruty/mails/skins/elastic/templates/bounce.html new file mode 100644 index 0000000..f9fbf02 --- /dev/null +++ b/ruty/mails/skins/elastic/templates/bounce.html @@ -0,0 +1,74 @@ + + +

+ +
+ + +
+

+
+
+ +
+
+ + + " tabindex="1"> +
+
+
+
+ +
+
+ + + " tabindex="1"> + +
+
+
+ + +
+ +
+ +
+ +
+
+ + +
+ +
+

+ +
+ + diff --git a/ruty/mails/skins/elastic/templates/compose.html b/ruty/mails/skins/elastic/templates/compose.html new file mode 100644 index 0000000..0f7cad8 --- /dev/null +++ b/ruty/mails/skins/elastic/templates/compose.html @@ -0,0 +1,286 @@ + + + + + + + + + +

+ + + + +
+

+
+ + +
+ + +
+
+ + + +
+

+
+
+ +
+
+ + + " tabindex="1"> + +
+
+
+
+ +
+ +
+
+ + + + +
+ +
+ +
+
+
+
+ +
+ + + +
+ +
+ +
+ +
+
+
+
+ + + +
+ +
+

+ +
+ +
+

+ +
+ +
+

+ +
+ +
+ +
+ +
+
+ +
+ + +
+ +
+
+ + diff --git a/ruty/mails/skins/elastic/templates/contact.html b/ruty/mails/skins/elastic/templates/contact.html new file mode 100644 index 0000000..3df09b8 --- /dev/null +++ b/ruty/mails/skins/elastic/templates/contact.html @@ -0,0 +1,23 @@ + + +

+ +
+
+
+ +
+ +
+
+ +
+
+ +
+ +
+ + diff --git a/ruty/mails/skins/elastic/templates/contactedit.html b/ruty/mails/skins/elastic/templates/contactedit.html new file mode 100644 index 0000000..3842208 --- /dev/null +++ b/ruty/mails/skins/elastic/templates/contactedit.html @@ -0,0 +1,29 @@ + + +

+ + +
+
+ + + + + +
+ +
+
+ +
+ + +
+ +
+ + + + diff --git a/ruty/mails/skins/elastic/templates/contactimport.html b/ruty/mails/skins/elastic/templates/contactimport.html new file mode 100644 index 0000000..b7f30ee --- /dev/null +++ b/ruty/mails/skins/elastic/templates/contactimport.html @@ -0,0 +1,9 @@ + + +

:

+ +
+ +
+ + diff --git a/ruty/mails/skins/elastic/templates/contactprint.html b/ruty/mails/skins/elastic/templates/contactprint.html new file mode 100644 index 0000000..ffa16b5 --- /dev/null +++ b/ruty/mails/skins/elastic/templates/contactprint.html @@ -0,0 +1,19 @@ + + +