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