refactor(sub-study-fields): reformulate as superStudyField
Fixes #531 BREAKING CHANGE: superStudyField
This commit is contained in:
parent
2e74497c80
commit
b7d6f3c9e9
@ -55,7 +55,7 @@ StudyFeatures -- multiple entries possible for students pursuing several degree
|
|||||||
user UserId
|
user UserId
|
||||||
degree StudyDegreeId -- Abschluss, i.e. Master, Bachelor, etc.
|
degree StudyDegreeId -- Abschluss, i.e. Master, Bachelor, etc.
|
||||||
field StudyTermsId -- Fach, i.e. Informatics, Philosophy, etc.
|
field StudyTermsId -- Fach, i.e. Informatics, Philosophy, etc.
|
||||||
subField StudyTermsId Maybe
|
superField StudyTermsId Maybe
|
||||||
type StudyFieldType -- Major or minor, i.e. Haupt-/Nebenfach
|
type StudyFieldType -- Major or minor, i.e. Haupt-/Nebenfach
|
||||||
semester Int
|
semester Int
|
||||||
updated UTCTime default=now() -- last update from LDAP
|
updated UTCTime default=now() -- last update from LDAP
|
||||||
|
|||||||
@ -3461,7 +3461,10 @@ upsertCampusUser ldapData Creds{..} = do
|
|||||||
if
|
if
|
||||||
| not $ null knownParents -> do
|
| not $ null knownParents -> do
|
||||||
$logDebugS "Campus" [st|Applying subterm “#{tshow subterm}” to #{tshow matchingFeatures}|]
|
$logDebugS "Campus" [st|Applying subterm “#{tshow subterm}” to #{tshow matchingFeatures}|]
|
||||||
(++) (matchingFeatures & traverse . _studyFeaturesSubField %~ (<|> Just subterm)) <$> assimilateSubTerms subterms (unusedFeats List.\\ matchingFeatures)
|
let setSuperField sf = sf
|
||||||
|
& _studyFeaturesSuperField %~ (<|> Just (sf ^. _studyFeaturesField))
|
||||||
|
& _studyFeaturesField .~ subterm
|
||||||
|
(++) (map setSuperField matchingFeatures) <$> assimilateSubTerms subterms (unusedFeats List.\\ matchingFeatures)
|
||||||
| otherwise -> do
|
| otherwise -> do
|
||||||
$logDebugS "Campus" [st|Ignoring subterm “#{tshow subterm}”|]
|
$logDebugS "Campus" [st|Ignoring subterm “#{tshow subterm}”|]
|
||||||
assimilateSubTerms subterms unusedFeats
|
assimilateSubTerms subterms unusedFeats
|
||||||
@ -3510,7 +3513,28 @@ upsertCampusUser ldapData Creds{..} = do
|
|||||||
forM_ fs $ \f@StudyFeatures{..} -> do
|
forM_ fs $ \f@StudyFeatures{..} -> do
|
||||||
insertMaybe studyFeaturesDegree $ StudyDegree (unStudyDegreeKey studyFeaturesDegree) Nothing Nothing
|
insertMaybe studyFeaturesDegree $ StudyDegree (unStudyDegreeKey studyFeaturesDegree) Nothing Nothing
|
||||||
insertMaybe studyFeaturesField $ StudyTerms (unStudyTermsKey studyFeaturesField) Nothing Nothing Nothing Nothing
|
insertMaybe studyFeaturesField $ StudyTerms (unStudyTermsKey studyFeaturesField) Nothing Nothing Nothing Nothing
|
||||||
void $ upsert f [StudyFeaturesUpdated =. now, StudyFeaturesValid =. True, StudyFeaturesSubField =. studyFeaturesSubField]
|
oldFs <- selectKeysList
|
||||||
|
([ StudyFeaturesUser ==. studyFeaturesUser
|
||||||
|
, StudyFeaturesDegree ==. studyFeaturesDegree
|
||||||
|
, StudyFeaturesType ==. studyFeaturesType
|
||||||
|
, StudyFeaturesSemester ==. studyFeaturesSemester
|
||||||
|
] ++
|
||||||
|
[ StudyFeaturesField ==. studyFeaturesField
|
||||||
|
, StudyFeaturesSuperField ==. studyFeaturesSuperField
|
||||||
|
] ||. case studyFeaturesSuperField of
|
||||||
|
Just sField ->
|
||||||
|
[ StudyFeaturesField ==. sField
|
||||||
|
, StudyFeaturesSuperField ==. Nothing
|
||||||
|
]
|
||||||
|
Nothing -> []
|
||||||
|
) []
|
||||||
|
case oldFs of
|
||||||
|
[oldF] -> update oldF [ StudyFeaturesUpdated =. now
|
||||||
|
, StudyFeaturesValid =. True
|
||||||
|
, StudyFeaturesField =. studyFeaturesField
|
||||||
|
, StudyFeaturesSuperField =. studyFeaturesSuperField
|
||||||
|
]
|
||||||
|
_other -> insert_ f
|
||||||
associateUserSchoolsByTerms userId
|
associateUserSchoolsByTerms userId
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|||||||
@ -359,12 +359,9 @@ makeProfileData (Entity uid User{..}) = do
|
|||||||
E.on $ sheet E.^. SheetId E.==. corrector E.^. SheetCorrectorSheet
|
E.on $ sheet E.^. SheetId E.==. corrector E.^. SheetCorrectorSheet
|
||||||
E.where_ $ corrector E.^. SheetCorrectorUser E.==. E.val uid
|
E.where_ $ corrector E.^. SheetCorrectorUser E.==. E.val uid
|
||||||
return (course E.^. CourseTerm, course E.^. CourseSchool, course E.^. CourseShorthand)
|
return (course E.^. CourseTerm, course E.^. CourseSchool, course E.^. CourseShorthand)
|
||||||
studies <- E.select $ E.from $ \(studydegree `E.InnerJoin` studyfeat `E.InnerJoin` studyterms) ->
|
studies <- E.select $ E.from $ \(studydegree `E.InnerJoin` studyfeat `E.InnerJoin` studyterms) -> do
|
||||||
E.distinctOnOrderBy [ E.asc $ studyfeat E.^. StudyFeaturesId ] $ do
|
|
||||||
E.orderBy [ E.desc $ studyfeat E.^. StudyFeaturesSubField E.==. E.just (studyterms E.^. StudyTermsId) ]
|
|
||||||
E.where_ $ studyfeat E.^. StudyFeaturesUser E.==. E.val uid
|
E.where_ $ studyfeat E.^. StudyFeaturesUser E.==. E.val uid
|
||||||
E.on $ studyfeat E.^. StudyFeaturesField E.==. studyterms E.^. StudyTermsId
|
E.on $ studyfeat E.^. StudyFeaturesField E.==. studyterms E.^. StudyTermsId
|
||||||
E.||. studyfeat E.^. StudyFeaturesSubField E.==. E.just (studyterms E.^. StudyTermsId)
|
|
||||||
E.on $ studyfeat E.^. StudyFeaturesDegree E.==. studydegree E.^. StudyDegreeId
|
E.on $ studyfeat E.^. StudyFeaturesDegree E.==. studydegree E.^. StudyDegreeId
|
||||||
return (studyfeat, studydegree, studyterms)
|
return (studyfeat, studydegree, studyterms)
|
||||||
--Tables
|
--Tables
|
||||||
|
|||||||
@ -40,7 +40,7 @@ pStudyFeatures studyFeaturesUser studyFeaturesUpdated = do
|
|||||||
void $ char '!'
|
void $ char '!'
|
||||||
studyFeaturesSemester <- decimal
|
studyFeaturesSemester <- decimal
|
||||||
let studyFeaturesValid = True
|
let studyFeaturesValid = True
|
||||||
studyFeaturesSubField = Nothing
|
studyFeaturesSuperField = Nothing
|
||||||
return StudyFeatures{..}
|
return StudyFeatures{..}
|
||||||
|
|
||||||
pStudyFeature `sepBy1` char '#'
|
pStudyFeature `sepBy1` char '#'
|
||||||
|
|||||||
@ -591,6 +591,14 @@ customMigrations = Map.fromListWith (>>)
|
|||||||
, whenM (tableExists "exam_part_corrector") $
|
, whenM (tableExists "exam_part_corrector") $
|
||||||
tableDropEmpty "exam_part_corrector"
|
tableDropEmpty "exam_part_corrector"
|
||||||
)
|
)
|
||||||
|
, ( AppliedMigrationKey [migrationVersion|28.0.0|] [version|29.0.0|]
|
||||||
|
, whenM (tableExists "study_features") $
|
||||||
|
[executeQQ|
|
||||||
|
ALTER TABLE "study_features" ADD COLUMN "super_field" bigint;
|
||||||
|
UPDATE "study_features" SET "super_field" = "field", "field" = "sub_field" WHERE NOT ("sub_field" IS NULL);
|
||||||
|
ALTER TABLE "study_features" DROP COLUMN "sub_field";
|
||||||
|
|]
|
||||||
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user