diff --git a/src/Handler/Utils/StudyFeatures.hs b/src/Handler/Utils/StudyFeatures.hs index 63b5dbcc6..7a2b1c6cc 100644 --- a/src/Handler/Utils/StudyFeatures.hs +++ b/src/Handler/Utils/StudyFeatures.hs @@ -8,6 +8,7 @@ module Handler.Utils.StudyFeatures , cacheStudyFeatureRelevance , isCourseStudyFeature, courseUserStudyFeatures , isExternalExamStudyFeature, externalExamUserStudyFeatures + , isTermStudyFeature ) where import Import.NoFoundation @@ -180,3 +181,6 @@ externalExamUserStudyFeatures eeId uid = do , userTableSemester = studyFeaturesSemester , userTableFieldType = studyFeaturesType } + +isTermStudyFeature :: E.SqlExpr (Entity Term) -> E.SqlExpr (Entity StudyFeatures) -> E.SqlExpr (E.Value Bool) +isTermStudyFeature = isRelevantStudyFeatureCached TermId diff --git a/src/Handler/Utils/Table/Columns.hs b/src/Handler/Utils/Table/Columns.hs index 3d66fcace..73b6cacae 100644 --- a/src/Handler/Utils/Table/Columns.hs +++ b/src/Handler/Utils/Table/Columns.hs @@ -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 queryTermUser = singletonMap "features-terms" . FilterColumn $ \t criterias -> 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 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 queryTermUser = singletonMap "features-degree" . FilterColumn $ \t criterias -> 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 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 queryTermUser = singletonMap "features-semester" . FilterColumn $ \t criterias -> 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 E.where_ $ studyFeatures E.^. StudyFeaturesUser E.==. uid