fix(study-features): also apply caching to table columns
This commit is contained in:
parent
8f6d54d012
commit
564c0b975a
@ -8,6 +8,7 @@ module Handler.Utils.StudyFeatures
|
|||||||
, cacheStudyFeatureRelevance
|
, cacheStudyFeatureRelevance
|
||||||
, isCourseStudyFeature, courseUserStudyFeatures
|
, isCourseStudyFeature, courseUserStudyFeatures
|
||||||
, isExternalExamStudyFeature, externalExamUserStudyFeatures
|
, isExternalExamStudyFeature, externalExamUserStudyFeatures
|
||||||
|
, isTermStudyFeature
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Import.NoFoundation
|
import Import.NoFoundation
|
||||||
@ -180,3 +181,6 @@ externalExamUserStudyFeatures eeId uid = do
|
|||||||
, userTableSemester = studyFeaturesSemester
|
, userTableSemester = studyFeaturesSemester
|
||||||
, userTableFieldType = studyFeaturesType
|
, userTableFieldType = studyFeaturesType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isTermStudyFeature :: E.SqlExpr (Entity Term) -> E.SqlExpr (Entity StudyFeatures) -> E.SqlExpr (E.Value Bool)
|
||||||
|
isTermStudyFeature = isRelevantStudyFeatureCached TermId
|
||||||
|
|||||||
@ -789,7 +789,7 @@ colStudyFeatures resultFeatures = Colonnade.singleton (fromSortable header) body
|
|||||||
fltrRelevantStudyFeaturesTerms :: OpticFilterColumn' t (Set Text) (E.SqlExpr (E.Value TermId), E.SqlExpr (E.Value UserId))
|
fltrRelevantStudyFeaturesTerms :: OpticFilterColumn' t (Set Text) (E.SqlExpr (E.Value TermId), E.SqlExpr (E.Value UserId))
|
||||||
fltrRelevantStudyFeaturesTerms queryTermUser = singletonMap "features-terms" . FilterColumn $ \t criterias ->
|
fltrRelevantStudyFeaturesTerms queryTermUser = singletonMap "features-terms" . FilterColumn $ \t criterias ->
|
||||||
E.subSelectOr . E.from $ \(term `E.InnerJoin` studyFeatures) -> do
|
E.subSelectOr . E.from $ \(term `E.InnerJoin` studyFeatures) -> do
|
||||||
E.on $ isRelevantStudyFeature TermId term studyFeatures
|
E.on $ isTermStudyFeature term studyFeatures
|
||||||
|
|
||||||
let (tid, uid) = t ^. queryTermUser
|
let (tid, uid) = t ^. queryTermUser
|
||||||
E.where_ $ studyFeatures E.^. StudyFeaturesUser E.==. uid
|
E.where_ $ studyFeatures E.^. StudyFeaturesUser E.==. uid
|
||||||
@ -807,7 +807,7 @@ fltrRelevantStudyFeaturesTermsUI = fltrStudyTermsUI
|
|||||||
fltrRelevantStudyFeaturesDegree :: OpticFilterColumn' t (Set Text) (E.SqlExpr (E.Value TermId), E.SqlExpr (E.Value UserId))
|
fltrRelevantStudyFeaturesDegree :: OpticFilterColumn' t (Set Text) (E.SqlExpr (E.Value TermId), E.SqlExpr (E.Value UserId))
|
||||||
fltrRelevantStudyFeaturesDegree queryTermUser = singletonMap "features-degree" . FilterColumn $ \t criterias ->
|
fltrRelevantStudyFeaturesDegree queryTermUser = singletonMap "features-degree" . FilterColumn $ \t criterias ->
|
||||||
E.subSelectOr . E.from $ \(term `E.InnerJoin` studyFeatures) -> do
|
E.subSelectOr . E.from $ \(term `E.InnerJoin` studyFeatures) -> do
|
||||||
E.on $ isRelevantStudyFeature TermId term studyFeatures
|
E.on $ isTermStudyFeature term studyFeatures
|
||||||
|
|
||||||
let (tid, uid) = t ^. queryTermUser
|
let (tid, uid) = t ^. queryTermUser
|
||||||
E.where_ $ studyFeatures E.^. StudyFeaturesUser E.==. uid
|
E.where_ $ studyFeatures E.^. StudyFeaturesUser E.==. uid
|
||||||
@ -826,7 +826,7 @@ fltrRelevantStudyFeaturesDegreeUI mPrev =
|
|||||||
fltrRelevantStudyFeaturesSemester :: OpticFilterColumn' t (Set Text) (E.SqlExpr (E.Value TermId), E.SqlExpr (E.Value UserId))
|
fltrRelevantStudyFeaturesSemester :: OpticFilterColumn' t (Set Text) (E.SqlExpr (E.Value TermId), E.SqlExpr (E.Value UserId))
|
||||||
fltrRelevantStudyFeaturesSemester queryTermUser = singletonMap "features-semester" . FilterColumn $ \t criterias ->
|
fltrRelevantStudyFeaturesSemester queryTermUser = singletonMap "features-semester" . FilterColumn $ \t criterias ->
|
||||||
E.subSelectOr . E.from $ \(term `E.InnerJoin` studyFeatures) -> do
|
E.subSelectOr . E.from $ \(term `E.InnerJoin` studyFeatures) -> do
|
||||||
E.on $ isRelevantStudyFeature TermId term studyFeatures
|
E.on $ isTermStudyFeature term studyFeatures
|
||||||
|
|
||||||
let (tid, uid) = t ^. queryTermUser
|
let (tid, uid) = t ^. queryTermUser
|
||||||
E.where_ $ studyFeatures E.^. StudyFeaturesUser E.==. uid
|
E.where_ $ studyFeatures E.^. StudyFeaturesUser E.==. uid
|
||||||
|
|||||||
Reference in New Issue
Block a user