From 1a014bee3fd4ed6ec06fe297b50dc5b6f9cc5de7 Mon Sep 17 00:00:00 2001 From: Jasper Van der Jeugt Date: Wed, 13 Dec 2023 11:40:07 +0100 Subject: [PATCH] make janitor actually run --- lib/Zureg/Database.hs | 1 - lib/Zureg/Main/Janitor.hs | 64 +++++++++++---------------------------- 2 files changed, 18 insertions(+), 47 deletions(-) diff --git a/lib/Zureg/Database.hs b/lib/Zureg/Database.hs index bffbc04..6b8376f 100644 --- a/lib/Zureg/Database.hs +++ b/lib/Zureg/Database.hs @@ -184,7 +184,6 @@ registrantsSummaryToAttributeValue RegistrantsSummary {..} = , ("scanned", avi rsScanned) ] - registrantsSummaryFromAttributeValue :: DynamoDB.AttributeValue -> Maybe RegistrantsSummary registrantsSummaryFromAttributeValue av = RegistrantsSummary diff --git a/lib/Zureg/Main/Janitor.hs b/lib/Zureg/Main/Janitor.hs index 96dd719..64e8b16 100644 --- a/lib/Zureg/Main/Janitor.hs +++ b/lib/Zureg/Main/Janitor.hs @@ -5,59 +5,39 @@ module Zureg.Main.Janitor ( main ) where -import Control.Monad (guard) -import qualified Data.Aeson as A -import Data.List (sortOn) -import qualified Data.Time as Time -import qualified Eventful as E -import qualified System.IO as IO -import qualified Zureg.Database as Database -import Zureg.Hackathon (Hackathon) -import qualified Zureg.Hackathon as Hackathon -import qualified Zureg.Lambda as Lambda +import Control.Monad (guard) +import qualified Data.Aeson as A +import Data.List (sortOn) +import Data.Maybe +import qualified Data.Time as Time +import qualified Eventful as E +import qualified Zureg.Database as Database +import qualified Zureg.Hackathon as Hackathon +import Zureg.Hackathon (Hackathon) import Zureg.Main.PopWaitlist (popWaitinglistUUIDs) import Zureg.Model -import Data.Maybe - - - --------------------------------------------------------------------------------- --- The request and response types for the janitor lambda are mostly ignored, --- it's just a thing that runs from time to time. - -data Request = Request - -instance A.FromJSON Request where - parseJSON _ = pure Request - -data Response - = MessageResponse String - | ErrorResponse String - -instance A.ToJSON Response where - toJSON (MessageResponse msg) = A.object ["message" A..= msg] - toJSON (ErrorResponse err) = A.object ["error" A..= err] countByState ::(RegisterState -> Bool) -> [Registrant a] -> Int countByState f registrants = length $ filter f $ mapMaybe rState registrants isWaiting :: RegisterState -> Bool isWaiting Waitlisted = True -isWaiting _ = False +isWaiting _ = False isConfirmed :: RegisterState -> Bool isConfirmed Confirmed = True -isConfirmed _ = False +isConfirmed _ = False isAttending :: RegisterState -> Bool -isAttending Confirmed = True +isAttending Confirmed = True isAttending Registered = True -isAttending _ = False +isAttending _ = False -main :: forall a. (Eq a, A.FromJSON a, A.ToJSON a) => Hackathon a -> IO () +main + :: forall a. (Eq a, A.FromJSON a, A.ToJSON a) + => Hackathon a -> IO Database.RegistrantsSummary main hackathon = - Database.withHandle (Hackathon.databaseConfig hackathon) $ \db -> - Lambda.main IO.stdin IO.stdout (ErrorResponse . show) $ \Request -> do + Database.withHandle (Hackathon.databaseConfig hackathon) $ \db -> do uuids <- Database.getRegistrantUuids db registrants <- mapM (Database.getRegistrant db) uuids :: IO [Registrant a] @@ -81,15 +61,7 @@ main hackathon = } Database.putRegistrantsSummary db summary - pure $ MessageResponse $ "Computed summary: " ++ renderSummary summary - -renderSummary :: Database.RegistrantsSummary -> String -renderSummary rs = show (Database.rsTotal rs) ++ " total, " ++ - show (Database.rsWaiting rs) ++ " waiting, " ++ - show (Database.rsAttending rs) ++ " attending, " ++ - show (Database.rsConfirmed rs) ++ " confirmed, " ++ - show (Database.rsAvailable rs) ++ " available, " ++ - show (Database.rsScanned rs) ++ " scanned" + pure summary -- This is to put Nothings to the end of a sorted list newtype Fifo = Fifo (Maybe Time.UTCTime) deriving Eq