diff options
author | Julien Dessaux | 2023-07-21 00:01:02 +0200 |
---|---|---|
committer | Julien Dessaux | 2023-07-21 00:01:02 +0200 |
commit | dcd0a7a9b2612f383c1f627c72c27868c367058d (patch) | |
tree | 773b322f5b353cd39fbaf4161deba93968d20b56 /haskell/src/SpaceTraders/Database/Agents.hs | |
parent | [haskell] Finalized the agent initialization, refresh and reset (diff) | |
download | spacetraders-dcd0a7a9b2612f383c1f627c72c27868c367058d.tar.gz spacetraders-dcd0a7a9b2612f383c1f627c72c27868c367058d.tar.bz2 spacetraders-dcd0a7a9b2612f383c1f627c72c27868c367058d.zip |
[haskell] abstracted away common database access patterns
Diffstat (limited to 'haskell/src/SpaceTraders/Database/Agents.hs')
-rw-r--r-- | haskell/src/SpaceTraders/Database/Agents.hs | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/haskell/src/SpaceTraders/Database/Agents.hs b/haskell/src/SpaceTraders/Database/Agents.hs index 0557b1d..49ae11f 100644 --- a/haskell/src/SpaceTraders/Database/Agents.hs +++ b/haskell/src/SpaceTraders/Database/Agents.hs @@ -8,7 +8,6 @@ module SpaceTraders.Database.Agents import Control.Monad.Reader import Data.Aeson -import Data.Maybe import qualified Database.SQLite.Simple as S import SpaceTraders @@ -16,17 +15,10 @@ import SpaceTraders.Model.Agent import SpaceTraders.Utils addAgent :: (HasDatabaseConn env, MonadIO m, MonadReader env m) => Agent -> m () -addAgent agent = do - env <- ask - liftIO $ S.execute (getConn env) "INSERT INTO agents(data) VALUES (json(?));" (S.Only (encode agent)) +addAgent agent = execute "INSERT INTO agents(data) VALUES (json(?));" (S.Only (encode agent)) getAgent :: (HasDatabaseConn env, MonadIO m, MonadReader env m) => m Agent -getAgent = do - env <- ask - ret <- liftIO $ S.query_ (getConn env) "SELECT data FROM agents;" - return . head . catMaybes $ map (decodeText . head) ret +getAgent = one_ "SELECT data FROM agents"; setAgent :: (HasDatabaseConn env, MonadIO m, MonadReader env m) => Agent -> m () -setAgent agent = do - env <- ask - liftIO $ S.execute (getConn env) "UPDATE agents SET data = json(?);" (S.Only (encode agent)) +setAgent agent = execute "UPDATE agents SET data = json(?);" (S.Only (encode agent)) |