aboutsummaryrefslogtreecommitdiff
path: root/app/Main.hs
blob: 7d3b5dcbd64073a190c66df635017a22d6092c2f (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
{-# LANGUAGE DataKinds                  #-}
{-# LANGUAGE DeriveAnyClass             #-}
{-# LANGUAGE DeriveGeneric              #-}
{-# LANGUAGE DerivingStrategies         #-}
{-# LANGUAGE FlexibleInstances          #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE KindSignatures             #-}
{-# LANGUAGE LambdaCase                 #-}
{-# LANGUAGE RecordWildCards            #-}
{-# LANGUAGE StandaloneDeriving         #-}
{-# LANGUAGE StandaloneKindSignatures   #-}
{-# LANGUAGE TypeApplications           #-}
{-# LANGUAGE TypeFamilies               #-}
-- |

module Main where


import qualified Data.Aeson                           as A
import qualified Data.ByteString.Lazy                 as LB
import           Data.Default.Class                   (def)
import           Data.Maybe                           (fromJust, fromMaybe)
import           Data.Time.Calendar.MonthDay          (monthAndDayToDayOfYearValid)
import qualified Data.Time.Calendar.OrdinalDate       as Day
import           Network.Wai.Handler.Warp             (run)
import           Network.Wai.Middleware.RequestLogger (OutputFormat (..),
                                                       RequestLoggerSettings (..),
                                                       mkRequestLogger)
import Database.Persist.Postgresql
import Control.Monad.Logger (runStderrLoggingT)
import           Control.Monad.IO.Class (MonadIO (liftIO))

import           GTFS
import           Server

connStr = "user=travelynx"

main :: IO ()
main = do
  gtfs <- loadGtfs "./gtfs.zip"
  loggerMiddleware <- mkRequestLogger
    $ def { outputFormat = Detailed True }
  runStderrLoggingT $ withPostgresqlPool connStr 10 $ \pool -> liftIO $ do
    app <- application gtfs pool
    putStrLn "starting server …"
    run 4000 (loggerMiddleware app)