chore(jobs): stub for queued job interface towards #95

This commit is contained in:
Steffen Jost 2023-07-12 16:08:57 +00:00
parent 1ce8f75c2d
commit 7ed891a120
9 changed files with 66 additions and 1 deletions

View File

@ -66,6 +66,7 @@ BreadcrumbFaq !ident-ok: FAQ
BreadcrumbSheetPersonalisedFiles: Personalisierte Dateien herunterladen BreadcrumbSheetPersonalisedFiles: Personalisierte Dateien herunterladen
BreadcrumbCourseSheetPersonalisedFiles: Vorlage für personalisierte Übungsblatt-Dateien herunterladen BreadcrumbCourseSheetPersonalisedFiles: Vorlage für personalisierte Übungsblatt-Dateien herunterladen
BreadcrumbAdminCrontab !ident-ok: Crontab BreadcrumbAdminCrontab !ident-ok: Crontab
BreadcrumbAdminJobs !ident-ok: Jobs
BreadcrumbError: Fehler BreadcrumbError: Fehler
BreadcrumbUpload !ident-ok: Upload BreadcrumbUpload !ident-ok: Upload
BreadcrumbUserAdd: Benutzer:in anlegen BreadcrumbUserAdd: Benutzer:in anlegen

View File

@ -66,6 +66,7 @@ BreadcrumbFaq: FAQ
BreadcrumbSheetPersonalisedFiles: Download personalised sheet files BreadcrumbSheetPersonalisedFiles: Download personalised sheet files
BreadcrumbCourseSheetPersonalisedFiles: Download template for personalised sheet files BreadcrumbCourseSheetPersonalisedFiles: Download template for personalised sheet files
BreadcrumbAdminCrontab: Crontab BreadcrumbAdminCrontab: Crontab
BreadcrumbAdminJobs !ident-ok: Jobs
BreadcrumbError: Error BreadcrumbError: Error
BreadcrumbUpload: Upload BreadcrumbUpload: Upload
BreadcrumbUserAdd: Add user BreadcrumbUserAdd: Add user

View File

@ -107,6 +107,7 @@ MenuFaq !ident-ok: FAQ
MenuSheetPersonalisedFiles: Personalisierte Dateien herunterladen MenuSheetPersonalisedFiles: Personalisierte Dateien herunterladen
MenuCourseSheetPersonalisedFiles: Vorlage für personalisierte Übungsblatt-Dateien herunterladen MenuCourseSheetPersonalisedFiles: Vorlage für personalisierte Übungsblatt-Dateien herunterladen
MenuAdminCrontab !ident-ok: Crontab MenuAdminCrontab !ident-ok: Crontab
MenuAdminJobs: Job Warteschlange
MenuGlossary: Begriffsverzeichnis MenuGlossary: Begriffsverzeichnis
MenuVersion: Versionsgeschichte MenuVersion: Versionsgeschichte
MenuCourseNewsNew: Neue Kursartnachricht MenuCourseNewsNew: Neue Kursartnachricht

View File

@ -108,6 +108,7 @@ MenuFaq: FAQ
MenuSheetPersonalisedFiles: Download personalised sheet files MenuSheetPersonalisedFiles: Download personalised sheet files
MenuCourseSheetPersonalisedFiles: Download template for personalised sheet files MenuCourseSheetPersonalisedFiles: Download template for personalised sheet files
MenuAdminCrontab: Crontab MenuAdminCrontab: Crontab
MenuAdminJobs: Job queue
MenuGlossary: Glossary MenuGlossary: Glossary
MenuVersion: Version history MenuVersion: Version history
MenuCourseNewsNew: Add course type news MenuCourseNewsNew: Add course type news

View File

@ -78,3 +78,5 @@ TableCompany: Firma
TableCompanies: Firmen TableCompanies: Firmen
TableCompanyNos: Firmennummern TableCompanyNos: Firmennummern
TableSupervisor: Ansprechpartner TableSupervisor: Ansprechpartner
TableCreationTime: Erstellungszeit
TableJobContent !ident-ok: Job

View File

@ -78,3 +78,5 @@ TableCompany: Company
TableCompanies: Companies TableCompanies: Companies
TableCompanyNos: Company numbers TableCompanyNos: Company numbers
TableSupervisor: Supervisor TableSupervisor: Supervisor
TableCreationTime: Creation
TableJobContent: Job

1
routes
View File

@ -66,6 +66,7 @@
/admin/errMsg AdminErrMsgR GET POST /admin/errMsg AdminErrMsgR GET POST
/admin/tokens AdminTokensR GET POST /admin/tokens AdminTokensR GET POST
/admin/crontab AdminCrontabR GET /admin/crontab AdminCrontabR GET
/admin/crontab/jobs AdminJobsR GET POST
/admin/avs AdminAvsR GET POST /admin/avs AdminAvsR GET POST
/admin/avs/#CryptoUUIDUser AdminAvsUserR GET /admin/avs/#CryptoUUIDUser AdminAvsUserR GET
/admin/ldap AdminLdapR GET POST /admin/ldap AdminLdapR GET POST

View File

