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