blob: 2ce8115f5594626aa46ecadb6a7860e66070e840 (
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
|
{-# LANGUAGE OverloadedStrings #-}
import Web.Scotty
import Network.Wai.Middleware.Static
import Job.Daemon (runDaemons)
import qualified Data.Text.Lazy as LT
import Controller.Index
import Controller.SignIn
import Controller.Payment as Payment
import Controller.Income as Income
import Model.Database (runMigrations)
import qualified Conf
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"
getIndex conf signInToken
post "/signIn" $ do
email <- param "email"
signIn conf email
post "/signOut" $
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
mbParam :: Parsable a => LT.Text -> ActionM (Maybe a)
mbParam key = (Just <$> param key) `rescue` (const . return $ Nothing)
|