From 64df38f2a9a20a3faec824317eb284b4cd4fc932 Mon Sep 17 00:00:00 2001 From: Steffen Jost Date: Fri, 28 Mar 2025 08:58:35 +0100 Subject: [PATCH] fix(build): minor haskell typos/errors The code was written without having a working compiler, hence some accidental code kinks remained. --- backend/src/Handler/Tutorial/Users.hs | 19 ++++++++++--------- backend/src/Utils.hs | 4 ++-- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/backend/src/Handler/Tutorial/Users.hs b/backend/src/Handler/Tutorial/Users.hs index fc2715e72..a3f8f9ab3 100644 --- a/backend/src/Handler/Tutorial/Users.hs +++ b/backend/src/Handler/Tutorial/Users.hs @@ -124,9 +124,9 @@ postTUsersR tid ssh csh tutn = do -- tutEnt@(Entity tutid _) <- fetchTutorial tid ssh csh tutn (cid, tutEnt@(Entity tutid _)) <- fetchCourseIdTutorial tid ssh csh tutn qualifications <- getCourseQualifications cid - let dayExpiry = case nubOrd (mapMaybe qualificationValidDuration qualifications) of - [oneDuration] -> Just $ Just $ computeNewValidDate qvd nowaday -- suggest end day only if it is unique for all course qualifications - _ -> Nothing -- using the minimum here causes confusion, better leave blank! + let dayExpiry = case nubOrd (mapMaybe (view _qualificationValidDuration) qualifications) of + [oneDuration] -> Just $ Just $ computeNewValidDate oneDuration nowaday -- suggest end day only if it is unique for all course qualifications + _ -> Nothing -- using the minimum here causes confusion, better leave blank! colChoices = mconcat $ [ dbSelect (applying _2) id (return . view (hasEntity . _entityKey)) , colUserNameModalHdr MsgTableCourseMembers ForProfileDataR @@ -205,25 +205,26 @@ postTUsersR tid ssh csh tutn = do -- typePDF = "application/pdf" -- sendResponse (typePDF, toContent pdf) (TutorialUserGrantQualificationData{..}, selectedUsers) - | Just grantQual <- Map.lookup tuQualification courseQids -> - case tuValidUntil <|> (flip computeNewValidDate nowaday <$> qualificationValidDuration grantQual) of + | Just grantQual <- Map.lookup tuQualification courseQids -> + case tuValidUntil <|> (flip computeNewValidDate nowaday <$> qualificationValidDuration grantQual) of Nothing -> do -- TODO: change QualificationUser to have an optionnal validUntil for idefinitely valid qualifications addMessageI Error $ MsgTutorialUserGrantQualificationDateError $ qualificationShorthand grantQual - (Just expiryDay) -> do + return Nothing + (Just expiryDay) -> do let qsh = qualificationShorthand grantQual reason = "Kurs " <> CI.original (unSchoolKey ssh) <> "-" <> CI.original csh <> "-" <> CI.original tutn - selUsrs = Set.toList selectedUsers + selUsrs = Set.toList selectedUsers expiryDayText <- formatTime SelFormatDate expiryDay nterm <- runDB $ do forM_ selUsrs $ upsertQualificationUser tuQualification now expiryDay Nothing reason - terminateLms (LmsOrphanReasonManualGrant [st|bis #{expiryDayText}, #{reason}|]) tuQualification selUsrs + terminateLms (LmsOrphanReasonManualGrant [st|bis #{expiryDayText}, #{reason}|]) tuQualification selUsrs addMessageI (if 0 < Set.size selectedUsers then Success else Warning) . MsgTutorialUserGrantedQualification qsh expiryDayText $ Set.size selectedUsers when (nterm > 0) $ addMessageI Warning $ MsgLmsActTerminated nterm reloadKeepGetParams croute (TutorialUserRenewQualificationData{..}, selectedUsers) | Just grantQual <- Map.lookup tuQualification courseQids -> do let qsh = qualificationShorthand grantQual - selUsrs = Set.toList selectedUsers + selUsrs = Set.toList selectedUsers mr <- getMessageRender (noks,nterm) <- runDB $ (,) <$> renewValidQualificationUsers tuQualification Nothing Nothing selUsrs diff --git a/backend/src/Utils.hs b/backend/src/Utils.hs index 5bc514f51..6ac651236 100644 --- a/backend/src/Utils.hs +++ b/backend/src/Utils.hs @@ -934,8 +934,8 @@ setToMap mkKey = Map.fromList . fmap (\x -> (mkKey x, x)) . Set.toList -- Create a Map given a key-computation -- For Entity, use Utils.DB.entities2map instead -mapFromFoldable :: (Ord k, Foldable t) => (v -> k) -> t v -> Map k v -mapFromFoldable getKey = foldMap (Map.singleton =<< getKey) +mapFromFoldable :: (Ord k, MonoFoldable mono) => (Element mono -> k) -> mono -> Map k (Element mono) +mapFromFoldable getKey = ofoldMap (Map.singleton =<< getKey) mapFM :: (Applicative m, Ord k, Finite k) => (k -> m v) -> m (Map k v) mapFM = sequenceA . mapF