blob: 7ae8c1cf0b4fa0426d9a6ff0708be4ced3fd6e6d (
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
|
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai.Middleware.Static
import qualified Data.Text.Lazy as LT
import Web.Scotty
import Job.Daemon (runDaemons)
import Model.Database (runMigrations)
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.SignIn as SignIn
main :: IO ()
main = do
runMigrations
conf <- Conf.get "application.conf"
_ <- runDaemons conf
scotty (Conf.port conf) $ do
middleware . staticPolicy $ noDots >-> addBase "public"
get "/" $ do
signInToken <- mbParam "signInToken"
Index.get conf signInToken
post "/signIn" $ do
email <- param "email"
SignIn.signIn conf email
post "/signOut" $
Index.signOut conf
post "/payment" $
jsonData >>= Payment.create
put "/payment" $
jsonData >>= Payment.editOwn
delete "/payment" $ do
paymentId <- param "id"
Payment.deleteOwn paymentId
post "/income" $
jsonData >>= Income.create
put "/income" $
jsonData >>= Income.editOwn
delete "/income" $ do
incomeId <- param "id"
Income.deleteOwn incomeId
post "/category" $
jsonData >>= Category.create
put "/category" $
jsonData >>= Category.edit
delete "/category" $ do
categoryId <- param "id"
Category.delete categoryId
mbParam :: Parsable a => LT.Text -> ActionM (Maybe a)
mbParam key = (Just <$> param key) `rescue` (const . return $ Nothing)
|