blob: 3d61481dfc8c575643b02304cc70a068ad29f87c (
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
79
80
81
82
|
{-# 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 Controller.Payer
import Model.Database (runMigrations)
import Model.Frequency
import qualified Config
main :: IO ()
main = do
runMigrations
_ <- forkIO monthlyPaymentJobListener
eitherConfig <- Config.getConfig "config.txt"
case eitherConfig of
Left errorMessage ->
TIO.putStrLn errorMessage
Right config -> do
scotty (Config.port config) $ do
middleware $
staticPolicy (noDots >-> addBase "public")
get "/" (getIndex config)
post "/signOut" signOut
-- SignIn
post "/signIn" $ do
login <- param "login" :: ActionM Text
signIn config login
get "/validateSignIn" $ do
token <- param "token" :: ActionM Text
validateSignIn config token
-- Users
get "/users" getUsers
get "/whoAmI" whoAmI
get "/income" getIncome
post "/income" $ do
amount <- param "amount" :: ActionM Int
setIncome amount
-- Payments
get "/payments" $ do
page <- param "page" :: ActionM Int
perPage <- param "perPage" :: ActionM Int
getPayments page perPage
get "/monthlyPayments" getMonthlyPayments
post "/payment/add" $ do
name <- param "name" :: ActionM Text
cost <- param "cost" :: ActionM Int
frequency <- param "frequency" :: ActionM Frequency
createPayment name cost frequency
post "/payment/delete" $ do
paymentId <- param "id" :: ActionM Text
deletePayment paymentId
get "/payments/count" getPaymentsCount
-- Payers
get "/payers" getPayers
|