@@ -285,7 +285,7 @@ import Simplex.Messaging.Agent.Stats
285285import Simplex.Messaging.Agent.Store
286286import Simplex.Messaging.Agent.Store.Common
287287import qualified Simplex.Messaging.Agent.Store.DB as DB
288- import Simplex.Messaging.Agent.Store.DB (Binary (.. ), BoolInt (.. ), FromField (.. ), ToField (.. ), blobFieldDecoder , fromTextField_ )
288+ import Simplex.Messaging.Agent.Store.DB (Binary (.. ), BoolInt (.. ), FromField (.. ), ToField (.. ), SQLError , blobFieldDecoder , fromTextField_ )
289289import Simplex.Messaging.Agent.Store.Entity
290290import Simplex.Messaging.Client (SMPTransportSession )
291291import qualified Simplex.Messaging.Crypto as C
@@ -308,25 +308,24 @@ import qualified UnliftIO.Exception as E
308308import UnliftIO.STM
309309#if defined(dbPostgres)
310310import Data.List (sortOn )
311- import Database.PostgreSQL.Simple (In (.. ), Only (.. ), Query , SqlError , (:.) (.. ))
311+ import Database.PostgreSQL.Simple (In (.. ), Only (.. ), Query , (:.) (.. ))
312312import Database.PostgreSQL.Simple.Errors (constraintViolation )
313313import Database.PostgreSQL.Simple.SqlQQ (sql )
314314#else
315- import Database.SQLite.Simple (FromRow (.. ), Only (.. ), Query (.. ), SQLError , ToRow (.. ), field , (:.) (.. ))
315+ import Database.SQLite.Simple (FromRow (.. ), Only (.. ), Query (.. ), ToRow (.. ), field , (:.) (.. ))
316316import qualified Database.SQLite.Simple as SQL
317317import Database.SQLite.Simple.QQ (sql )
318318#endif
319319
320320checkConstraint :: StoreError -> IO (Either StoreError a ) -> IO (Either StoreError a )
321321checkConstraint err action = action `E.catch` (pure . Left . handleSQLError err)
322322
323+ handleSQLError :: StoreError -> SQLError -> StoreError
323324#if defined(dbPostgres)
324- handleSQLError :: StoreError -> SqlError -> StoreError
325325handleSQLError err e = case constraintViolation e of
326326 Just _ -> err
327327 Nothing -> SEInternal $ bshow e
328328#else
329- handleSQLError :: StoreError -> SQLError -> StoreError
330329handleSQLError err e
331330 | SQL. sqlError e == SQL. ErrorConstraint = err
332331 | otherwise = SEInternal $ bshow e
@@ -1428,7 +1427,7 @@ createNtfToken db NtfToken {deviceToken = DeviceToken provider token, ntfServer
14281427 INSERT INTO ntf_tokens
14291428 (provider, device_token, ntf_host, ntf_port, tkn_id, tkn_pub_key, tkn_priv_key, tkn_pub_dh_key, tkn_priv_dh_key, tkn_dh_secret, tkn_status, tkn_action, ntf_mode) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
14301429 |]
1431- ((provider, token, host, port, ntfTokenId, ntfPubKey, ntfPrivKey, ntfDhPubKey, ntfDhPrivKey, ntfDhSecret) :. (ntfTknStatus, ntfTknAction, ntfMode))
1430+ ((provider, Binary token, host, port, ntfTokenId, ntfPubKey, ntfPrivKey, ntfDhPubKey, ntfDhPrivKey, ntfDhSecret) :. (ntfTknStatus, ntfTknAction, ntfMode))
14321431
14331432getSavedNtfToken :: DB. Connection -> IO (Maybe NtfToken )
14341433getSavedNtfToken db = do
@@ -1443,7 +1442,7 @@ getSavedNtfToken db = do
14431442 JOIN ntf_servers s USING (ntf_host, ntf_port)
14441443 |]
14451444 where
1446- ntfToken ((host, port, keyHash) :. (provider, dt, ntfTokenId, ntfPubKey, ntfPrivKey, ntfDhPubKey, ntfDhPrivKey, ntfDhSecret) :. (ntfTknStatus, ntfTknAction, ntfMode_)) =
1445+ ntfToken ((host, port, keyHash) :. (provider, Binary dt, ntfTokenId, ntfPubKey, ntfPrivKey, ntfDhPubKey, ntfDhPrivKey, ntfDhSecret) :. (ntfTknStatus, ntfTknAction, ntfMode_)) =
14471446 let ntfServer = NtfServer host port keyHash
14481447 ntfDhKeys = (ntfDhPubKey, ntfDhPrivKey)
14491448 ntfMode = fromMaybe NMPeriodic ntfMode_
@@ -1459,7 +1458,7 @@ updateNtfTokenRegistration db NtfToken {deviceToken = DeviceToken provider token
14591458 SET tkn_id = ?, tkn_dh_secret = ?, tkn_status = ?, tkn_action = ?, updated_at = ?
14601459 WHERE provider = ? AND device_token = ? AND ntf_host = ? AND ntf_port = ?
14611460 |]
1462- (tknId, ntfDhSecret, NTRegistered , Nothing :: Maybe NtfTknAction , updatedAt , provider , token , host , port )
1461+ (tknId, ntfDhSecret, NTRegistered , Nothing :: Maybe NtfTknAction , updatedAt , provider , Binary token , host , port )
14631462
14641463updateDeviceToken :: DB. Connection -> NtfToken -> DeviceToken -> IO ()
14651464updateDeviceToken db NtfToken {deviceToken = DeviceToken provider token, ntfServer = ProtocolServer {host, port}} (DeviceToken toProvider toToken) = do
@@ -1471,7 +1470,7 @@ updateDeviceToken db NtfToken {deviceToken = DeviceToken provider token, ntfServ
14711470 SET provider = ?, device_token = ?, tkn_status = ?, tkn_action = ?, updated_at = ?
14721471 WHERE provider = ? AND device_token = ? AND ntf_host = ? AND ntf_port = ?
14731472 |]
1474- (toProvider, toToken, NTRegistered , Nothing :: Maybe NtfTknAction , updatedAt , provider , token , host , port )
1473+ (toProvider, Binary toToken, NTRegistered , Nothing :: Maybe NtfTknAction , updatedAt , provider , Binary token , host , port )
14751474
14761475updateNtfMode :: DB. Connection -> NtfToken -> NotificationsMode -> IO ()
14771476updateNtfMode db NtfToken {deviceToken = DeviceToken provider token, ntfServer = ProtocolServer {host, port}} ntfMode = do
@@ -1483,7 +1482,7 @@ updateNtfMode db NtfToken {deviceToken = DeviceToken provider token, ntfServer =
14831482 SET ntf_mode = ?, updated_at = ?
14841483 WHERE provider = ? AND device_token = ? AND ntf_host = ? AND ntf_port = ?
14851484 |]
1486- (ntfMode, updatedAt, provider, token, host, port)
1485+ (ntfMode, updatedAt, provider, Binary token, host, port)
14871486
14881487updateNtfToken :: DB. Connection -> NtfToken -> NtfTknStatus -> Maybe NtfTknAction -> IO ()
14891488updateNtfToken db NtfToken {deviceToken = DeviceToken provider token, ntfServer = ProtocolServer {host, port}} tknStatus tknAction = do
@@ -1495,7 +1494,7 @@ updateNtfToken db NtfToken {deviceToken = DeviceToken provider token, ntfServer
14951494 SET tkn_status = ?, tkn_action = ?, updated_at = ?
14961495 WHERE provider = ? AND device_token = ? AND ntf_host = ? AND ntf_port = ?
14971496 |]
1498- (tknStatus, tknAction, updatedAt, provider, token, host, port)
1497+ (tknStatus, tknAction, updatedAt, provider, Binary token, host, port)
14991498
15001499removeNtfToken :: DB. Connection -> NtfToken -> IO ()
15011500removeNtfToken db NtfToken {deviceToken = DeviceToken provider token, ntfServer = ProtocolServer {host, port}} =
@@ -1505,7 +1504,7 @@ removeNtfToken db NtfToken {deviceToken = DeviceToken provider token, ntfServer
15051504 DELETE FROM ntf_tokens
15061505 WHERE provider = ? AND device_token = ? AND ntf_host = ? AND ntf_port = ?
15071506 |]
1508- (provider, token, host, port)
1507+ (provider, Binary token, host, port)
15091508
15101509addNtfTokenToDelete :: DB. Connection -> NtfServer -> C. APrivateAuthKey -> NtfTokenId -> IO ()
15111510addNtfTokenToDelete db ProtocolServer {host, port, keyHash} ntfPrivKey tknId =
@@ -1819,7 +1818,7 @@ getActiveNtfToken db =
18191818 |]
18201819 (Only NTActive )
18211820 where
1822- ntfToken ((host, port, keyHash) :. (provider, dt, ntfTokenId, ntfPubKey, ntfPrivKey, ntfDhPubKey, ntfDhPrivKey, ntfDhSecret) :. (ntfTknStatus, ntfTknAction, ntfMode_)) =
1821+ ntfToken ((host, port, keyHash) :. (provider, Binary dt, ntfTokenId, ntfPubKey, ntfPrivKey, ntfDhPubKey, ntfDhPrivKey, ntfDhSecret) :. (ntfTknStatus, ntfTknAction, ntfMode_)) =
18231822 let ntfServer = NtfServer host port keyHash
18241823 ntfDhKeys = (ntfDhPubKey, ntfDhPrivKey)
18251824 ntfMode = fromMaybe NMPeriodic ntfMode_
0 commit comments