88{-# LANGUAGE TupleSections #-}
99
1010module Simplex.Messaging.Agent.Store.SQLite.Migrations
11- ( appMigrations ,
12- initialize ,
11+ ( initialize ,
1312 run ,
1413 getCurrentMigrations ,
1514 )
1615where
1716
1817import Control.Monad (forM_ , when )
19- import Data.List (sortOn )
2018import Data.List.NonEmpty (NonEmpty )
2119import qualified Data.Map.Strict as M
2220import Data.Text (Text )
@@ -29,96 +27,11 @@ import qualified Database.SQLite3 as SQLite3
2927import Simplex.Messaging.Agent.Protocol (extraSMPServerHosts )
3028import qualified Simplex.Messaging.Agent.Store.DB as DB
3129import Simplex.Messaging.Agent.Store.SQLite.Common
32- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220101_initial
33- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220301_snd_queue_keys
34- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220322_notifications
35- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220608_v2
36- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220625_v2_ntf_mode
37- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220811_onion_hosts
38- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220817_connection_ntfs
39- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220905_commands
40- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220915_connection_queues
4130import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230110_users
42- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230117_fkey_indexes
43- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230120_delete_errors
44- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230217_server_key_hash
45- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230223_files
46- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230320_retry_state
47- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230401_snd_files
48- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230510_files_pending_replicas_indexes
49- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230516_encrypted_rcv_message_hashes
50- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230531_switch_status
51- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230615_ratchet_sync
52- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230701_delivery_receipts
53- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230720_delete_expired_messages
54- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230722_indexes
55- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230814_indexes
56- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20230829_crypto_files
57- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20231222_command_created_at
58- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20231225_failed_work_items
59- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240121_message_delivery_indexes
60- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240124_file_redirect
61- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240223_connections_wait_delivery
62- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240225_ratchet_kem
63- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240417_rcv_files_approved_relays
64- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240624_snd_secure
65- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240702_servers_stats
66- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20240930_ntf_tokens_to_delete
67- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20241007_rcv_queues_last_broker_ts
68- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20241224_ratchet_e2e_snd_params
69- import Simplex.Messaging.Agent.Store.SQLite.Migrations.M20250203_msg_bodies
7031import Simplex.Messaging.Agent.Store.Shared
7132import Simplex.Messaging.Encoding.String
7233import Simplex.Messaging.Transport.Client (TransportHost )
7334
74- schemaMigrations :: [(String , Query , Maybe Query )]
75- schemaMigrations =
76- [ (" 20220101_initial" , m20220101_initial, Nothing ),
77- (" 20220301_snd_queue_keys" , m20220301_snd_queue_keys, Nothing ),
78- (" 20220322_notifications" , m20220322_notifications, Nothing ),
79- (" 20220607_v2" , m20220608_v2, Nothing ),
80- (" m20220625_v2_ntf_mode" , m20220625_v2_ntf_mode, Nothing ),
81- (" m20220811_onion_hosts" , m20220811_onion_hosts, Nothing ),
82- (" m20220817_connection_ntfs" , m20220817_connection_ntfs, Nothing ),
83- (" m20220905_commands" , m20220905_commands, Nothing ),
84- (" m20220915_connection_queues" , m20220915_connection_queues, Nothing ),
85- (" m20230110_users" , m20230110_users, Nothing ),
86- (" m20230117_fkey_indexes" , m20230117_fkey_indexes, Nothing ),
87- (" m20230120_delete_errors" , m20230120_delete_errors, Nothing ),
88- (" m20230217_server_key_hash" , m20230217_server_key_hash, Nothing ),
89- (" m20230223_files" , m20230223_files, Just down_m20230223_files),
90- (" m20230320_retry_state" , m20230320_retry_state, Just down_m20230320_retry_state),
91- (" m20230401_snd_files" , m20230401_snd_files, Just down_m20230401_snd_files),
92- (" m20230510_files_pending_replicas_indexes" , m20230510_files_pending_replicas_indexes, Just down_m20230510_files_pending_replicas_indexes),
93- (" m20230516_encrypted_rcv_message_hashes" , m20230516_encrypted_rcv_message_hashes, Just down_m20230516_encrypted_rcv_message_hashes),
94- (" m20230531_switch_status" , m20230531_switch_status, Just down_m20230531_switch_status),
95- (" m20230615_ratchet_sync" , m20230615_ratchet_sync, Just down_m20230615_ratchet_sync),
96- (" m20230701_delivery_receipts" , m20230701_delivery_receipts, Just down_m20230701_delivery_receipts),
97- (" m20230720_delete_expired_messages" , m20230720_delete_expired_messages, Just down_m20230720_delete_expired_messages),
98- (" m20230722_indexes" , m20230722_indexes, Just down_m20230722_indexes),
99- (" m20230814_indexes" , m20230814_indexes, Just down_m20230814_indexes),
100- (" m20230829_crypto_files" , m20230829_crypto_files, Just down_m20230829_crypto_files),
101- (" m20231222_command_created_at" , m20231222_command_created_at, Just down_m20231222_command_created_at),
102- (" m20231225_failed_work_items" , m20231225_failed_work_items, Just down_m20231225_failed_work_items),
103- (" m20240121_message_delivery_indexes" , m20240121_message_delivery_indexes, Just down_m20240121_message_delivery_indexes),
104- (" m20240124_file_redirect" , m20240124_file_redirect, Just down_m20240124_file_redirect),
105- (" m20240223_connections_wait_delivery" , m20240223_connections_wait_delivery, Just down_m20240223_connections_wait_delivery),
106- (" m20240225_ratchet_kem" , m20240225_ratchet_kem, Just down_m20240225_ratchet_kem),
107- (" m20240417_rcv_files_approved_relays" , m20240417_rcv_files_approved_relays, Just down_m20240417_rcv_files_approved_relays),
108- (" m20240624_snd_secure" , m20240624_snd_secure, Just down_m20240624_snd_secure),
109- (" m20240702_servers_stats" , m20240702_servers_stats, Just down_m20240702_servers_stats),
110- (" m20240930_ntf_tokens_to_delete" , m20240930_ntf_tokens_to_delete, Just down_m20240930_ntf_tokens_to_delete),
111- (" m20241007_rcv_queues_last_broker_ts" , m20241007_rcv_queues_last_broker_ts, Just down_m20241007_rcv_queues_last_broker_ts),
112- (" m20241224_ratchet_e2e_snd_params" , m20241224_ratchet_e2e_snd_params, Just down_m20241224_ratchet_e2e_snd_params),
113- (" m20250203_msg_bodies" , m20250203_msg_bodies, Just down_m20250203_msg_bodies)
114- ]
115-
116- -- | The list of migrations in ascending order by date
117- appMigrations :: [Migration ]
118- appMigrations = sortOn name $ map migration schemaMigrations
119- where
120- migration (name, up, down) = Migration {name, up = fromQuery up, down = fromQuery <$> down}
121-
12235getCurrentMigrations :: DB. Connection -> IO [Migration ]
12336getCurrentMigrations DB. Connection {DB. conn} = map toMigration <$> SQL. query_ conn " SELECT name, down FROM migrations ORDER BY name ASC;"
12437 where
0 commit comments