mirror of
https://github.com/simplex-chat/simplexmq.git
synced 2026-03-30 20:45:52 +00:00
sql quasi-qouter (#26)
This commit is contained in:
committed by
Efim Poberezkin
parent
70fe7616f2
commit
c30a4cd1ff
@@ -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")
|
||||
@@ -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");
|
||||
|]
|
||||
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user