{-# LANGUAGE OverloadedStrings #-} import Web.Scotty import Network.Wai.Middleware.Static import Data.Text (Text) import Controller.Index import Controller.SignIn import Controller.Payment import Model.Database (runMigrations) import Config main :: IO () main = do config <- getConfig "config.txt" case config of Left error -> putStrLn error Right config -> do runMigrations scotty (port config) $ do middleware $ staticPolicy (noDots >-> addBase "public") get "/" $ getIndexAction post "/signIn" $ do login <- param "login" :: ActionM Text signInAction config login get "/validateSignIn" $ do token <- param "token" :: ActionM Text validateSignInAction token get "/userName" $ getUserName get "/payments" $ getPaymentsAction post "/payment/add" $ do name <- param "name" :: ActionM Text cost <- param "cost" :: ActionM Int createPaymentAction name cost post "/signOut" $ signOutAction get "/users" getUsersAction post "/user/add" $ do email <- param "email" :: ActionM Text name <- param "name" :: ActionM Text addUserAction email name post "/user/delete" $ do email <- param "email" :: ActionM Text deleteUserAction email