chore(lms): wip-groupBy for counting
This commit is contained in:
parent
e669e495f9
commit
37c0f273b1
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user