From c30a4cd1fffa8f361172db06e1c58fc17351e1fa Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Fri, 22 Jan 2021 07:51:45 +0000 Subject: [PATCH] sql quasi-qouter (#26) --- src/Multiline.hs | 14 ---------- src/Simplex/Messaging/Agent/Store/SQLite.hs | 28 +++++++++---------- .../Messaging/Agent/Store/SQLite/Schema.hs | 12 ++++---- 3 files changed, 20 insertions(+), 34 deletions(-) delete mode 100644 src/Multiline.hs diff --git a/src/Multiline.hs b/src/Multiline.hs deleted file mode 100644 index 1c329fcff..000000000 --- a/src/Multiline.hs +++ /dev/null @@ -1,14 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -module Multiline (s) where - -import GHC.Exts (IsString (..)) -import Language.Haskell.TH.Quote - -s :: QuasiQuoter -s = - QuasiQuoter - ((\a -> [|fromString a|]) . filter (/= '\r') . dropWhile (== '\n')) - (error "pattern") - (error "type") - (error "dec") diff --git a/src/Simplex/Messaging/Agent/Store/SQLite.hs b/src/Simplex/Messaging/Agent/Store/SQLite.hs index 0e89ad254..7f9ebd24b 100644 --- a/src/Simplex/Messaging/Agent/Store/SQLite.hs +++ b/src/Simplex/Messaging/Agent/Store/SQLite.hs @@ -28,8 +28,8 @@ import qualified Database.SQLite.Simple as DB import Database.SQLite.Simple.FromField import Database.SQLite.Simple.Internal (Field (..)) import Database.SQLite.Simple.Ok +import Database.SQLite.Simple.QQ (sql) import Database.SQLite.Simple.ToField -import Multiline (s) import Network.Socket import Simplex.Messaging.Agent.Store import Simplex.Messaging.Agent.Store.SQLite.Schema @@ -43,7 +43,7 @@ import UnliftIO.STM addRcvQueueQuery :: Query addRcvQueueQuery = - [s| + [sql| INSERT INTO receive_queues ( server_id, rcv_id, rcv_private_key, snd_id, snd_key, decrypt_key, verify_key, status, ack_mode) VALUES @@ -123,7 +123,7 @@ upsertServer SQLiteStore {conn} srv@SMPServer {host, port} = do r <- liftIO $ do DB.execute conn - [s| + [sql| INSERT INTO servers (host, port, key_hash) VALUES (?, ?, ?) ON CONFLICT (host, port) DO UPDATE SET host=excluded.host, @@ -173,7 +173,7 @@ getRcvQueue st@SQLiteStore {conn} queueRowId = do liftIO $ DB.queryNamed conn - [s| + [sql| SELECT server_id, rcv_id, rcv_private_key, snd_id, snd_key, decrypt_key, verify_key, status, ack_mode FROM receive_queues WHERE receive_queue_id = :rowId; @@ -190,7 +190,7 @@ getRcvQueueByRecipientId st@SQLiteStore {conn} rcvId host port = do liftIO $ DB.queryNamed conn - [s| + [sql| SELECT server_id, rcv_id, rcv_private_key, snd_id, snd_key, decrypt_key, verify_key, status, ack_mode FROM receive_queues WHERE rcv_id = :rcvId AND server_id IN ( @@ -212,7 +212,7 @@ getSndQueue st@SQLiteStore {conn} queueRowId = do liftIO $ DB.queryNamed conn - [s| + [sql| SELECT server_id, snd_id, snd_private_key, encrypt_key, sign_key, status, ack_mode FROM send_queues WHERE send_queue_id = :rowId; @@ -228,7 +228,7 @@ insertRcvQueue store serverId rcvQueue = insertWithLock store rcvQueuesLock - [s| + [sql| INSERT INTO receive_queues ( server_id, rcv_id, rcv_private_key, snd_id, snd_key, decrypt_key, verify_key, status, ack_mode) VALUES (?,?,?,?,?,?,?,?,?); @@ -249,7 +249,7 @@ updateRcvConnectionWithSndQueue store connAlias sndQueueId = executeWithLock store connectionsLock - [s| + [sql| UPDATE connections SET send_queue_id = ? WHERE conn_alias = ?; @@ -268,7 +268,7 @@ insertSndQueue store serverId sndQueue = insertWithLock store sndQueuesLock - [s| + [sql| INSERT INTO send_queues ( server_id, snd_id, snd_private_key, encrypt_key, sign_key, status, ack_mode) VALUES (?,?,?,?,?,?,?); @@ -289,7 +289,7 @@ updateSndConnectionWithRcvQueue store connAlias rcvQueueId = executeWithLock store connectionsLock - [s| + [sql| UPDATE connections SET receive_queue_id = ? WHERE conn_alias = ?; @@ -317,7 +317,7 @@ getConnAliasByRcvQueue SQLiteStore {conn} rcvId = do liftIO $ DB.queryNamed conn - [s| + [sql| SELECT c.conn_alias FROM connections c JOIN receive_queues rq @@ -358,7 +358,7 @@ updateReceiveQueueStatus store rcvQueueId host port status = executeWithLock store rcvQueuesLock - [s| + [sql| UPDATE receive_queues SET status = ? WHERE rcv_id = ? @@ -375,7 +375,7 @@ updateSendQueueStatus store sndQueueId host port status = executeWithLock store sndQueuesLock - [s| + [sql| UPDATE send_queues SET status = ? WHERE snd_id = ? @@ -397,7 +397,7 @@ insertMsg store connAlias qDirection agentMsgId msg = do insertWithLock store messagesLock - [s| + [sql| INSERT INTO messages (conn_alias, agent_msg_id, timestamp, message, direction, msg_status) VALUES (?,?,?,?,?,"MDTransmitted"); |] diff --git a/src/Simplex/Messaging/Agent/Store/SQLite/Schema.hs b/src/Simplex/Messaging/Agent/Store/SQLite/Schema.hs index 698e85770..30236308f 100644 --- a/src/Simplex/Messaging/Agent/Store/SQLite/Schema.hs +++ b/src/Simplex/Messaging/Agent/Store/SQLite/Schema.hs @@ -5,11 +5,11 @@ module Simplex.Messaging.Agent.Store.SQLite.Schema where import Database.SQLite.Simple -import Multiline (s) +import Database.SQLite.Simple.QQ (sql) servers :: Query servers = - [s| + [sql| CREATE TABLE IF NOT EXISTS servers ( server_id INTEGER PRIMARY KEY, host TEXT NOT NULL, @@ -21,7 +21,7 @@ servers = receiveQueues :: Query receiveQueues = - [s| + [sql| CREATE TABLE IF NOT EXISTS receive_queues ( receive_queue_id INTEGER PRIMARY KEY, server_id INTEGER REFERENCES servers(server_id) NOT NULL, @@ -40,7 +40,7 @@ receiveQueues = sendQueues :: Query sendQueues = - [s| + [sql| CREATE TABLE IF NOT EXISTS send_queues ( send_queue_id INTEGER PRIMARY KEY, server_id INTEGER REFERENCES servers(server_id) NOT NULL, @@ -56,7 +56,7 @@ sendQueues = connections :: Query connections = - [s| + [sql| CREATE TABLE IF NOT EXISTS connections ( connection_id INTEGER PRIMARY KEY, conn_alias TEXT UNIQUE, @@ -67,7 +67,7 @@ connections = messages :: Query messages = - [s| + [sql| CREATE TABLE IF NOT EXISTS messages ( message_id INTEGER PRIMARY KEY, conn_alias TEXT REFERENCES connections(conn_alias),