blob: 999f9730e6f00f9c256cd4c1071485bc96f20364 (
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
module Main
( main
) where
import qualified Network.HTTP.Types.Status as Status
import Network.Wai.Middleware.Gzip (GzipFiles (GzipCompress))
import qualified Network.Wai.Middleware.Gzip as W
import Network.Wai.Middleware.Static
import qualified Web.Scotty as S
import qualified Conf
import qualified Controller.Category as Category
import qualified Controller.Income as Income
import qualified Controller.Index as Index
import qualified Controller.Payment as Payment
import qualified Controller.User as User
import qualified Design.Global as Design
import Job.Daemon (runDaemons)
main :: IO ()
main = do
conf <- Conf.get "application.conf"
_ <- runDaemons conf
S.scotty (Conf.port conf) $ do
S.middleware $
W.gzip $ W.def { W.gzipFiles = GzipCompress }
S.middleware . staticPolicy $
noDots >-> addBase "public"
S.get "/css/main.css" $ do
S.setHeader "Content-Type" "text/css"
S.text Design.globalDesign
S.post "/api/signIn" $
S.jsonData >>= Index.signIn conf
S.post "/api/signOut" $
Index.signOut conf
S.get "/api/users"$
User.list
S.get "/api/payments" $ do
frequency <- S.param "frequency"
page <- S.param "page"
perPage <- S.param "perPage"
search <- S.param "search"
Payment.list (read frequency) page perPage search
S.get "/api/payment/category" $ do
name <- S.param "name"
Payment.searchCategory name
S.post "/api/payment" $
S.jsonData >>= Payment.create
S.put "/api/payment" $
S.jsonData >>= Payment.edit
S.delete "/api/payment/:id" $ do
paymentId <- S.param "id"
Payment.delete paymentId
S.get "/api/incomes" $ do
page <- S.param "page"
perPage <- S.param "perPage"
Income.list page perPage
S.post "/api/income" $
S.jsonData >>= Income.create
S.put "/api/income" $
S.jsonData >>= Income.edit
S.delete "/api/income/:id" $ do
incomeId <- S.param "id"
Income.delete incomeId
S.get "/api/allCategories" $ do
Category.listAll
S.get "/api/categories" $ do
page <- S.param "page"
perPage <- S.param "perPage"
Category.list page perPage
S.post "/api/category" $
S.jsonData >>= Category.create
S.put "/api/category" $
S.jsonData >>= Category.edit
S.delete "/api/category/:id" $ do
categoryId <- S.param "id"
Category.delete categoryId
S.notFound $ do
S.status Status.ok200
Index.get conf
|