chore(lms): wip-groupBy for counting

This commit is contained in:
Steffen Jost 2022-03-31 18:25:02 +02:00
parent e669e495f9
commit 37c0f273b1

View File

@ -45,16 +45,27 @@ getLmsAllR = do
setTitleI MsgMenuQualifications setTitleI MsgMenuQualifications
$(widgetFile "lms-all") $(widgetFile "lms-all")
type AllQualicationTableExpr = E.SqlExpr (Entity Qualification) `E.InnerJoin` E.SqlExpr (Entity QualificationUser)
type AllQualificationTableData = DBRow (Entity Qualification, Ex.Value Word64) type AllQualificationTableData = DBRow (Entity Qualification, Ex.Value Word64)
queryAllQualification :: Lens' AllQualificationTableData Qualification queryAllQualification :: Lens' AllQualificationTableData Qualification
queryAllQualification = _dbrOutput . _1 . _entityVal queryAllQualification = _dbrOutput . _1 . _entityVal
queryAllQualification1 :: AllQualicationTableExpr -> E.SqlExpr (Entity Qualification)
queryAllQualification1 = $(sqlIJproj 2 1)
queryAllQualification2 :: AllQualicationTableExpr -> E.SqlExpr (Entity QualificationUser)
queryAllQualification2 = $(sqlIJproj 2 2)
mkLmsAllTable :: DB (Any, Widget) mkLmsAllTable :: DB (Any, Widget)
mkLmsAllTable = do mkLmsAllTable = do
let let
resultDBTable = DBTable{..} resultDBTable = DBTable{..}
where where
dbtSQLQuery quali = do dbtSQLQuery = runReaderT $ do
quali <- asks queryAllQualification1
quser <- asks queryAllQualification2
lift $ do
-- 1. Just a constant dummy for debugging: -- 1. Just a constant dummy for debugging:
-- let x = E.val (42::Word64) -- let x = E.val (42::Word64)
-- return (quali, x) -- return (quali, x)
@ -65,15 +76,15 @@ mkLmsAllTable = do
-- return (quali, x) -- return (quali, x)
-- --
-- 3. SubSelect with new syntax: -- 3. SubSelect with new syntax:
x <- pure . Ex.subSelectCount $ do --x <- pure . Ex.subSelectCount $ do
quser <- Ex.from $ Ex.table @QualificationUser -- quser <- Ex.from $ Ex.table @QualificationUser
Ex.where_ $ quser Ex.^. QualificationUserQualification Ex.==. quali Ex.^. QualificationId -- Ex.where_ $ quser Ex.^. QualificationUserQualification Ex.==. quali Ex.^. QualificationId
return (quali, x) --return (quali, x)
-- --
-- 4. Join / GroupBy -- 4. Join / GroupBy
--Ex.on $ quser Ex.^. QualificationUserQualification Ex.==. quali Ex.^. QualificationId E.on $ quser E.^. QualificationUserQualification E.==. quali E.^. QualificationId
--Ex.groupBy (quali E.^. QualificationId) E.groupBy (quali E.^. QualificationId)
--return (quali, count $ quser E.^. QualificationUserId) return (quali, E.count $ quser E.^. QualificationUserId)
dbtRowKey = (E.^. QualificationId) dbtRowKey = (E.^. QualificationId)
dbtProj = dbtProjFilteredPostId -- TODO: or dbtProjSimple what is the difference? dbtProj = dbtProjFilteredPostId -- TODO: or dbtProjSimple what is the difference?
dbtColonnade = dbColonnade $ mconcat dbtColonnade = dbColonnade $ mconcat