move queries to code

This commit is contained in:
Evgeny Poberezkin
2020-12-27 12:47:39 +00:00
parent 7bcd5ebcef
commit 18ab9650b4
5 changed files with 32 additions and 22 deletions
-1
View File
@@ -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.*
BIN
View File
Binary file not shown.
+6 -7
View File
@@ -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 ()
+1 -1
View File
@@ -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 = ""