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 Network.Wai.Handler.Warp (run)
|
|
|
|
|
import Servant hiding ((:>), throwError)
|
|
|
|
|
import qualified Servant as S
|
|
|
|
|
|
2024-10-12 17:38:22 -05:00
|
|
|
|
--
|
|
|
|
|
-- Application
|
|
|
|
|
--
|
2024-09-18 13:16:36 -05:00
|
|
|
|
main :: IO ()
|
|
|
|
|
main = run port $ serve proxy app
|
|
|
|
|
|
|
|
|
|
app :: Server API
|
|
|
|
|
app = α $ rootHandler
|
|
|
|
|
:<|> userListHandler
|
|
|
|
|
:<|> userGetHandler
|
|
|
|
|
:<|> userPostHandler
|
|
|
|
|
|
|
|
|
|
α :: ServerT API AppEff -> ServerT API Handler
|
2024-10-12 17:38:22 -05:00
|
|
|
|
α = hoistServer proxy
|
|
|
|
|
$ Handler
|
|
|
|
|
. ExceptT
|
|
|
|
|
. runEff
|
|
|
|
|
. runErrorNoCallStack
|
|
|
|
|
. runLoggerIO
|
|
|
|
|
. runFileSystem
|
|
|
|
|
. runDatabaseIO
|
2024-09-18 13:16:36 -05:00
|
|
|
|
|
|
|
|
|
port :: Int
|
|
|
|
|
port = 8080
|
|
|
|
|
|
|
|
|
|
proxy :: Proxy API
|
|
|
|
|
proxy = Proxy
|