diff options
Diffstat (limited to 'haskell/src/SpaceTraders.hs')
-rw-r--r-- | haskell/src/SpaceTraders.hs | 31 |
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 |