blob: 1a151fcbf0fe4eae3882aca47f91324759d9e91f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
{-# LANGUAGE OverloadedStrings #-}
import Web.Scotty
import Network.Wai.Middleware.Static
import Control.Concurrent (forkIO)
import MonthlyPaymentJob (monthlyPaymentJobListener)
import Data.Text (Text)
import qualified Data.Text.IO as TIO
import Controller.Index
import Controller.SignIn
import Controller.Payment
import Controller.User
import Model.Database (runMigrations)
import Model.Frequency
import Config
main :: IO ()
main = do
runMigrations
_ <- forkIO monthlyPaymentJobListener
eitherConfig <- getConfig "config.txt"
case eitherConfig of
Left errorMessage ->
TIO.putStrLn errorMessage
Right config -> do
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 config token
post "/signOut" $
signOutAction
get "/whoAmI" $
whoAmIAction
get "/users" $ do
getUsersAction
get "/payments" $ do
page <- param "page" :: ActionM Int
perPage <- param "perPage" :: ActionM Int
getPaymentsAction page perPage
get "/monthlyPayments" $ do
getMonthlyPaymentsAction
post "/payment/add" $ do
name <- param "name" :: ActionM Text
cost <- param "cost" :: ActionM Int
frequency <- param "frequency" :: ActionM Frequency
createPaymentAction name cost frequency
post "/payment/delete" $ do
paymentId <- param "id" :: ActionM Text
deletePaymentAction paymentId
get "/payments/total" $ do
getTotalPaymentsAction
get "/payments/count" $ do
getPaymentsCountAction
|