diff --git a/src/Handler/LMS.hs b/src/Handler/LMS.hs index e95a19ebe..a707d6f81 100644 --- a/src/Handler/LMS.hs +++ b/src/Handler/LMS.hs @@ -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