chore(lms): log newly unreported idents

This commit is contained in:
Steffen Jost 2023-11-07 17:06:46 +01:00
parent 5936435c54
commit 2d37315d18
3 changed files with 30 additions and 4 deletions

View File

@ -182,4 +182,5 @@ LmsReportLog
result LmsState -- (0|1|2) 0=LmsFailed[too many tries], 1=LmsOpen, 2=LmsPassed[success]
lock Bool -- (0|1)
timestamp UTCTime default=now()
missing Bool default=false
deriving Generic

View File

@ -389,16 +389,40 @@ dispatchJobLmsReports qid = JobHandlerAtomic act
E.&&. lrl E.^. LmsReportLogIdent E.==. lreport E.^. LmsReportIdent
E.orderBy [E.desc $ lrl E.^. LmsReportLogTimestamp]
return $ lreport E.^. LmsReportResult E.==. lrl E.^. LmsReportLogResult
E.&&. lreport E.^. LmsReportLock E.==. lrl E.^. LmsReportLogLock
E.&&. lreport E.^. LmsReportLock E.==. lrl E.^. LmsReportLogLock
E.&&. E.not_ (lrl E.^. LmsReportLogMissing)
E.where_ $ lreport E.^. LmsReportQualification E.==. E.val qid
E.&&. E.not_ (E.isTrue samelog)
return (LmsReportLog
E.<# (lreport E.^. LmsReportQualification)
E.<&> (lreport E.^. LmsReportIdent )
E.<&> (lreport E.^. LmsReportDate )
E.<&> E.nothing
E.<&> (lreport E.^. LmsReportResult )
E.<&> (lreport E.^. LmsReportLock )
E.<&> (lreport E.^. LmsReportTimestamp ))
E.<&> (lreport E.^. LmsReportTimestamp )
E.<&> E.false)
E.insertSelect $ do
lrl <- E.from $ E.table @LmsReportLog
E.where_ $ E.not_ (lrl E.^. LmsReportLogMissing)
E.&&. E.notExists (do
lreport <- E.from $ E.table @LmsReport
E.where_ $ lreport E.^. LmsReportQualification E.==. E.val qid
E.&&. lreport E.^. LmsReportIdent E.==. lrl E.^. LmsReportLogIdent
)
E.&&. E.notExists (do
lrl_old <- E.from $ E.table @LmsReportLog
E.where_ $ lrl_old E.^. LmsReportLogQualification E.==. E.val qid
E.&&. lrl_old E.^. LmsReportLogIdent E.==. lrl E.^. LmsReportLogIdent
E.&&. lrl_old E.^. LmsReportLogTimestamp E.>. lrl E.^. LmsReportLogTimestamp
)
return (LmsReportLog
E.<# (lrl E.^. LmsReportLogQualification)
E.<&> (lrl E.^. LmsReportLogIdent )
E.<&> (lrl E.^. LmsReportLogDate )
E.<&> (lrl E.^. LmsReportLogResult )
E.<&> (lrl E.^. LmsReportLogLock )
E.<&> E.val now
E.<&> E.true)
repProc <- deleteWhereCount [LmsReportQualification ==. qid]
$logInfoS "LMS" [st|Processed #{tshow repProc} e-learning status reports for qualification #{tshow qid}.|]

View File

@ -139,7 +139,8 @@ migrateManual = do
, ("idx_qualification_user_block_unblock","CREATE INDEX idx_qualification_user_block_unblock ON \"qualification_user_block\" (\"unblock\")")
, ("idx_qualification_user_block_from" ,"CREATE INDEX idx_qualification_user_block_from ON \"qualification_user_block\" (\"from\")")
, ("idx_print_job_apc_ident" ,"CREATE INDEX idx_print_job_apc_ident ON \"print_job\" (\"apc_ident\")")
, ("idx_user_avs_card_person_id" ,"CREATE INDEX idx_user_avs_card_person_id ON \"user_avs_card\" (\"person_id\")")
, ("idx_user_avs_card_person_id" ,"CREATE INDEX idx_user_avs_card_person_id ON \"user_avs_card\" (\"person_id\")")
, ("idx_lms_report_log_q_ident_time" ,"CREATE INDEX idx_lms_report_log_q_ident_time ON \"lms_report_log\" (\"qualification\",\"ident\",\"timestamp\")")
]
where
addIndex :: Text -> Sql -> Migration