{-# 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)