Skip to content

Commit 72c2ddc

Browse files
authored
agent: move migrations (#1459)
1 parent a75e138 commit 72c2ddc

File tree

11 files changed

+141
-113
lines changed

11 files changed

+141
-113
lines changed

simplexmq.cabal

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ library
100100
Simplex.Messaging.Agent.Store.DB
101101
Simplex.Messaging.Agent.Store.Interface
102102
Simplex.Messaging.Agent.Store.Migrations
103+
Simplex.Messaging.Agent.Store.Migrations.App
103104
Simplex.Messaging.Agent.Store.Shared
104105
Simplex.Messaging.Agent.TRcvQueues
105106
Simplex.Messaging.Client
@@ -151,6 +152,7 @@ library
151152
Simplex.Messaging.Agent.Store.Postgres.Common
152153
Simplex.Messaging.Agent.Store.Postgres.DB
153154
Simplex.Messaging.Agent.Store.Postgres.Migrations
155+
Simplex.Messaging.Agent.Store.Postgres.Migrations.App
154156
Simplex.Messaging.Agent.Store.Postgres.Migrations.M20241210_initial
155157
Simplex.Messaging.Agent.Store.Postgres.Migrations.M20250203_msg_bodies
156158
if !flag(client_library)
@@ -162,6 +164,7 @@ library
162164
Simplex.Messaging.Agent.Store.SQLite.Common
163165
Simplex.Messaging.Agent.Store.SQLite.DB
164166
Simplex.Messaging.Agent.Store.SQLite.Migrations
167+
Simplex.Messaging.Agent.Store.SQLite.Migrations.App
165168
Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220101_initial
166169
Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220301_snd_queue_keys
167170
Simplex.Messaging.Agent.Store.SQLite.Migrations.M20220322_notifications
@@ -273,7 +276,6 @@ library
273276
, hourglass ==0.2.*
274277
, http-types ==0.12.*
275278
, http2 >=4.2.2 && <4.3
276-
, ini ==0.4.1
277279
, iproute ==1.7.*
278280
, iso8601-time ==0.1.*
279281
, memory ==0.18.*
@@ -282,13 +284,10 @@ library
282284
, network-info ==0.2.*
283285
, network-transport ==0.5.6
284286
, network-udp ==0.0.*
285-
, optparse-applicative >=0.15 && <0.17
286-
, process ==1.6.*
287287
, random >=1.1 && <1.3
288288
, simple-logger ==0.1.*
289289
, socks ==0.6.*
290290
, stm ==2.5.*
291-
, temporary ==1.3.*
292291
, time ==1.12.*
293292
, time-manager ==0.0.*
294293
, tls >=1.9.0 && <1.10
@@ -304,6 +303,10 @@ library
304303
build-depends:
305304
case-insensitive ==1.2.*
306305
, hashable ==1.4.*
306+
, ini ==0.4.1
307+
, optparse-applicative >=0.15 && <0.17
308+
, process ==1.6.*
309+
, temporary ==1.3.*
307310
, websockets ==0.12.*
308311
if flag(client_postgres)
309312
build-depends:

src/Simplex/Messaging/Agent/Store.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ import Data.Type.Equality
3030
import Simplex.Messaging.Agent.Protocol
3131
import Simplex.Messaging.Agent.RetryInterval (RI2State)
3232
import Simplex.Messaging.Agent.Store.Common
33-
import Simplex.Messaging.Agent.Store.Interface (DBOpts, appMigrations, createDBStore)
33+
import Simplex.Messaging.Agent.Store.Interface (DBOpts, createDBStore)
34+
import Simplex.Messaging.Agent.Store.Migrations.App (appMigrations)
3435
import Simplex.Messaging.Agent.Store.Shared (MigrationConfirmation (..), MigrationError (..))
3536
import qualified Simplex.Messaging.Crypto as C
3637
import Simplex.Messaging.Crypto.Ratchet (MsgEncryptKeyX448, PQEncryption, PQSupport, RatchetX448)
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{-# LANGUAGE CPP #-}
2+
3+
module Simplex.Messaging.Agent.Store.Migrations.App
4+
#if defined(dbPostgres)
5+
( module Simplex.Messaging.Agent.Store.Postgres.Migrations.App,
6+
)
7+
where
8+
import Simplex.Messaging.Agent.Store.Postgres.Migrations.App
9+
#else
10+
( module Simplex.Messaging.Agent.Store.SQLite.Migrations.App,
11+
)
12+
where
13+
import Simplex.Messaging.Agent.Store.SQLite.Migrations.App
14+
#endif

src/Simplex/Messaging/Agent/Store/Postgres.hs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
module Simplex.Messaging.Agent.Store.Postgres
88
( DBOpts (..),
9-
Migrations.appMigrations,
109
Migrations.getCurrentMigrations,
1110
createDBStore,
1211
closeDBStore,

src/Simplex/Messaging/Agent/Store/Postgres/Migrations.hs

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,13 @@
55
{-# LANGUAGE TupleSections #-}
66

77
module Simplex.Messaging.Agent.Store.Postgres.Migrations
8-
( appMigrations,
9-
initialize,
8+
( initialize,
109
run,
1110
getCurrentMigrations,
1211
)
1312
where
1413

1514
import Control.Monad (void)
16-
import Data.List (sortOn)
17-
import Data.Text (Text)
1815
import qualified Data.Text as T
1916
import qualified Data.Text.Encoding as TE
2017
import Data.Time.Clock (getCurrentTime)
@@ -24,23 +21,9 @@ import qualified Database.PostgreSQL.Simple as PSQL
2421
import Database.PostgreSQL.Simple.Internal (Connection (..))
2522
import Database.PostgreSQL.Simple.SqlQQ (sql)
2623
import Simplex.Messaging.Agent.Store.Postgres.Common
27-
import Simplex.Messaging.Agent.Store.Postgres.Migrations.M20241210_initial
28-
import Simplex.Messaging.Agent.Store.Postgres.Migrations.M20250203_msg_bodies
2924
import Simplex.Messaging.Agent.Store.Shared
3025
import UnliftIO.MVar
3126

32-
schemaMigrations :: [(String, Text, Maybe Text)]
33-
schemaMigrations =
34-
[ ("20241210_initial", m20241210_initial, Nothing),
35-
("20250203_msg_bodies", m20250203_msg_bodies, Just down_m20250203_msg_bodies)
36-
]
37-
38-
-- | The list of migrations in ascending order by date
39-
appMigrations :: [Migration]
40-
appMigrations = sortOn name $ map migration schemaMigrations
41-
where
42-
migration (name, up, down) = Migration {name, up, down = down}
43-
4427
initialize :: DBStore -> IO ()
4528
initialize st = withTransaction' st $ \db ->
4629
void $
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{-# LANGUAGE NamedFieldPuns #-}
2+
3+
module Simplex.Messaging.Agent.Store.Postgres.Migrations.App (appMigrations) where
4+
5+
import Data.List (sortOn)
6+
import Data.Text (Text)
7+
import Simplex.Messaging.Agent.Store.Postgres.Migrations.M20241210_initial
8+
import Simplex.Messaging.Agent.Store.Postgres.Migrations.M20250203_msg_bodies
9+
import Simplex.Messaging.Agent.Store.Shared (Migration (..))
10+
11+
schemaMigrations :: [(String, Text, Maybe Text)]
12+
schemaMigrations =
13+
[ ("20241210_initial", m20241210_initial, Nothing),
14+
("20250203_msg_bodies", m20250203_msg_bodies, Just down_m20250203_msg_bodies)
15+
]
16+
17+
-- | The list of migrations in ascending order by date
18+
appMigrations :: [Migration]
19+
appMigrations = sortOn name $ map migration schemaMigrations
20+
where
21+
migration (name, up, down) = Migration {name, up, down = down}

src/Simplex/Messaging/Agent/Store/SQLite.hs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626

2727
module Simplex.Messaging.Agent.Store.SQLite
2828
( DBOpts (..),
29-
Migrations.appMigrations,
3029
Migrations.getCurrentMigrations,
3130
createDBStore,
3231
closeDBStore,

src/Simplex/Messaging/Agent/Store/SQLite/Migrations.hs

Lines changed: 1 addition & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,13 @@
88
{-# LANGUAGE TupleSections #-}
99

1010
module Simplex.Messaging.Agent.Store.SQLite.Migrations
11-
( appMigrations,
12-
initialize,
11+
( initialize,
1312
run,
1413
getCurrentMigrations,
1514
)
1615
where
1716

1817
import Control.Monad (forM_, when)
19-
import Data.List (sortOn)
2018
import Data.List.NonEmpty (NonEmpty)
2119
import qualified Data.Map.Strict as M
2220
import Data.Text (Text)
@@ -29,96 +27,11 @@ import qualified Database.SQLite3 as SQLite3
2927
import Simplex.Messaging.Agent.Protocol (extraSMPServerHosts)
3028
import qualified Simplex.Messaging.Agent.Store.DB as DB
3129
import 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
4130
import 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
7031
import Simplex.Messaging.Agent.Store.Shared
7132
import Simplex.Messaging.Encoding.String
7233
import 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-
12235
getCurrentMigrations :: DB.Connection -> IO [Migration]
12336
getCurrentMigrations DB.Connection {DB.conn} = map toMigration <$> SQL.query_ conn "SELECT name, down FROM migrations ORDER BY name ASC;"
12437
where

0 commit comments

Comments
 (0)