@ -112,6 +112,7 @@ breadcrumb AdminTestPdfR = i18nCrumb MsgMenuAdminTest $ Just
breadcrumb AdminErrMsgR = i18nCrumb MsgMenuAdminErrMsg $ Just AdminR breadcrumb AdminErrMsgR = i18nCrumb MsgMenuAdminErrMsg $ Just AdminR
breadcrumb AdminTokensR = i18nCrumb MsgMenuAdminTokens $ Just AdminR breadcrumb AdminTokensR = i18nCrumb MsgMenuAdminTokens $ Just AdminR
breadcrumb AdminCrontabR = i18nCrumb MsgBreadcrumbAdminCrontab $ Just AdminR breadcrumb AdminCrontabR = i18nCrumb MsgBreadcrumbAdminCrontab $ Just AdminR
breadcrumb AdminJobsR = i18nCrumb MsgBreadcrumbAdminJobs $ Just AdminCrontabR
breadcrumb AdminAvsR = i18nCrumb MsgMenuAvs $ Just AdminR breadcrumb AdminAvsR = i18nCrumb MsgMenuAvs $ Just AdminR
breadcrumb AdminAvsUserR{} = i18nCrumb MsgAvsPersonInfo $ Just AdminAvsR breadcrumb AdminAvsUserR{} = i18nCrumb MsgAvsPersonInfo $ Just AdminAvsR
breadcrumb AdminLdapR = i18nCrumb MsgMenuLdap $ Just AdminR breadcrumb AdminLdapR = i18nCrumb MsgMenuLdap $ Just AdminR
@ -2396,6 +2397,13 @@ pageActions PrintCenterR = do
dayLinks <- mapM toDayAck $ Map.toAscList dayMap dayLinks <- mapM toDayAck $ Map.toAscList dayMap
return $ manualSend : take 9 dayLinks return $ manualSend : take 9 dayLinks
pageActions AdminCrontabR = return
[ NavPageActionPrimary
{ navLink = defNavLink MsgMenuAdminJobs AdminJobsR
, navChildren = []
}
]
pageActions _ = return [] pageActions _ = return []
submissionList :: ( MonadIO m submissionList :: ( MonadIO m

View File

@ -6,23 +6,31 @@
module Handler.Admin.Crontab module Handler.Admin.Crontab
( getAdminCrontabR ( getAdminCrontabR
, getAdminJobsR
, postAdminJobsR
) where ) where
import Import import Import
import Jobs import Jobs
import Handler.Utils.DateTime import Handler.Utils
import qualified Data.Aeson.Encode.Pretty as Pretty import qualified Data.Aeson.Encode.Pretty as Pretty
import Data.Aeson.Encode.Pretty (encodePrettyToTextBuilder') import Data.Aeson.Encode.Pretty (encodePrettyToTextBuilder')
-- import qualified Data.CaseInsensitive as CI
import qualified Data.Text as Text import qualified Data.Text as Text
import qualified Data.Text.Lazy.Builder as Text.Builder import qualified Data.Text.Lazy.Builder as Text.Builder
import qualified Data.Map as Map
import qualified Data.HashSet as HashSet import qualified Data.HashSet as HashSet
import qualified Data.HashMap.Strict as HashMap import qualified Data.HashMap.Strict as HashMap
import qualified Data.UUID as UUID import qualified Data.UUID as UUID
import qualified Database.Esqueleto.Legacy as E
-- import qualified Database.Esqueleto.Utils as E
-- import Database.Esqueleto.Utils.TH
deriveJSON defaultOptions deriveJSON defaultOptions
{ constructorTagModifier = camelToPathPiece' 1 { constructorTagModifier = camelToPathPiece' 1
@ -96,3 +104,43 @@ getAdminCrontabR = do
, Text.splitOn "-" t , Text.splitOn "-" t
) )
} }
getAdminJobsR, postAdminJobsR :: Handler Html
getAdminJobsR = postAdminJobsR
postAdminJobsR = do
let
jobsDBTable = DBTable{..}
where
resultJob :: Lens' (DBRow (Entity QueuedJob)) (Entity QueuedJob)
resultJob = _dbrOutput
dbtSQLQuery = return
dbtRowKey = (E.^. QueuedJobId)
dbtProj = dbtProjId
dbtColonnade = dbColonnade $ mconcat -- remove call to dbColonnade if table actions are added
[ sortable (Just "creation-time") (i18nCell MsgTableCreationTime) $ \(view $ resultJob . _entityVal -> QueuedJob{..}) -> dateTimeCell queuedJobCreationTime
, sortable (Just "content") (i18nCell MsgTableCreationTime) $ \(view $ resultJob . _entityVal -> QueuedJob{..}) -> stringCell $ show queuedJobContent
]
dbtSorting = Map.fromList
[ ("creation-time", SortColumnNullsInv (E.^. QueuedJobCreationTime))
, ("content" , SortColumn (E.^. QueuedJobContent))
]
dbtFilter = Map.empty
dbtFilterUI = const mempty
dbtStyle = def
dbtParams = def
dbtIdent :: Text
dbtIdent = "queued-jobs"
dbtCsvEncode = noCsvEncode
dbtCsvDecode = Nothing
dbtExtraReps = []
jobsDBTableValidator = def
& defaultSorting [SortDescBy "creation-time"]
((), jobsTable) <- runDB $ dbTable jobsDBTableValidator jobsDBTable
siteLayoutMsg MsgMenuAdminJobs $ do
setTitleI MsgMenuAdminJobs
[whamlet|
^{jobsTable}
|]