From 7e27a0a7eada373780a9757fd89f70d4d911d69a Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Fri, 22 Mar 2024 01:13:34 +0100 Subject: [haskell] refactoring --- haskell/src/SpaceTraders/Automation/Init.hs | 49 +++++++++++++++-------------- 1 file changed, 25 insertions(+), 24 deletions(-) (limited to 'haskell/src/SpaceTraders/Automation') diff --git a/haskell/src/SpaceTraders/Automation/Init.hs b/haskell/src/SpaceTraders/Automation/Init.hs index 6641cf8..be3dbd2 100644 --- a/haskell/src/SpaceTraders/Automation/Init.hs +++ b/haskell/src/SpaceTraders/Automation/Init.hs @@ -5,23 +5,24 @@ module SpaceTraders.Automation.Init , initST ) where -import Control.Exception -import Control.Monad.Reader -import qualified Database.SQLite.Simple as S -import qualified Data.Text as T -import System.Directory +import Control.Exception +import Control.Monad.Error.Class +import Control.Monad.Reader +import qualified Data.Text as T +import qualified Database.SQLite.Simple as S +import System.Directory -import SpaceTraders -import SpaceTraders.APIClient.Agent -import SpaceTraders.APIClient.Client -import SpaceTraders.APIClient.Contracts -import SpaceTraders.APIClient.Errors -import SpaceTraders.APIClient.Ships -import SpaceTraders.Database -import SpaceTraders.Database.Agents -import SpaceTraders.Database.Contracts -import SpaceTraders.Database.Ships -import SpaceTraders.Database.Tokens +import SpaceTraders +import SpaceTraders.APIClient.Agent +import SpaceTraders.APIClient.Client +import SpaceTraders.APIClient.Contracts +import SpaceTraders.APIClient.Errors +import SpaceTraders.APIClient.Ships +import SpaceTraders.Database +import SpaceTraders.Database.Agents +import SpaceTraders.Database.Contracts +import SpaceTraders.Database.Ships +import SpaceTraders.Database.Tokens deinitST :: Env -> IO () deinitST env = do @@ -30,7 +31,7 @@ deinitST env = do initST :: IO Env initST = do conn <- open - t <- runReaderT getToken conn `catch` handleNoToken conn + t <- runReaderT getToken conn `catchError` handleNoToken conn env <- newEnv conn (tokenReq t) ma <- runReaderT getAgent conn -- We compare the agent state in the database ma' <- runSpaceTradersT myAgent env -- with the one on the servers @@ -42,21 +43,21 @@ initST = do _ <- runReaderT myContracts env -- refresh contracts _ <- runReaderT myShips env -- refresh ships runReaderT (setAgent ma'') conn -- store the fresh agent state - return $ env + return env where - handleNoToken :: S.Connection -> SomeException -> IO T.Text + handleNoToken :: S.Connection -> IOException -> IO T.Text handleNoToken conn _ = newEnv conn defaultReq >>= runReaderT registerST -registerST :: SpaceTradersT (T.Text) +registerST :: SpaceTradersT T.Text registerST = do - r <- register "ADYXAX-HS" "COSMIC" + r <- register "ADYXAX-HS-6" "COSMIC" case r of Right r' -> do let t = token r' addToken t - addAgent $ agent r' - addContract $ contract r' - addShip $ ship r' + setAgent $ agent r' + setContract $ contract r' + setShip $ ship r' return t Left e' -> throw e' -- cgit v1.2.3