HELPS/src/Main.hs

49 lines
1.0 KiB
Haskell
Raw Normal View History

2024-09-18 13:16:36 -05:00
module Main (main) where
import Core
import Database
import Handlers
import Control.Monad.Except (ExceptT (ExceptT))
import Data.List
import Effectful
import Effectful.Error.Static (Error, runError, runErrorNoCallStack, throwError)
import Effectful.FileSystem
import Effectful.Reader.Static
2024-09-18 13:16:36 -05:00
import Network.Wai.Handler.Warp (run)
import Servant hiding ((:>), throwError)
import qualified Servant as S
--
-- Application
--
2024-09-18 13:16:36 -05:00
main :: IO ()
main = do
pool <- createConnectionPool
let env = AppEnv { pool = pool }
run port $ serve proxy $ app env
2024-09-18 13:16:36 -05:00
app :: AppEnv -> Server AppAPI
app env = transformEff env
$ rootHandler
2024-09-18 13:16:36 -05:00
:<|> userListHandler
:<|> userGetHandler
:<|> userPostHandler
transformEff :: AppEnv -> ServerT AppAPI AppEff -> ServerT AppAPI Handler
transformEff env = hoistServer proxy
$ Handler
. ExceptT
. runEff
. runErrorNoCallStack
. runLoggerIO
. runFileSystem
. runReader env
. runDatabaseIO
2024-09-18 13:16:36 -05:00
port :: Int
port = 8080
2024-10-12 18:08:29 -05:00
proxy :: Proxy AppAPI
2024-09-18 13:16:36 -05:00
proxy = Proxy