summaryrefslogtreecommitdiff
path: root/haskell/src/SpaceTraders.hs
diff options
context:
space:
mode:
Diffstat (limited to 'haskell/src/SpaceTraders.hs')
-rw-r--r--haskell/src/SpaceTraders.hs31
1 files changed, 23 insertions, 8 deletions
diff --git a/haskell/src/SpaceTraders.hs b/haskell/src/SpaceTraders.hs
index d93116d..2a531fe 100644
--- a/haskell/src/SpaceTraders.hs
+++ b/haskell/src/SpaceTraders.hs
@@ -3,21 +3,36 @@
module SpaceTraders
( SpaceTradersT
, runSpaceTradersT
- , Config(..)
+ , Env(..)
+ , HasDatabaseConn
+ , HasRequest
, ask
+ , getConn
+ , getRequest
, liftIO
) where
import Control.Monad.IO.Class
-import Control.Monad.Trans.Reader
+import Control.Monad.Reader
import qualified Database.SQLite.Simple as S
-import qualified Data.Text as T
+import Network.HTTP.Simple
-type SpaceTradersT a = ReaderT Config IO a
+type SpaceTradersT a = ReaderT Env IO a
-runSpaceTradersT :: SpaceTradersT a -> Config -> IO a
+runSpaceTradersT :: SpaceTradersT a -> Env -> IO a
runSpaceTradersT = runReaderT
-data Config = Config { conn :: S.Connection
- , token :: T.Text
- }
+data Env = Env { envConn :: S.Connection
+ , envRequest :: Request }
+
+class HasDatabaseConn a where
+ getConn :: a -> S.Connection
+instance HasDatabaseConn S.Connection where
+ getConn = id
+instance HasDatabaseConn Env where
+ getConn = envConn
+
+class HasRequest a where
+ getRequest :: a -> Request
+instance HasRequest Env where
+ getRequest = envRequest