From b4f267ce14c753e952508e6313eec0ff9a99a879 Mon Sep 17 00:00:00 2001 From: stuebinm Date: Sun, 3 Jul 2022 00:21:25 +0200 Subject: add service monad (with built-in logging) --- lib/Server/GTFS_RT.hs | 3 ++- lib/Server/Util.hs | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 lib/Server/Util.hs (limited to 'lib/Server') diff --git a/lib/Server/GTFS_RT.hs b/lib/Server/GTFS_RT.hs index e2b23e0..85ea8cd 100644 --- a/lib/Server/GTFS_RT.hs +++ b/lib/Server/GTFS_RT.hs @@ -65,6 +65,7 @@ import Servant.API ((:<|>) (..)) import Servant.Server (Handler (Handler), Server) +import Server.Util (Service) uuidUtf8 :: UUID.UUID -> Utf8 uuidUtf8 = Utf8 . fromStrict . UUID.toASCIIBytes @@ -86,7 +87,7 @@ toStupidDate date = toUtf8 toStupidTime :: UTCTime -> Word64 toStupidTime = fromIntegral . systemSeconds . utcToSystemTime -gtfsRealtimeServer :: GTFS -> Pool SqlBackend -> Server GtfsRealtimeAPI +gtfsRealtimeServer :: GTFS -> Pool SqlBackend -> Service GtfsRealtimeAPI gtfsRealtimeServer gtfs dbpool = handleServiceAlerts :<|> handleTripUpdates :<|> handleVehiclePositions where handleServiceAlerts = runSql dbpool $ do -- TODO filter: only select current & future days diff --git a/lib/Server/Util.hs b/lib/Server/Util.hs new file mode 100644 index 0000000..45c2477 --- /dev/null +++ b/lib/Server/Util.hs @@ -0,0 +1,13 @@ + + +-- | mostly the monad the service runs in +module Server.Util (Service, ServiceM, runService) where + +import Control.Monad.Logger (LoggingT, runStderrLoggingT) +import Servant (Handler, ServerT) + +type ServiceM = LoggingT Handler +type Service api = ServerT api ServiceM + +runService :: ServiceM a -> Handler a +runService = runStderrLoggingT -- cgit v1.2.3