mirror of
https://github.com/simplex-chat/simplexmq.git
synced 2026-08-28 09:24:47 +00:00
move queries to code
This commit is contained in:
@@ -22,7 +22,6 @@ dependencies:
|
||||
- network == 3.1.*
|
||||
- sqlite-simple == 0.4.*
|
||||
- stm
|
||||
- text == 1.2.*
|
||||
- time == 1.9.*
|
||||
- unliftio == 0.2.*
|
||||
- unliftio-core == 0.1.*
|
||||
|
||||
Binary file not shown.
@@ -35,9 +35,10 @@ runClient :: MonadUnliftIO m => AgentClient -> m ()
|
||||
runClient c = race_ (respond c) (process c)
|
||||
|
||||
receive :: MonadUnliftIO m => Handle -> AgentClient -> m ()
|
||||
receive h AgentClient {rcvQ} = forever $ do
|
||||
cmdOrError <- aCmdGet SUser h
|
||||
atomically $ writeTBQueue rcvQ cmdOrError
|
||||
receive h AgentClient {rcvQ, sndQ} = forever $ do
|
||||
aCmdGet SUser h >>= \case
|
||||
Right cmd -> atomically $ writeTBQueue rcvQ cmd
|
||||
Left e -> atomically $ writeTBQueue sndQ $ ERR e
|
||||
|
||||
send :: MonadUnliftIO m => Handle -> AgentClient -> m ()
|
||||
send h AgentClient {sndQ} = forever $ do
|
||||
@@ -46,10 +47,8 @@ send h AgentClient {sndQ} = forever $ do
|
||||
|
||||
process :: MonadUnliftIO m => AgentClient -> m ()
|
||||
process AgentClient {rcvQ, respQ} = forever $ do
|
||||
atomically (readTBQueue rcvQ)
|
||||
>>= \case
|
||||
Left e -> liftIO $ print e
|
||||
Right cmd -> liftIO $ print cmd
|
||||
cmd <- atomically (readTBQueue rcvQ)
|
||||
liftIO $ print cmd
|
||||
atomically $ writeTBQueue respQ ()
|
||||
|
||||
respond :: MonadUnliftIO m => AgentClient -> m ()
|
||||
|
||||
@@ -31,7 +31,7 @@ data Env = Env
|
||||
}
|
||||
|
||||
data AgentClient = AgentClient
|
||||
{ rcvQ :: TBQueue (Either ErrorType (ACommand User)),
|
||||
{ rcvQ :: TBQueue (ACommand User),
|
||||
sndQ :: TBQueue (ACommand Agent),
|
||||
respQ :: TBQueue (),
|
||||
servers :: Map (HostName, ServiceName) ServerClient
|
||||
|
||||
@@ -1,20 +1,32 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
|
||||
module Simplex.Messaging.Agent.Store.SQLite.Schema where
|
||||
|
||||
import Control.Monad.IO.Unlift
|
||||
import qualified Data.Text as T
|
||||
import Database.SQLite.Simple
|
||||
|
||||
createSchema :: MonadUnliftIO m => Connection -> m ()
|
||||
createSchema :: Connection -> IO ()
|
||||
createSchema conn = do
|
||||
sql "recipient_queues"
|
||||
-- sql "sender_queues"
|
||||
-- sql "connections"
|
||||
-- sql "messages"
|
||||
return ()
|
||||
where
|
||||
sql name = liftIO $ do
|
||||
q <- readFile $ "./src/Simplex/Messaging/Agent/Store/SQLite/sql/" <> name <> ".sql"
|
||||
putStrLn q
|
||||
execute_ conn . Query . T.pack $ q
|
||||
map
|
||||
(execute_ conn)
|
||||
[ recipientQueues --,
|
||||
-- senderQueues,
|
||||
-- connections,
|
||||
-- messages
|
||||
]
|
||||
|
||||
recipientQueues :: Query
|
||||
recipientQueues =
|
||||
"CREATE TABLE IF NOT EXISTS recipient_queues\
|
||||
\ ( id INTEGER PRIMARY KEY,\
|
||||
\ rcvId TEXT\
|
||||
\ )"
|
||||
|
||||
senderQueues :: Query
|
||||
senderQueues = ""
|
||||
|
||||
connections :: Query
|
||||
connections = ""
|
||||
|
||||
messages :: Query
|
||||
messages = ""
|
||||
|
||||
Reference in New Issue
Block a user