From e338c025e54e34474d6eefe837de09678971ff5d Mon Sep 17 00:00:00 2001 From: Steffen Jost Date: Wed, 16 Feb 2022 18:13:52 +0100 Subject: [PATCH] chore(lms): table filter finally typing --- models/lms.model | 4 ++-- src/Handler/LMS/Result.hs | 7 ++++--- src/Model/Types/Lms.hs | 10 ++++++---- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/models/lms.model b/models/lms.model index d332be251..4b369a48e 100644 --- a/models/lms.model +++ b/models/lms.model @@ -86,7 +86,7 @@ LmsUser pin Text resetPin Bool default=false -- should pin be reset? success Bool Maybe -- open, success or failure; isJust indicates user will be deleted from LMS - -- success LmsNotification --this would also encode Day information?! + -- success LmsStatus --this would also encode Day information?! started UTCTime default=now() received UTCTime Maybe -- last acknowledgement by LMS ended UTCTime Maybe -- ident was deleted from LMS @@ -113,7 +113,7 @@ LmsResult LmsAudit qualification QualificationId ident LmsIdent - notificationType LmsNotification + notificationType LmsStatus received UTCTime -- timestamp from LmsUserlist/LmsResult processed UTCTime default=now() deriving Generic diff --git a/src/Handler/LMS/Result.hs b/src/Handler/LMS/Result.hs index ce1439cd0..7c6afdb30 100644 --- a/src/Handler/LMS/Result.hs +++ b/src/Handler/LMS/Result.hs @@ -129,11 +129,12 @@ mkResultTable qid = do ] -- TODO: add more columns for manual debugging view !!! dbtSorting = Map.fromList [ ("ident" , SortColumn $ queryLmsResult >>> (E.^. LmsResultIdent)) - , ("success", SortColumn $ queryLmsResult >>> (E.^. LmsResultSuccess)) - -- , ("success", SortColumn . views queryLmsResult (E.^. LmsResultSuccess)) + -- , ("success", SortColumn $ queryLmsResult >>> (E.^. LmsResultSuccess)) + , ("success", SortColumn $ views (to queryLmsResult) (E.^. LmsResultSuccess)) ] dbtFilter = Map.fromList - [ -- ("ident" , FilterColumn $ queryLmsResult >>> (E.^. LmsResultIdent)) + [ -- singletonMap "ident" . FilterColumn . E.mkContainsFilter $ views (to queryLmsResult) (E.^. LmsResultIdent) + ("ident", FilterColumn . E.mkContainsFilter $ views (to queryLmsResult) (E.^. LmsResultIdent)) ] dbtFilterUI = const mempty -- TODO !!! continue here !!! Manual filtering useful to deal with user complaints! dbtStyle = def diff --git a/src/Model/Types/Lms.hs b/src/Model/Types/Lms.hs index 48122de79..56e65cea9 100644 --- a/src/Model/Types/Lms.hs +++ b/src/Model/Types/Lms.hs @@ -9,17 +9,19 @@ module Model.Types.Lms import Import.NoModel import Database.Persist.Sql +import qualified Database.Esqueleto.Legacy as E import qualified Data.Csv as Csv import Utils.Lens.TH newtype LmsIdent = LmsIdent { getLmsIdent :: Text } deriving (Eq, Ord, Read, Show, Generic, Typeable) - deriving newtype (NFData, PersistField, PersistFieldSql, Csv.ToField, Csv.FromField) + deriving newtype (NFData, PathPiece, PersistField, PersistFieldSql, Csv.ToField, Csv.FromField) +instance E.SqlString LmsIdent where makeLenses_ ''LmsIdent -- TODO: is this a good idea? Maybe just an ordinary Enum and a separate Day Column in the DB would be better, especially since LmsBlocked should really also encode a Day -data LmsNotification = LmsOpen | LmsBlocked | LmsSuccess Day +data LmsStatus = LmsOpen | LmsBlocked | LmsSuccess Day deriving (Eq, Ord, Read, Show, Generic, Typeable, NFData) deriveJSON defaultOptions @@ -27,5 +29,5 @@ deriveJSON defaultOptions , fieldLabelModifier = camelToPathPiece' 1 , omitNothingFields = True , sumEncoding = TaggedObject "lmsaudit" "lmsaction" - } ''LmsNotification -derivePersistFieldJSON ''LmsNotification + } ''LmsStatus +derivePersistFieldJSON ''LmsStatus