diff --git a/simplexmq.cabal b/simplexmq.cabal index 40da60b49..189c6d831 100644 --- a/simplexmq.cabal +++ b/simplexmq.cabal @@ -100,6 +100,7 @@ library Simplex.Messaging.Agent.Store.DB Simplex.Messaging.Agent.Store.Interface Simplex.Messaging.Agent.Store.Migrations + Simplex.Messaging.Agent.Store.Migrations.App Simplex.Messaging.Agent.Store.Shared Simplex.Messaging.Agent.TRcvQueues Simplex.Messaging.Client @@ -151,6 +152,7 @@ library Simplex.Messaging.Agent.Store.Postgres.Common Simplex.Messaging.Agent.Store.Postgres.DB Simplex.Messaging.Agent.Store.Postgres.Migrations + Simplex.Messaging.Agent.Store.Postgres.Migrations.App Simplex.Messaging.Agent.Store.Postgres.Migrations.M20241210_initial Simplex.Messaging.Agent.Store.Postgres.Migrations.M20250203_msg_bodies if !flag(client_library) @@ -162,6 +164,7 @@ library Simplex.Messaging.Agent.Store.SQLite.Common Simplex.Messaging.Agent.Store.SQLite.DB Simplex.Messaging.Agent.Store.SQLite.Migrations + Simplex.Messaging.Agent.Store.SQLite.Migrations.App Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220101_initial Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220301_snd_queue_keys Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220322_notifications @@ -273,7 +276,6 @@ library , hourglass ==0.2.* , http-types ==0.12.* , http2 >=4.2.2 && <4.3 - , ini ==0.4.1 , iproute ==1.7.* , iso8601-time ==0.1.* , memory ==0.18.* @@ -282,13 +284,10 @@ library , network-info ==0.2.* , network-transport ==0.5.6 , network-udp ==0.0.* - , optparse-applicative >=0.15 && <0.17 - , process ==1.6.* , random >=1.1 && <1.3 , simple-logger ==0.1.* , socks ==0.6.* , stm ==2.5.* - , temporary ==1.3.* , time ==1.12.* , time-manager ==0.0.* , tls >=1.9.0 && <1.10 @@ -304,6 +303,10 @@ library build-depends: case-insensitive ==1.2.* , hashable ==1.4.* + , ini ==0.4.1 + , optparse-applicative >=0.15 && <0.17 + , process ==1.6.* + , temporary ==1.3.* , websockets ==0.12.* if flag(client_postgres) build-depends: diff --git a/src/Simplex/Messaging/Agent/Store.hs b/src/Simplex/Messaging/Agent/Store.hs index b29acc6a6..5449ce848 100644 --- a/src/Simplex/Messaging/Agent/Store.hs +++ b/src/Simplex/Messaging/Agent/Store.hs @@ -30,7 +30,8 @@ import Data.Type.Equality import Simplex.Messaging.Agent.Protocol import Simplex.Messaging.Agent.RetryInterval (RI2State) import Simplex.Messaging.Agent.Store.Common -import Simplex.Messaging.Agent.Store.Interface (DBOpts, appMigrations, createDBStore) +import Simplex.Messaging.Agent.Store.Interface (DBOpts, createDBStore) +import Simplex.Messaging.Agent.Store.Migrations.App (appMigrations) import Simplex.Messaging.Agent.Store.Shared (MigrationConfirmation (..), MigrationError (..)) import qualified Simplex.Messaging.Crypto as C import Simplex.Messaging.Crypto.Ratchet (MsgEncryptKeyX448, PQEncryption, PQSupport, RatchetX448) diff --git a/src/Simplex/Messaging/Agent/Store/Migrations/App.hs b/src/Simplex/Messaging/Agent/Store/Migrations/App.hs new file mode 100644 index 000000000..55b5cb8a5 --- /dev/null +++ b/src/Simplex/Messaging/Agent/Store/Migrations/App.hs @@ -0,0 +1,14 @@ +{-# LANGUAGE CPP #-} + +module Simplex.Messaging.Agent.Store.Migrations.App +#if defined(dbPostgres) + ( module Simplex.Messaging.Agent.Store.Postgres.Migrations.App, + ) + where +import Simplex.Messaging.Agent.Store.Postgres.Migrations.App +#else + ( module Simplex.Messaging.Agent.Store.SQLite.Migrations.App, + ) + where +import Simplex.Messaging.Agent.Store.SQLite.Migrations.App +#endif diff --git a/src/Simplex/Messaging/Agent/Store/Postgres.hs b/src/Simplex/Messaging/Agent/Store/Postgres.hs index cda905a25..ec4527af3 100644 --- a/src/Simplex/Messaging/Agent/Store/Postgres.hs +++ b/src/Simplex/Messaging/Agent/Store/Postgres.hs @@ -6,7 +6,6 @@ module Simplex.Messaging.Agent.Store.Postgres ( DBOpts (..), - Migrations.appMigrations, Migrations.getCurrentMigrations, createDBStore, closeDBStore, diff --git a/src/Simplex/Messaging/Agent/Store/Postgres/Migrations.hs b/src/Simplex/Messaging/Agent/Store/Postgres/Migrations.hs index 6eb01dc4f..daa0c73f1 100644 --- a/src/Simplex/Messaging/Agent/Store/Postgres/Migrations.hs +++ b/src/Simplex/Messaging/Agent/Store/Postgres/Migrations.hs @@ -5,16 +5,13 @@ {-# LANGUAGE TupleSections #-} module Simplex.Messaging.Agent.Store.Postgres.Migrations - ( appMigrations, - initialize, + ( initialize, run, getCurrentMigrations, ) where import Control.Monad (void) -import Data.List (sortOn) -import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Encoding as TE import Data.Time.Clock (getCurrentTime) @@ -24,23 +21,9 @@ import qualified Database.PostgreSQL.Simple as PSQL import Database.PostgreSQL.Simple.Internal (Connection (..)) import Database.PostgreSQL.Simple.SqlQQ (sql) import Simplex.Messaging.Agent.Store.Postgres.Common -import Simplex.Messaging.Agent.Store.Postgres.Migrations.M20241210_initial -import Simplex.Messaging.Agent.Store.Postgres.Migrations.M20250203_msg_bodies import Simplex.Messaging.Agent.Store.Shared import UnliftIO.MVar -schemaMigrations :: [(String, Text, Maybe Text)] -schemaMigrations = - [ ("20241210_initial", m20241210_initial, Nothing), - ("20250203_msg_bodies", m20250203_msg_bodies, Just down_m20250203_msg_bodies) - ] - --- | The list of migrations in ascending order by date -appMigrations :: [Migration] -appMigrations = sortOn name $ map migration schemaMigrations - where - migration (name, up, down) = Migration {name, up, down = down} - initialize :: DBStore -> IO () initialize st = withTransaction' st $ \db -> void $ diff --git a/src/Simplex/Messaging/Agent/Store/Postgres/Migrations/App.hs b/src/Simplex/Messaging/Agent/Store/Postgres/Migrations/App.hs new file mode 100644 index 000000000..e47fe432a --- /dev/null +++ b/src/Simplex/Messaging/Agent/Store/Postgres/Migrations/App.hs @@ -0,0 +1,21 @@ +{-# LANGUAGE NamedFieldPuns #-} + +module Simplex.Messaging.Agent.Store.Postgres.Migrations.App (appMigrations) where + +import Data.List (sortOn) +import Data.Text (Text) +import Simplex.Messaging.Agent.Store.Postgres.Migrations.M20241210_initial +import Simplex.Messaging.Agent.Store.Postgres.Migrations.M20250203_msg_bodies +import Simplex.Messaging.Agent.Store.Shared (Migration (..)) + +schemaMigrations :: [(String, Text, Maybe Text)] +schemaMigrations = + [ ("20241210_initial", m20241210_initial, Nothing), + ("20250203_msg_bodies", m20250203_msg_bodies, Just down_m20250203_msg_bodies) + ] + +-- | The list of migrations in ascending order by date +appMigrations :: [Migration] +appMigrations = sortOn name $ map migration schemaMigrations + where + migration (name, up, down) = Migration {name, up, down = down} diff --git a/src/Simplex/Messaging/Agent/Store/SQLite.hs b/src/Simplex/Messaging/Agent/Store/SQLite.hs index 0f3e81273..72792ba65 100644 --- a/src/Simplex/Messaging/Agent/Store/SQLite.hs +++ b/src/Simplex/Messaging/Agent/Store/SQLite.hs @@ -26,7 +26,6 @@ module Simplex.Messaging.Agent.Store.SQLite ( DBOpts (..), - Migrations.appMigrations, Migrations.getCurrentMigrations, createDBStore, closeDBStore, diff --git a/src/Simplex/Messaging/Agent/Store/SQLite/Migrations.hs b/src/Simplex/Messaging/Agent/Store/SQLite/Migrations.hs index 4d4e0d554..fb0523d08 100644 --- a/src/Simplex/Messaging/Agent/Store/SQLite/Migrations.hs +++ b/src/Simplex/Messaging/Agent/Store/SQLite/Migrations.hs @@ -8,15 +8,13 @@ {-# LANGUAGE TupleSections #-} module Simplex.Messaging.Agent.Store.SQLite.Migrations - ( appMigrations, - initialize, + ( initialize, run, getCurrentMigrations, ) where import Control.Monad (forM_, when) -import Data.List (sortOn) import Data.List.NonEmpty (NonEmpty) import qualified Data.Map.Strict as M import Data.Text (Text) @@ -29,96 +27,11 @@ import qualified Database.SQLite3 as SQLite3 import Simplex.Messaging.Agent.Protocol (extraSMPServerHosts) import qualified Simplex.Messaging.Agent.Store.DB as DB import Simplex.Messaging.Agent.Store.SQLite.Common -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220101_initial -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220301_snd_queue_keys -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220322_notifications -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220608_v2 -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220625_v2_ntf_mode -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220811_onion_hosts -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220817_connection_ntfs -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220905_commands -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220915_connection_queues import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230110_users -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230117_fkey_indexes -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230120_delete_errors -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230217_server_key_hash -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230223_files -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230320_retry_state -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230401_snd_files -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230510_files_pending_replicas_indexes -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230516_encrypted_rcv_message_hashes -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230531_switch_status -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230615_ratchet_sync -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230701_delivery_receipts -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230720_delete_expired_messages -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230722_indexes -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230814_indexes -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230829_crypto_files -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20231222_command_created_at -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20231225_failed_work_items -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240121_message_delivery_indexes -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240124_file_redirect -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240223_connections_wait_delivery -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240225_ratchet_kem -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240417_rcv_files_approved_relays -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240624_snd_secure -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240702_servers_stats -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240930_ntf_tokens_to_delete -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20241007_rcv_queues_last_broker_ts -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20241224_ratchet_e2e_snd_params -import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20250203_msg_bodies import Simplex.Messaging.Agent.Store.Shared import Simplex.Messaging.Encoding.String import Simplex.Messaging.Transport.Client (TransportHost) -schemaMigrations :: [(String, Query, Maybe Query)] -schemaMigrations = - [ ("20220101_initial", m20220101_initial, Nothing), - ("20220301_snd_queue_keys", m20220301_snd_queue_keys, Nothing), - ("20220322_notifications", m20220322_notifications, Nothing), - ("20220607_v2", m20220608_v2, Nothing), - ("m20220625_v2_ntf_mode", m20220625_v2_ntf_mode, Nothing), - ("m20220811_onion_hosts", m20220811_onion_hosts, Nothing), - ("m20220817_connection_ntfs", m20220817_connection_ntfs, Nothing), - ("m20220905_commands", m20220905_commands, Nothing), - ("m20220915_connection_queues", m20220915_connection_queues, Nothing), - ("m20230110_users", m20230110_users, Nothing), - ("m20230117_fkey_indexes", m20230117_fkey_indexes, Nothing), - ("m20230120_delete_errors", m20230120_delete_errors, Nothing), - ("m20230217_server_key_hash", m20230217_server_key_hash, Nothing), - ("m20230223_files", m20230223_files, Just down_m20230223_files), - ("m20230320_retry_state", m20230320_retry_state, Just down_m20230320_retry_state), - ("m20230401_snd_files", m20230401_snd_files, Just down_m20230401_snd_files), - ("m20230510_files_pending_replicas_indexes", m20230510_files_pending_replicas_indexes, Just down_m20230510_files_pending_replicas_indexes), - ("m20230516_encrypted_rcv_message_hashes", m20230516_encrypted_rcv_message_hashes, Just down_m20230516_encrypted_rcv_message_hashes), - ("m20230531_switch_status", m20230531_switch_status, Just down_m20230531_switch_status), - ("m20230615_ratchet_sync", m20230615_ratchet_sync, Just down_m20230615_ratchet_sync), - ("m20230701_delivery_receipts", m20230701_delivery_receipts, Just down_m20230701_delivery_receipts), - ("m20230720_delete_expired_messages", m20230720_delete_expired_messages, Just down_m20230720_delete_expired_messages), - ("m20230722_indexes", m20230722_indexes, Just down_m20230722_indexes), - ("m20230814_indexes", m20230814_indexes, Just down_m20230814_indexes), - ("m20230829_crypto_files", m20230829_crypto_files, Just down_m20230829_crypto_files), - ("m20231222_command_created_at", m20231222_command_created_at, Just down_m20231222_command_created_at), - ("m20231225_failed_work_items", m20231225_failed_work_items, Just down_m20231225_failed_work_items), - ("m20240121_message_delivery_indexes", m20240121_message_delivery_indexes, Just down_m20240121_message_delivery_indexes), - ("m20240124_file_redirect", m20240124_file_redirect, Just down_m20240124_file_redirect), - ("m20240223_connections_wait_delivery", m20240223_connections_wait_delivery, Just down_m20240223_connections_wait_delivery), - ("m20240225_ratchet_kem", m20240225_ratchet_kem, Just down_m20240225_ratchet_kem), - ("m20240417_rcv_files_approved_relays", m20240417_rcv_files_approved_relays, Just down_m20240417_rcv_files_approved_relays), - ("m20240624_snd_secure", m20240624_snd_secure, Just down_m20240624_snd_secure), - ("m20240702_servers_stats", m20240702_servers_stats, Just down_m20240702_servers_stats), - ("m20240930_ntf_tokens_to_delete", m20240930_ntf_tokens_to_delete, Just down_m20240930_ntf_tokens_to_delete), - ("m20241007_rcv_queues_last_broker_ts", m20241007_rcv_queues_last_broker_ts, Just down_m20241007_rcv_queues_last_broker_ts), - ("m20241224_ratchet_e2e_snd_params", m20241224_ratchet_e2e_snd_params, Just down_m20241224_ratchet_e2e_snd_params), - ("m20250203_msg_bodies", m20250203_msg_bodies, Just down_m20250203_msg_bodies) - ] - --- | The list of migrations in ascending order by date -appMigrations :: [Migration] -appMigrations = sortOn name $ map migration schemaMigrations - where - migration (name, up, down) = Migration {name, up = fromQuery up, down = fromQuery <$> down} - getCurrentMigrations :: DB.Connection -> IO [Migration] getCurrentMigrations DB.Connection {DB.conn} = map toMigration <$> SQL.query_ conn "SELECT name, down FROM migrations ORDER BY name ASC;" where diff --git a/src/Simplex/Messaging/Agent/Store/SQLite/Migrations/App.hs b/src/Simplex/Messaging/Agent/Store/SQLite/Migrations/App.hs new file mode 100644 index 000000000..8c885a9e5 --- /dev/null +++ b/src/Simplex/Messaging/Agent/Store/SQLite/Migrations/App.hs @@ -0,0 +1,93 @@ +{-# LANGUAGE NamedFieldPuns #-} + +module Simplex.Messaging.Agent.Store.SQLite.Migrations.App (appMigrations) where + +import Data.List (sortOn) +import Database.SQLite.Simple (Query (..)) +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220101_initial +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220301_snd_queue_keys +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220322_notifications +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220608_v2 +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220625_v2_ntf_mode +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220811_onion_hosts +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220817_connection_ntfs +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220905_commands +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220915_connection_queues +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230110_users +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230117_fkey_indexes +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230120_delete_errors +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230217_server_key_hash +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230223_files +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230320_retry_state +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230401_snd_files +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230510_files_pending_replicas_indexes +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230516_encrypted_rcv_message_hashes +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230531_switch_status +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230615_ratchet_sync +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230701_delivery_receipts +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230720_delete_expired_messages +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230722_indexes +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230814_indexes +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230829_crypto_files +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20231222_command_created_at +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20231225_failed_work_items +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240121_message_delivery_indexes +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240124_file_redirect +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240223_connections_wait_delivery +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240225_ratchet_kem +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240417_rcv_files_approved_relays +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240624_snd_secure +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240702_servers_stats +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240930_ntf_tokens_to_delete +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20241007_rcv_queues_last_broker_ts +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20241224_ratchet_e2e_snd_params +import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20250203_msg_bodies +import Simplex.Messaging.Agent.Store.Shared (Migration (..)) + +schemaMigrations :: [(String, Query, Maybe Query)] +schemaMigrations = + [ ("20220101_initial", m20220101_initial, Nothing), + ("20220301_snd_queue_keys", m20220301_snd_queue_keys, Nothing), + ("20220322_notifications", m20220322_notifications, Nothing), + ("20220607_v2", m20220608_v2, Nothing), + ("m20220625_v2_ntf_mode", m20220625_v2_ntf_mode, Nothing), + ("m20220811_onion_hosts", m20220811_onion_hosts, Nothing), + ("m20220817_connection_ntfs", m20220817_connection_ntfs, Nothing), + ("m20220905_commands", m20220905_commands, Nothing), + ("m20220915_connection_queues", m20220915_connection_queues, Nothing), + ("m20230110_users", m20230110_users, Nothing), + ("m20230117_fkey_indexes", m20230117_fkey_indexes, Nothing), + ("m20230120_delete_errors", m20230120_delete_errors, Nothing), + ("m20230217_server_key_hash", m20230217_server_key_hash, Nothing), + ("m20230223_files", m20230223_files, Just down_m20230223_files), + ("m20230320_retry_state", m20230320_retry_state, Just down_m20230320_retry_state), + ("m20230401_snd_files", m20230401_snd_files, Just down_m20230401_snd_files), + ("m20230510_files_pending_replicas_indexes", m20230510_files_pending_replicas_indexes, Just down_m20230510_files_pending_replicas_indexes), + ("m20230516_encrypted_rcv_message_hashes", m20230516_encrypted_rcv_message_hashes, Just down_m20230516_encrypted_rcv_message_hashes), + ("m20230531_switch_status", m20230531_switch_status, Just down_m20230531_switch_status), + ("m20230615_ratchet_sync", m20230615_ratchet_sync, Just down_m20230615_ratchet_sync), + ("m20230701_delivery_receipts", m20230701_delivery_receipts, Just down_m20230701_delivery_receipts), + ("m20230720_delete_expired_messages", m20230720_delete_expired_messages, Just down_m20230720_delete_expired_messages), + ("m20230722_indexes", m20230722_indexes, Just down_m20230722_indexes), + ("m20230814_indexes", m20230814_indexes, Just down_m20230814_indexes), + ("m20230829_crypto_files", m20230829_crypto_files, Just down_m20230829_crypto_files), + ("m20231222_command_created_at", m20231222_command_created_at, Just down_m20231222_command_created_at), + ("m20231225_failed_work_items", m20231225_failed_work_items, Just down_m20231225_failed_work_items), + ("m20240121_message_delivery_indexes", m20240121_message_delivery_indexes, Just down_m20240121_message_delivery_indexes), + ("m20240124_file_redirect", m20240124_file_redirect, Just down_m20240124_file_redirect), + ("m20240223_connections_wait_delivery", m20240223_connections_wait_delivery, Just down_m20240223_connections_wait_delivery), + ("m20240225_ratchet_kem", m20240225_ratchet_kem, Just down_m20240225_ratchet_kem), + ("m20240417_rcv_files_approved_relays", m20240417_rcv_files_approved_relays, Just down_m20240417_rcv_files_approved_relays), + ("m20240624_snd_secure", m20240624_snd_secure, Just down_m20240624_snd_secure), + ("m20240702_servers_stats", m20240702_servers_stats, Just down_m20240702_servers_stats), + ("m20240930_ntf_tokens_to_delete", m20240930_ntf_tokens_to_delete, Just down_m20240930_ntf_tokens_to_delete), + ("m20241007_rcv_queues_last_broker_ts", m20241007_rcv_queues_last_broker_ts, Just down_m20241007_rcv_queues_last_broker_ts), + ("m20241224_ratchet_e2e_snd_params", m20241224_ratchet_e2e_snd_params, Just down_m20241224_ratchet_e2e_snd_params), + ("m20250203_msg_bodies", m20250203_msg_bodies, Just down_m20250203_msg_bodies) + ] + +-- | The list of migrations in ascending order by date +appMigrations :: [Migration] +appMigrations = sortOn name $ map migration schemaMigrations + where + migration (name, up, down) = Migration {name, up = fromQuery up, down = fromQuery <$> down} diff --git a/tests/AgentTests/SQLiteTests.hs b/tests/AgentTests/SQLiteTests.hs index 04c530d97..5ead81613 100644 --- a/tests/AgentTests/SQLiteTests.hs +++ b/tests/AgentTests/SQLiteTests.hs @@ -42,6 +42,7 @@ import Simplex.Messaging.Agent.Client () import Simplex.Messaging.Agent.Protocol import Simplex.Messaging.Agent.Store import Simplex.Messaging.Agent.Store.AgentStore +import Simplex.Messaging.Agent.Store.Migrations.App (appMigrations) import Simplex.Messaging.Agent.Store.SQLite import Simplex.Messaging.Agent.Store.SQLite.Common (DBStore (..), withTransaction') import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB diff --git a/tests/AgentTests/SchemaDump.hs b/tests/AgentTests/SchemaDump.hs index ed8668de2..0b6f4ebc1 100644 --- a/tests/AgentTests/SchemaDump.hs +++ b/tests/AgentTests/SchemaDump.hs @@ -10,6 +10,7 @@ import Data.List (dropWhileEnd) import Data.Maybe (fromJust, isJust) import Database.SQLite.Simple (Only (..)) import qualified Database.SQLite.Simple as SQL +import Simplex.Messaging.Agent.Store.Migrations.App (appMigrations) import Simplex.Messaging.Agent.Store.SQLite import Simplex.Messaging.Agent.Store.SQLite.Common (withTransaction') import Simplex.Messaging.Agent.Store.SQLite.DB (TrackQueries (..))