summaryrefslogtreecommitdiff
path: root/haskell/src/SpaceTraders/Database/Contracts.hs
diff options
context:
space:
mode:
Diffstat (limited to 'haskell/src/SpaceTraders/Database/Contracts.hs')
-rw-r--r--haskell/src/SpaceTraders/Database/Contracts.hs23
1 files changed, 7 insertions, 16 deletions
diff --git a/haskell/src/SpaceTraders/Database/Contracts.hs b/haskell/src/SpaceTraders/Database/Contracts.hs
index 1084447..20170ba 100644
--- a/haskell/src/SpaceTraders/Database/Contracts.hs
+++ b/haskell/src/SpaceTraders/Database/Contracts.hs
@@ -9,7 +9,6 @@ module SpaceTraders.Database.Contracts
import Control.Monad.Reader
import Data.Aeson
-import Data.Maybe
import qualified Database.SQLite.Simple as S
import SpaceTraders
@@ -17,24 +16,16 @@ import SpaceTraders.Model.Contract
import SpaceTraders.Utils
addContract :: (HasDatabaseConn env, MonadIO m, MonadReader env m) => Contract -> m ()
-addContract contract = do
- env <- ask
- liftIO $ S.execute (getConn env) "INSERT INTO contracts(data) VALUES (json(?));" (S.Only (encode contract))
+addContract contract = execute "INSERT INTO contracts(data) VALUES (json(?));" (S.Only (encode contract))
getContracts :: (HasDatabaseConn env, MonadIO m, MonadReader env m) => m [Contract]
-getContracts = do
- env <- ask
- ret <- liftIO $ S.query_ (getConn env) "SELECT data FROM contracts;"
- return . catMaybes $ map (decodeText . head) ret
+getContracts = query_ "SELECT data FROM contracts;"
-setContract :: (HasDatabaseConn env, MonadIO m, MonadReader env m) => Contract -> m ()
+setContract :: (HasDatabaseConn env, MonadFail m, MonadIO m, MonadReader env m) => Contract -> m ()
setContract contract = do
- env <- ask
- count <- liftIO (S.query (getConn env) "SELECT count(id) FROM contracts WHERE data->>'contractId' = ?;" (S.Only $ contractId contract) :: IO [[Int]])
- if count == [[0]] then addContract contract
- else updateContract contract
+ c <- count "SELECT count(id) FROM contracts WHERE data->>'contractId' = ?;" (S.Only $ contractId contract)
+ if c == 0 then addContract contract
+ else updateContract contract
updateContract :: (HasDatabaseConn env, MonadIO m, MonadReader env m) => Contract -> m ()
-updateContract contract = do
- env <- ask
- liftIO $ S.execute (getConn env) "UPDATE contracts SET data = json(?) WHERE data->>'contractId' = ?;" (encode contract, contractId contract)
+updateContract contract = execute "UPDATE contracts SET data = json(?) WHERE data->>'contractId' = ?;" (encode contract, contractId contract)