From d5c7beb4507f5a0ba361464173447ed3521d9973 Mon Sep 17 00:00:00 2001 From: stuebinm Date: Sat, 2 Jul 2022 18:14:47 +0200 Subject: rudimentary admin api implementation --- lib/Server.hs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'lib/Server.hs') diff --git a/lib/Server.hs b/lib/Server.hs index 5ece540..2b86b6e 100644 --- a/lib/Server.hs +++ b/lib/Server.hs @@ -29,7 +29,7 @@ import Data.Map (Map) import qualified Data.Map as M import Data.Pool (Pool) import Data.Proxy (Proxy (Proxy)) -import Data.Swagger hiding (get) +import Data.Swagger hiding (get, delete) import Data.Text (Text) import Data.Time (NominalDiffTime, UTCTime (utctDay), addUTCTime, @@ -112,7 +112,22 @@ server gtfs@GTFS{..} dbpool = handleDebugAPI :<|> handleStations :<|> handleTime adminServer :: GTFS -> Pool SqlBackend -> Server AdminAPI -adminServer = undefined +adminServer gtfs dbpool = + addAnnounce :<|> delAnnounce :<|> modTripDate Added Cancelled + :<|> modTripDate Cancelled Added :<|> extraTrip + where addAnnounce ann@Announcement{..} = runSql dbpool $ do + AnnouncementKey uuid <- insert ann + pure uuid + delAnnounce uuid = runSql dbpool $ do + delete (AnnouncementKey uuid) + modTripDate one two tripId day = runSql dbpool $ do + getBy (TripAndDay tripId day) >>= \case + Just (Entity key (ScheduleAmendment _ _ status)) -> do + when (status == two) $ delete key + Nothing -> do + insert (ScheduleAmendment tripId day one) + pure () + extraTrip = error "unimplemented!" -- TODO: proper debug logging for expired tokens -- cgit v1.2.3