diff --git a/src/Foundation.hs b/src/Foundation.hs index d98795969..8f3613943 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -50,7 +50,6 @@ import Data.Conduit (($$)) import Data.Conduit.List (sourceList) import qualified Database.Esqueleto as E -import qualified Database.Esqueleto.Utils as E import Control.Monad.Except (MonadError(..), runExceptT) import Control.Monad.Trans.Maybe (MaybeT(..)) @@ -2036,18 +2035,13 @@ instance YesodAuth UniWorX where studyTermCandidateName <- termNames StudyFeatures{ studyFeaturesField = StudyTermsKey' studyTermCandidateKey } <- fs return StudyTermCandidate{..} - - lift . E.update $ \f -> do - E.set f [ StudyFeaturesValid E.=. E.false ] - E.where_ . E.not_ $ (f E.^. StudyFeaturesUser, f E.^. StudyFeaturesDegree, f E.^. StudyFeaturesField, f E.^. StudyFeaturesType, f E.^. StudyFeaturesSemester) - `E.sqlIn` map (\StudyFeatures{..} -> (E.Value studyFeaturesUser, E.Value studyFeaturesDegree, E.Value studyFeaturesField, E.Value studyFeaturesType, E.Value studyFeaturesSemester) ) fs - lift . insertMany_ $ Set.toList studyTermCandidates + + lift $ E.updateWhere [StudyFeaturesUser ==. userId] [StudyFeaturesValid =. False] forM_ fs $ \f@StudyFeatures{..} -> do lift . insertMaybe studyFeaturesDegree $ StudyDegree (unStudyDegreeKey studyFeaturesDegree) Nothing Nothing lift . insertMaybe studyFeaturesField $ StudyTerms (unStudyTermsKey studyFeaturesField) Nothing Nothing - - void . lift $ insertUnique f + void . lift $ upsert f [StudyFeaturesUpdated =. now, StudyFeaturesValid =. True] return $ Authenticated userId Nothing -> acceptExisting