chore: bump versions

This commit is contained in:
Gregor Kleen 2021-06-28 09:21:34 +02:00
parent adbbb8db6b
commit 5ade6c65d6
155 changed files with 377 additions and 406 deletions

View File

@ -6,7 +6,7 @@ workflow:
default: default:
image: image:
name: fpco/stack-build:lts-16.31 name: fpco/stack-build:lts-17.15
variables: variables:
STACK_ROOT: "${CI_PROJECT_DIR}/.stack" STACK_ROOT: "${CI_PROJECT_DIR}/.stack"

View File

@ -13,6 +13,7 @@
- ignore: { name: "Redundant void" } - ignore: { name: "Redundant void" }
- ignore: { name: "Too strict maybe" } - ignore: { name: "Too strict maybe" }
- ignore: { name: "Use Just" } - ignore: { name: "Use Just" }
- ignore: { name: "Use const" }
- arguments: - arguments:
- -XQuasiQuotes - -XQuasiQuotes

View File

@ -2,11 +2,11 @@
"nodes": { "nodes": {
"flake-utils": { "flake-utils": {
"locked": { "locked": {
"lastModified": 1619345332, "lastModified": 1623875721,
"narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -18,11 +18,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1620323686, "lastModified": 1624788075,
"narHash": "sha256-+gfcE3YTGl+Osc8HzOUXSFO8/0PAK4J8ZxCXZ4hjXHI=", "narHash": "sha256-xzO2aL5gGejNvey2jKGnbnFXbo99pdytlY5FF/IhvAE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "dfacb8329b2236688b9a1e705116203a213b283a", "rev": "4ba70da807359ed01d662763a96c7b442762e5ef",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -53,7 +53,7 @@ AllocationUser
AllocationDeregister -- self-inflicted user-deregistrations from an allocated course AllocationDeregister -- self-inflicted user-deregistrations from an allocated course
user UserId user UserId
course CourseId Maybe course CourseId Maybe OnDeleteSetNull OnUpdateCascade
time UTCTime time UTCTime
reason Text Maybe -- if this deregistration was done by proxy (e.g. the lecturer pressed the button) reason Text Maybe -- if this deregistration was done by proxy (e.g. the lecturer pressed the button)
deriving Eq Ord Show Generic deriving Eq Ord Show Generic

View File

@ -1,5 +1,5 @@
DegreeCourse json -- for which degree programmes this course is appropriate for DegreeCourse json -- for which degree programmes this course is appropriate for
course CourseId course CourseId OnDeleteCascade OnUpdateCascade
degree StudyDegreeId degree StudyDegreeId
terms StudyTermsId terms StudyTermsId
UniqueDegreeCourse course degree terms UniqueDegreeCourse course degree terms
@ -31,7 +31,7 @@ Course -- Information about a single course; contained info is always visible
deriving Generic deriving Generic
CourseEvent CourseEvent
type (CI Text) type (CI Text)
course CourseId course CourseId OnDeleteCascade OnUpdateCascade
room RoomReference Maybe room RoomReference Maybe
roomHidden Bool default=false roomHidden Bool default=false
time Occurrences time Occurrences
@ -40,7 +40,7 @@ CourseEvent
deriving Generic deriving Generic
CourseAppInstructionFile CourseAppInstructionFile
course CourseId course CourseId OnDeleteCascade OnUpdateCascade
title FilePath title FilePath
content FileContentReference Maybe content FileContentReference Maybe
modified UTCTime modified UTCTime
@ -50,11 +50,11 @@ CourseAppInstructionFile
CourseEdit -- who edited when a row in table "Course", kept indefinitely (might be replaced by generic Audit Table; like all ...-Edit tables) CourseEdit -- who edited when a row in table "Course", kept indefinitely (might be replaced by generic Audit Table; like all ...-Edit tables)
user UserId user UserId
time UTCTime time UTCTime
course CourseId course CourseId OnDeleteCascade OnUpdateCascade
deriving Generic deriving Generic
Lecturer -- course ownership Lecturer -- course ownership
user UserId user UserId
course CourseId course CourseId OnDeleteCascade OnUpdateCascade
type LecturerType default='"lecturer"'::jsonb type LecturerType default='"lecturer"'::jsonb
UniqueLecturer user course -- note: multiple lecturers per course are allowed, but no duplicated rows in this table UniqueLecturer user course -- note: multiple lecturers per course are allowed, but no duplicated rows in this table
deriving Generic deriving Generic

View File

@ -13,7 +13,7 @@ CourseApplication
deriving Generic deriving Generic
CourseApplicationFile CourseApplicationFile
application CourseApplicationId application CourseApplicationId OnDeleteCascade OnUpdateCascade
title FilePath title FilePath
content FileContentReference Maybe content FileContentReference Maybe
modified UTCTime modified UTCTime

View File

@ -1,12 +1,12 @@
CourseFavourite -- which user accessed which course when, only displayed to user for convenience; CourseFavourite -- which user accessed which course when, only displayed to user for convenience;
user UserId user UserId
course CourseId course CourseId OnDeleteCascade OnUpdateCascade
reason FavouriteReason reason FavouriteReason
lastVisit UTCTime lastVisit UTCTime
UniqueCourseFavourite user course UniqueCourseFavourite user course
deriving Generic deriving Generic
CourseNoFavourite CourseNoFavourite
user UserId user UserId
course CourseId course CourseId OnDeleteCascade OnUpdateCascade
UniqueCourseNoFavourite user course UniqueCourseNoFavourite user course
deriving Generic deriving Generic

View File

@ -1,5 +1,5 @@
Material -- course material for disemination to course participants Material -- course material for disemination to course participants
course CourseId course CourseId OnDeleteCascade OnUpdateCascade
name (CI Text) name (CI Text)
type (CI Text) Maybe type (CI Text) Maybe
description StoredMarkup Maybe description StoredMarkup Maybe
@ -8,7 +8,7 @@ Material -- course material for disemination to course participants
UniqueMaterial course name UniqueMaterial course name
deriving Generic deriving Generic
MaterialFile -- a file that is part of a material distribution MaterialFile -- a file that is part of a material distribution
material MaterialId material MaterialId OnDeleteCascade OnUpdateCascade
title FilePath title FilePath
content FileContentReference Maybe content FileContentReference Maybe
modified UTCTime modified UTCTime

View File

@ -1,5 +1,5 @@
CourseNews CourseNews
course CourseId course CourseId OnDeleteCascade OnUpdateCascade
visibleFrom UTCTime Maybe visibleFrom UTCTime Maybe
participantsOnly Bool participantsOnly Bool
title Text Maybe title Text Maybe
@ -8,7 +8,7 @@ CourseNews
lastEdit UTCTime lastEdit UTCTime
deriving Generic deriving Generic
CourseNewsFile CourseNewsFile
news CourseNewsId news CourseNewsId OnDeleteCascade OnUpdateCascade
title FilePath title FilePath
content FileContentReference Maybe content FileContentReference Maybe
modified UTCTime modified UTCTime

View File

@ -1,5 +1,5 @@
Sheet -- exercise sheet for a given course Sheet -- exercise sheet for a given course
course CourseId course CourseId OnDeleteCascade OnUpdateCascade
name (CI Text) name (CI Text)
description StoredMarkup Maybe description StoredMarkup Maybe
type (SheetType SqlBackendKey) -- ExamPartId; Does it count towards overall course grade? type (SheetType SqlBackendKey) -- ExamPartId; Does it count towards overall course grade?
@ -20,14 +20,14 @@ Sheet -- exercise sheet for a given course
SheetEdit -- who edited when a row in table "Course", kept indefinitely SheetEdit -- who edited when a row in table "Course", kept indefinitely
user UserId user UserId
time UTCTime time UTCTime
sheet SheetId sheet SheetId OnDeleteCascade OnUpdateCascade
deriving Generic deriving Generic
-- For anonoymous external submissions (i.e. paper submission tracked in uni2work) -- For anonoymous external submissions (i.e. paper submission tracked in uni2work)
-- Map pseudonyms to users injectively in the context of a single sheet; for the next sheet all-new pseudonyms need to be created -- Map pseudonyms to users injectively in the context of a single sheet; for the next sheet all-new pseudonyms need to be created
-- Chosen uniformly at random when the submitting user presses a button on the view of a sheet -- Chosen uniformly at random when the submitting user presses a button on the view of a sheet
SheetPseudonym SheetPseudonym
sheet SheetId sheet SheetId OnDeleteCascade OnUpdateCascade
pseudonym Pseudonym -- 24-bit number that should be attached to external submission (i.e. written on the submitted paper); encoded as two english words akin to PGP-Wordlist pseudonym Pseudonym -- 24-bit number that should be attached to external submission (i.e. written on the submitted paper); encoded as two english words akin to PGP-Wordlist
user UserId user UserId
UniqueSheetPseudonym sheet pseudonym UniqueSheetPseudonym sheet pseudonym
@ -35,13 +35,13 @@ SheetPseudonym
deriving Generic deriving Generic
SheetCorrector -- grant corrector role to user for a sheet SheetCorrector -- grant corrector role to user for a sheet
user UserId user UserId
sheet SheetId sheet SheetId OnDeleteCascade OnUpdateCascade
load Load -- portion of work that will be assigned to this corrector load Load -- portion of work that will be assigned to this corrector
state CorrectorState default='CorrectorNormal' -- whether a corrector is assigned his load this time (e.g. in case of sickness) state CorrectorState default='CorrectorNormal' -- whether a corrector is assigned his load this time (e.g. in case of sickness)
UniqueSheetCorrector user sheet UniqueSheetCorrector user sheet
deriving Show Eq Ord Generic deriving Show Eq Ord Generic
SheetFile -- a file that is part of an exercise sheet SheetFile -- a file that is part of an exercise sheet
sheet SheetId sheet SheetId OnDeleteCascade OnUpdateCascade
type SheetFileType -- excercise, marking, hint or solution type SheetFileType -- excercise, marking, hint or solution
title FilePath title FilePath
content FileContentReference Maybe content FileContentReference Maybe
@ -49,7 +49,7 @@ SheetFile -- a file that is part of an exercise sheet
UniqueSheetFile sheet type title UniqueSheetFile sheet type title
deriving Generic deriving Generic
PersonalisedSheetFile PersonalisedSheetFile
sheet SheetId sheet SheetId OnDeleteCascade OnUpdateCascade
user UserId user UserId
type SheetFileType type SheetFileType
title FilePath title FilePath
@ -59,7 +59,7 @@ PersonalisedSheetFile
deriving Eq Ord Read Show Typeable Generic deriving Eq Ord Read Show Typeable Generic
FallbackPersonalisedSheetFilesKey FallbackPersonalisedSheetFilesKey
course CourseId course CourseId OnDeleteCascade OnUpdateCascade
index Word24 index Word24
secret ByteString secret ByteString
generated UTCTime generated UTCTime

View File

@ -9,10 +9,10 @@ Submission -- submission for marking by a CourseParticipa
SubmissionEdit -- user uploads new version of their submission SubmissionEdit -- user uploads new version of their submission
user UserId Maybe -- track id, important for group submissions user UserId Maybe -- track id, important for group submissions
time UTCTime time UTCTime
submission SubmissionId submission SubmissionId OnDeleteCascade OnUpdateCascade
deriving Generic deriving Generic
SubmissionFile json -- files that are part of a submission SubmissionFile json -- files that are part of a submission
submission SubmissionId submission SubmissionId OnDeleteCascade OnUpdateCascade
title FilePath title FilePath
content FileContentReference Maybe content FileContentReference Maybe
modified UTCTime modified UTCTime
@ -22,11 +22,11 @@ SubmissionFile json -- files that are part of a submission
deriving Eq Ord Read Show Generic deriving Eq Ord Read Show Generic
SubmissionUser -- which submission belongs to whom SubmissionUser -- which submission belongs to whom
user UserId user UserId
submission SubmissionId submission SubmissionId OnDeleteCascade OnUpdateCascade
UniqueSubmissionUser user submission -- multiple users may share same submission, in case of (ad-hoc) submission groups UniqueSubmissionUser user submission -- multiple users may share same submission, in case of (ad-hoc) submission groups
deriving Generic deriving Generic
SubmissionGroup -- pre-defined submission groups; some courses only allow pre-defined submission groups SubmissionGroup -- pre-defined submission groups; some courses only allow pre-defined submission groups
course CourseId course CourseId OnDeleteCascade OnUpdateCascade
name SubmissionGroupName name SubmissionGroupName
UniqueSubmissionGroup course name UniqueSubmissionGroup course name
deriving Generic deriving Generic

View File

@ -16,7 +16,7 @@ SystemMessage
deriving Generic deriving Generic
SystemMessageTranslation -- Translation of a @SystemMessage@ into another language; which language to choose is determined by user-sent HTTP-headers SystemMessageTranslation -- Translation of a @SystemMessage@ into another language; which language to choose is determined by user-sent HTTP-headers
message SystemMessageId message SystemMessageId OnDeleteCascade OnUpdateCascade
language Lang language Lang
content StoredMarkup content StoredMarkup
summary StoredMarkup Maybe summary StoredMarkup Maybe
@ -24,7 +24,7 @@ SystemMessageTranslation -- Translation of a @SystemMessage@ into another langua
deriving Generic deriving Generic
SystemMessageHidden SystemMessageHidden
message SystemMessageId message SystemMessageId OnDeleteCascade OnUpdateCascade
user UserId user UserId
time UTCTime time UTCTime
UniqueSystemMessageHidden user message UniqueSystemMessageHidden user message

View File

@ -1,6 +1,6 @@
Tutorial json Tutorial json
name TutorialName name TutorialName
course CourseId course CourseId OnDeleteCascade OnUpdateCascade
type (CI Text) -- "Tutorium", "Zentralübung", ... type (CI Text) -- "Tutorium", "Zentralübung", ...
capacity Int Maybe -- limit for enrolment in this tutorial capacity Int Maybe -- limit for enrolment in this tutorial
room RoomReference Maybe room RoomReference Maybe
@ -15,12 +15,12 @@ Tutorial json
UniqueTutorial course name UniqueTutorial course name
deriving Generic deriving Generic
Tutor Tutor
tutorial TutorialId tutorial TutorialId OnDeleteCascade OnUpdateCascade
user UserId user UserId
UniqueTutor tutorial user UniqueTutor tutorial user
deriving Generic deriving Generic
TutorialParticipant TutorialParticipant
tutorial TutorialId tutorial TutorialId OnDeleteCascade OnUpdateCascade
user UserId user UserId
UniqueTutorialParticipant tutorial user UniqueTutorialParticipant tutorial user
deriving Eq Ord Show deriving Eq Ord Show

View File

@ -13,7 +13,7 @@ WorkflowDefinition
deriving Generic deriving Generic
WorkflowDefinitionDescription WorkflowDefinitionDescription
definition WorkflowDefinitionId definition WorkflowDefinitionId OnDeleteCascade OnUpdateCascade
language Lang language Lang
title Text title Text
description StoredMarkup Maybe description StoredMarkup Maybe
@ -21,7 +21,7 @@ WorkflowDefinitionDescription
deriving Generic deriving Generic
WorkflowDefinitionInstanceDescription WorkflowDefinitionInstanceDescription
definition WorkflowDefinitionId definition WorkflowDefinitionId OnDeleteCascade OnUpdateCascade
language Lang language Lang
title Text title Text
description StoredMarkup Maybe description StoredMarkup Maybe
@ -29,7 +29,7 @@ WorkflowDefinitionInstanceDescription
deriving Generic deriving Generic
WorkflowInstance WorkflowInstance
definition WorkflowDefinitionId Maybe definition WorkflowDefinitionId Maybe OnDeleteSetNull OnUpdateCascade
graph SharedWorkflowGraphId graph SharedWorkflowGraphId
scope (WorkflowScope TermIdentifier SchoolShorthand SqlBackendKey) -- TermId, SchoolId, CourseId scope (WorkflowScope TermIdentifier SchoolShorthand SqlBackendKey) -- TermId, SchoolId, CourseId
name WorkflowInstanceName name WorkflowInstanceName

View File

@ -17,9 +17,10 @@ module Application
) where ) where
import Control.Monad.Logger (liftLoc, LoggingT(..), MonadLoggerIO(..)) import Control.Monad.Logger (liftLoc, LoggingT(..), MonadLoggerIO(..))
import Database.Persist.Postgresql ( openSimpleConn, pgConnStr, connClose, pgPoolIdleTimeout import Database.Persist.Postgresql ( openSimpleConn, pgConnStr, pgPoolIdleTimeout
, pgPoolSize , pgPoolSize
) )
import Database.Persist.SqlBackend.Internal ( connClose )
import qualified Database.PostgreSQL.Simple as PG import qualified Database.PostgreSQL.Simple as PG
import Import hiding (cancel, respond) import Import hiding (cancel, respond)
import Language.Haskell.TH.Syntax (qLocation) import Language.Haskell.TH.Syntax (qLocation)

View File

@ -23,7 +23,8 @@ import qualified Data.ByteString as BS
instance RandomGen ChaChaDRG where instance RandomGen ChaChaDRG where
next g = withRandomBytes g (finiteBitSize (maxBound :: Int) `div` 8) (foldr (\x acc -> acc `shiftL` 8 .|. fromIntegral x) zeroBits . BA.unpack @BA.Bytes) genWord64 g = withRandomBytes g (finiteBitSize (maxBound :: Word64) `div` 8) (foldr (\x acc -> acc `shiftL` 8 .|. fromIntegral x) zeroBits . BA.unpack @BA.Bytes)
genWord32 g = withRandomBytes g (finiteBitSize (maxBound :: Word32) `div` 8) (foldr (\x acc -> acc `shiftL` 8 .|. fromIntegral x) zeroBits . BA.unpack @BA.Bytes)
split g = withDRG g drgNew split g = withDRG g drgNew
instance Binary Seed where instance Binary Seed where

View File

@ -22,7 +22,7 @@ import Language.Haskell.TH.Syntax (Lift(..))
import Data.Aeson (ToJSONKey(..), FromJSONKey(..), ToJSONKeyFunction(..)) import Data.Aeson (ToJSONKey(..), FromJSONKey(..), ToJSONKeyFunction(..))
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import Web.HttpApiData import Web.HttpApiData

View File

@ -6,7 +6,7 @@ module Database.Esqueleto.Instances
import ClassyPrelude.Yesod import ClassyPrelude.Yesod
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import Data.Binary (Binary) import Data.Binary (Binary)
import qualified Data.Binary as B import qualified Data.Binary as B

View File

@ -43,7 +43,7 @@ import Data.Universe
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.List as List import qualified Data.List as List
import qualified Data.Foldable as F import qualified Data.Foldable as F
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.PostgreSQL as E import qualified Database.Esqueleto.PostgreSQL as E
import qualified Database.Esqueleto.Internal.Internal as E import qualified Database.Esqueleto.Internal.Internal as E
import Database.Esqueleto.Utils.TH import Database.Esqueleto.Utils.TH
@ -126,40 +126,24 @@ substring :: ( E.SqlString str
-> E.SqlExpr (E.Value from) -> E.SqlExpr (E.Value from)
-> E.SqlExpr (E.Value for) -> E.SqlExpr (E.Value for)
-> E.SqlExpr (E.Value str) -> E.SqlExpr (E.Value str)
substring (E.ERaw p1 f1) (E.ERaw p2 f2) (E.ERaw p3 f3) substring (E.ERaw _m1 f1) (E.ERaw _m2 f2) (E.ERaw _m3 f3)
= E.ERaw E.Never $ \info -> = E.ERaw E.noMeta $ \_nParens info ->
let (strTLB, strVals) = f1 info let (strTLB, strVals) = f1 E.Parens info
(fromiTLB, fromiVals) = f2 info (fromiTLB, fromiVals) = f2 E.Parens info
(foriTLB, foriVals) = f3 info (foriTLB, foriVals) = f3 E.Parens info
in ( "SUBSTRING" <> E.parens (E.parensM p1 strTLB <> " FROM " <> E.parensM p2 fromiTLB <> " FOR " <> E.parensM p3 foriTLB) in ( "SUBSTRING" <> E.parens (E.parens strTLB <> " FROM " <> E.parens fromiTLB <> " FOR " <> E.parens foriTLB)
, strVals <> fromiVals <> foriVals , strVals <> fromiVals <> foriVals
) )
substring a b c = substring (construct a) (construct b) (construct c)
explicitUnsafeCoerceSqlExprValue :: forall b a. explicitUnsafeCoerceSqlExprValue :: forall b a.
Text Text
-> E.SqlExpr (E.Value a) -> E.SqlExpr (E.Value a)
-> E.SqlExpr (E.Value b) -> E.SqlExpr (E.Value b)
explicitUnsafeCoerceSqlExprValue typ (E.ERaw p1 f1) = E.ERaw E.Parens $ \info -> explicitUnsafeCoerceSqlExprValue typ (E.ERaw _m1 f1) = E.ERaw E.noMeta $ \_nParens info ->
let (valTLB, valVals) = f1 info let (valTLB, valVals) = f1 E.Parens info
in ( E.parensM p1 valTLB <> " :: " <> Text.Builder.fromText typ in ( E.parens valTLB <> " :: " <> Text.Builder.fromText typ
, valVals , valVals
) )
explicitUnsafeCoerceSqlExprValue typ val = explicitUnsafeCoerceSqlExprValue typ $ construct val
construct :: E.SqlExpr (E.Value a) -> E.SqlExpr (E.Value a)
construct (E.ERaw p f) = E.ERaw E.Parens $ \info ->
let (b1, vals) = f info
build ("?", [E.PersistList vals']) =
(E.uncommas $ replicate (length vals') "?", vals')
build expr = expr
in build (E.parensM p b1, vals)
construct (E.ECompositeKey f) =
E.ERaw E.Parens $ \info -> (E.uncommas $ f info, mempty)
construct (E.EAliasedValue i _) =
E.ERaw E.Never $ E.aliasedValueIdentToRawSql i
construct (E.EValueReference i i') =
E.ERaw E.Never $ E.valueReferenceToRawSql i i'
and, or :: Foldable f => f (E.SqlExpr (E.Value Bool)) -> E.SqlExpr (E.Value Bool) and, or :: Foldable f => f (E.SqlExpr (E.Value Bool)) -> E.SqlExpr (E.Value Bool)
and = F.foldr (E.&&.) true and = F.foldr (E.&&.) true
@ -485,12 +469,11 @@ diffTimes :: E.SqlExpr (E.Value UTCTime) -> E.SqlExpr (E.Value UTCTime) -> E.Sql
diffTimes a b = unsafeExtract "EPOCH" $ a E.-. b diffTimes a b = unsafeExtract "EPOCH" $ a E.-. b
unsafeExtract :: String -> E.SqlExpr (E.Value a) -> E.SqlExpr (E.Value b) unsafeExtract :: String -> E.SqlExpr (E.Value a) -> E.SqlExpr (E.Value b)
unsafeExtract extr (E.ERaw vP vF) = E.ERaw E.Never $ \info -> unsafeExtract extr (E.ERaw _mF vF) = E.ERaw E.noMeta $ \_nParens info ->
let (vTLB, vVals) = vF info let (vTLB, vVals) = vF E.Parens info
in ( "EXTRACT" <> E.parens (fromString extr <> " FROM " <> E.parensM vP vTLB) in ( "EXTRACT" <> E.parens (fromString extr <> " FROM " <> E.parens vTLB)
, vVals , vVals
) )
unsafeExtract extr v = unsafeExtract extr $ construct v
class ExprLift e a | e -> a where class ExprLift e a | e -> a where

View File

@ -9,7 +9,7 @@ module Database.Esqueleto.Utils.TH
import ClassyPrelude import ClassyPrelude
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Internal.Internal as E (SqlSelect) import qualified Database.Esqueleto.Internal.Internal as E (SqlSelect)
import Database.Persist (PersistField) import Database.Persist (PersistField)

View File

@ -31,8 +31,8 @@ instance PersistEntity record => Binary (Key record) where
get = either (fail . unpack) return . fromPersistValue =<< Binary.get get = either (fail . unpack) return . fromPersistValue =<< Binary.get
uniqueToMap :: PersistEntity record => Unique record -> Map (HaskellName, DBName) PersistValue uniqueToMap :: PersistEntity record => Unique record -> Map (FieldNameHS, FieldNameDB) PersistValue
uniqueToMap = fmap Map.fromList $ zip <$> persistUniqueToFieldNames <*> persistUniqueToValues uniqueToMap = fmap Map.fromList $ zip <$> fmap toList persistUniqueToFieldNames <*> persistUniqueToValues
instance PersistEntity record => Eq (Unique record) where instance PersistEntity record => Eq (Unique record) where
(==) = (==) `on` uniqueToMap (==) = (==) `on` uniqueToMap

View File

@ -17,6 +17,14 @@ import Data.Binary.Instances.Time as Import ()
import Data.Binary (Binary) import Data.Binary (Binary)
deriving instance Generic LiteralType
deriving instance Typeable LiteralType
instance Hashable LiteralType
instance Binary LiteralType
instance NFData LiteralType
deriving instance Generic PersistValue deriving instance Generic PersistValue
deriving instance Typeable PersistValue deriving instance Typeable PersistValue

View File

@ -48,7 +48,7 @@ import qualified Data.Text as Text
import Data.List (findIndex, inits) import Data.List (findIndex, inits)
import Data.Semigroup (Last(..)) import Data.Semigroup (Last(..))
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Control.Monad.Error.Class (MonadError(..)) import Control.Monad.Error.Class (MonadError(..))

View File

@ -48,7 +48,7 @@ import qualified Data.Binary as Binary
import qualified Data.CaseInsensitive as CI import qualified Data.CaseInsensitive as CI
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
-- Please see the documentation for the Yesod typeclass. There are a number -- Please see the documentation for the Yesod typeclass. There are a number

View File

@ -30,7 +30,7 @@ import Handler.Utils.ExamOffice.Course
import Utils.Sheet import Utils.Sheet
import qualified Data.CaseInsensitive as CI import qualified Data.CaseInsensitive as CI
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Control.Monad.Trans.State (execStateT) import Control.Monad.Trans.State (execStateT)

View File

@ -30,7 +30,7 @@ import qualified Data.Text as Text
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.HashMap.Strict as HashMap import qualified Data.HashMap.Strict as HashMap
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Data.Conduit.Combinators as C import qualified Data.Conduit.Combinators as C

View File

@ -39,7 +39,7 @@ import Data.ByteArray (convert)
import Crypto.Hash (SHAKE128) import Crypto.Hash (SHAKE128)
import qualified Data.Binary as Binary import qualified Data.Binary as Binary
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Crypto.Hash.Conduit (sinkHash) import Crypto.Hash.Conduit (sinkHash)

View File

@ -14,6 +14,7 @@ import Foundation.Authorization
import Database.Persist.Sql (transactionUndo) import Database.Persist.Sql (transactionUndo)
import qualified Database.Persist.Sql as SQL import qualified Database.Persist.Sql as SQL
import qualified Database.Persist.SqlBackend.Internal as SQL
import qualified Utils.Pool as Custom import qualified Utils.Pool as Custom

View File

@ -12,7 +12,7 @@ import qualified Data.Text as Text
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import Database.Esqueleto.Utils (mkExactFilter, mkContainsFilter) import Database.Esqueleto.Utils (mkExactFilter, mkContainsFilter)
import qualified Handler.Utils.TermCandidates as Candidates import qualified Handler.Utils.TermCandidates as Candidates

View File

@ -18,7 +18,7 @@ import Data.Binary.Builder (Builder)
import Control.Monad.Random.Lazy (evalRandT, liftRandT) import Control.Monad.Random.Lazy (evalRandT, liftRandT)
import qualified Database.Esqueleto as E hiding (random_) import qualified Database.Esqueleto.Legacy as E hiding (random_)
import qualified Database.Esqueleto.PostgreSQL as E import qualified Database.Esqueleto.PostgreSQL as E

View File

@ -16,7 +16,7 @@ import Data.Map ((!), (!?))
import qualified Data.Text as Text import qualified Data.Text as Text
import qualified Database.Esqueleto as E hiding (random_) import qualified Database.Esqueleto.Legacy as E hiding (random_)
import qualified Database.Esqueleto.PostgreSQL as E import qualified Database.Esqueleto.PostgreSQL as E
import qualified Data.Conduit.Combinators as C import qualified Data.Conduit.Combinators as C

View File

@ -13,7 +13,7 @@ import Data.Map ((!?))
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Control.Monad.State.Class as State import qualified Control.Monad.State.Class as State
import Data.Sequence (Seq((:|>))) import Data.Sequence (Seq((:|>)))

View File

@ -14,7 +14,7 @@ import Handler.Utils
import qualified Data.Text as Text import qualified Data.Text as Text
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Conduit.List as C import qualified Data.Conduit.List as C
@ -348,7 +348,7 @@ editApplicationR maId uid cid mAppId afMode allowAction postAction = do
, allowAction afAction , allowAction afAction
, Just appId <- mAppId , Just appId <- mAppId
-> runDB $ do -> runDB $ do
deleteCascade appId delete appId
audit $ TransactionCourseApplicationDeleted cid uid appId audit $ TransactionCourseApplicationDeleted cid uid appId
addMessageI Success $ MsgCourseApplicationDeleted courseShorthand addMessageI Success $ MsgCourseApplicationDeleted courseShorthand
| otherwise | otherwise

View File

@ -12,7 +12,7 @@ import Handler.Allocation.Accept (SessionDataAllocationResults(..))
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Control.Monad.State.Class as State import qualified Control.Monad.State.Class as State

View File

@ -16,7 +16,7 @@ import qualified Data.Conduit.Combinators as C
import Handler.Utils.Delete import Handler.Utils.Delete
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Handler.Course.Register (deregisterParticipant) import Handler.Course.Register (deregisterParticipant)

View File

@ -7,7 +7,7 @@ import Import
import Handler.Utils import Handler.Utils
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Map.Strict as Map import qualified Data.Map.Strict as Map
import qualified Data.Set as Set import qualified Data.Set as Set

View File

@ -8,7 +8,7 @@ import Import
import Utils.Course (mayViewCourse) import Utils.Course (mayViewCourse)
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Handler.Utils.Table.Columns import Handler.Utils.Table.Columns
import Handler.Utils.Table.Pagination import Handler.Utils.Table.Pagination

View File

@ -8,7 +8,7 @@ import Handler.Utils
import Handler.Utils.Csv import Handler.Utils.Csv
import Handler.Utils.Allocation import Handler.Utils.Allocation
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Data.Conduit.List as C import qualified Data.Conduit.List as C

View File

@ -12,7 +12,7 @@ import Handler.Utils.Allocation (allocationNotifyNewCourses)
import Handler.Allocation.Register import Handler.Allocation.Register
import Handler.Allocation.Application import Handler.Allocation.Application
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E

View File

@ -12,7 +12,7 @@ import Handler.Allocation.Application
import Handler.Utils import Handler.Utils
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Database.Esqueleto.PostgreSQL as E import qualified Database.Esqueleto.PostgreSQL as E
import qualified Data.Map.Strict as Map import qualified Data.Map.Strict as Map

View File

@ -12,7 +12,7 @@ import Handler.Utils
import Handler.Utils.Allocation import Handler.Utils.Allocation
import Handler.Utils.StudyFeatures import Handler.Utils.StudyFeatures
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Data.Csv as Csv import qualified Data.Csv as Csv

View File

@ -4,7 +4,7 @@ module Handler.Course
import Import import Import
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Persist as P import qualified Database.Persist as P
import Handler.Course.Communication as Handler.Course import Handler.Course.Communication as Handler.Course

View File

@ -10,7 +10,7 @@ import Handler.Utils
import qualified Data.Conduit.List as C import qualified Data.Conduit.List as C
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.CaseInsensitive as CI import qualified Data.CaseInsensitive as CI

View File

@ -9,7 +9,7 @@ import Import
import Handler.Utils import Handler.Utils
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Database.Esqueleto.Utils.TH import Database.Esqueleto.Utils.TH

View File

@ -9,7 +9,7 @@ import Handler.Utils.Communication
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
getCCommR, postCCommR :: TermId -> SchoolId -> CourseShorthand -> Handler Html getCCommR, postCCommR :: TermId -> SchoolId -> CourseShorthand -> Handler Html

View File

@ -18,7 +18,7 @@ import qualified Data.Map as Map
import qualified Control.Monad.State.Class as State import qualified Control.Monad.State.Class as State
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Jobs.Queue import Jobs.Queue

View File

@ -8,7 +8,7 @@ import Import
import Handler.Utils import Handler.Utils
import Handler.Utils.Form.Occurrences import Handler.Utils.Form.Occurrences
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
data CourseEventForm = CourseEventForm data CourseEventForm = CourseEventForm

View File

@ -17,7 +17,7 @@ import Utils.Form
-- import Utils.DB -- import Utils.DB
import Handler.Utils hiding (colSchoolShort) import Handler.Utils hiding (colSchoolShort)
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Data.CaseInsensitive as CI import qualified Data.CaseInsensitive as CI

View File

@ -6,7 +6,7 @@ module Handler.Course.News.Download
import Import import Import
import Handler.Utils import Handler.Utils
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Conduit.List as C import qualified Data.Conduit.List as C

View File

@ -18,7 +18,7 @@ import qualified Data.Text as Text
import qualified Data.Conduit.List as C import qualified Data.Conduit.List as C
import Database.Persist.Sql (transactionUndo) import Database.Persist.Sql (transactionUndo)
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E

View File

@ -15,7 +15,7 @@ import qualified Data.CaseInsensitive as CI
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Database.Esqueleto.Utils.TH import Database.Esqueleto.Utils.TH

View File

@ -9,7 +9,7 @@ import Handler.Utils
import Handler.Utils.SheetType import Handler.Utils.SheetType
import Database.Esqueleto.Utils.TH import Database.Esqueleto.Utils.TH
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Database.Persist.Sql (deleteWhereCount) import Database.Persist.Sql (deleteWhereCount)

View File

@ -23,7 +23,7 @@ import qualified Data.Map as Map
import qualified Data.Text as Text import qualified Data.Text as Text
import qualified Data.Vector as Vector import qualified Data.Vector as Vector
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Csv as Csv import qualified Data.Csv as Csv

View File

@ -12,7 +12,7 @@ import Handler.Utils.Exam
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import Database.Persist.Sql (updateWhereCount) import Database.Persist.Sql (updateWhereCount)
newtype ExamAutoOccurrenceCalculateForm = ExamAutoOccurrenceCalculateForm newtype ExamAutoOccurrenceCalculateForm = ExamAutoOccurrenceCalculateForm

View File

@ -7,7 +7,7 @@ import Import
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.CaseInsensitive as CI import qualified Data.CaseInsensitive as CI
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Database.Persist.Sql (transactionUndo) import Database.Persist.Sql (transactionUndo)

View File

@ -14,7 +14,7 @@ import Handler.Utils.Invitations
import Jobs.Queue import Jobs.Queue
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E

View File

@ -18,7 +18,7 @@ import Data.Map ((!))
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Control.Monad.State.Class as State import qualified Control.Monad.State.Class as State

View File

@ -9,7 +9,7 @@ import Handler.Utils
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E

View File

@ -12,7 +12,7 @@ import Handler.ExamOffice.Exam (examCloseWidget, examFinishWidget)
import Data.Map ((!?)) import Data.Map ((!?))
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Data.CaseInsensitive as CI import qualified Data.CaseInsensitive as CI

View File

@ -16,7 +16,7 @@ import Handler.Exam.AutoOccurrence (examAutoOccurrenceCalculateWidget)
import Handler.ExamOffice.Exam (examCloseWidget, examFinishWidget) import Handler.ExamOffice.Exam (examCloseWidget, examFinishWidget)
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Database.Esqueleto.Utils.TH import Database.Esqueleto.Utils.TH

View File

@ -6,7 +6,7 @@ import Import
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Handler.Utils.ExamOffice.Course import Handler.Utils.ExamOffice.Course

View File

@ -11,7 +11,7 @@ import Handler.Utils.Exam
import Handler.Utils.Csv import Handler.Utils.Csv
import qualified Handler.Utils.ExamOffice.Exam as Exam import qualified Handler.Utils.ExamOffice.Exam as Exam
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Data.Csv as Csv import qualified Data.Csv as Csv

View File

@ -10,7 +10,7 @@ import Handler.Utils
import qualified Handler.Utils.ExamOffice.Exam as Exam import qualified Handler.Utils.ExamOffice.Exam as Exam
import qualified Handler.Utils.ExamOffice.ExternalExam as ExternalExam import qualified Handler.Utils.ExamOffice.ExternalExam as ExternalExam
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Colonnade import qualified Colonnade

View File

@ -6,7 +6,7 @@ module Handler.ExamOffice.Fields
import Import import Import
import Utils.Form import Utils.Form
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@ -13,7 +13,7 @@ import Handler.Utils.Invitations
import Data.Aeson hiding (Result(..)) import Data.Aeson hiding (Result(..))
import Jobs.Queue import Jobs.Queue
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@ -7,7 +7,7 @@ import Import
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.List.NonEmpty as NonEmpty (toList) import qualified Data.List.NonEmpty as NonEmpty (toList)
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
--import qualified Database.Esqueleto.Utils as E --import qualified Database.Esqueleto.Utils as E
import Database.Persist.Sql (transactionUndo) import Database.Persist.Sql (transactionUndo)

View File

@ -13,7 +13,7 @@ import Data.Map ((!))
import qualified Control.Monad.State.Class as State import qualified Control.Monad.State.Class as State
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
data ExternalExamForm = ExternalExamForm data ExternalExamForm = ExternalExamForm

View File

@ -6,7 +6,7 @@ import Import
import Handler.Utils import Handler.Utils
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@ -11,7 +11,7 @@ import Handler.ExternalExam.StaffInvite ()
import qualified Data.CaseInsensitive as CI import qualified Data.CaseInsensitive as CI
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
getEEShowR :: TermId -> SchoolId -> CourseName -> ExamName -> Handler Html getEEShowR :: TermId -> SchoolId -> CourseName -> ExamName -> Handler Html

View File

@ -9,7 +9,7 @@ import Data.Map ((!))
import qualified Data.CaseInsensitive as CI import qualified Data.CaseInsensitive as CI
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Development.GitRev import Development.GitRev

View File

@ -17,7 +17,7 @@ import qualified Data.Conduit.List as C
import qualified Data.CaseInsensitive as CI import qualified Data.CaseInsensitive as CI
-- import qualified Data.Text.Encoding as Text -- import qualified Data.Text.Encoding as Text
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import Utils.Form import Utils.Form
import Handler.Utils import Handler.Utils

View File

@ -11,7 +11,7 @@ import qualified Data.Map.Strict as Map
import qualified Data.Set as Set import qualified Data.Set as Set
import Database.Esqueleto.Utils.TH import Database.Esqueleto.Utils.TH
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Data.Conduit.List as C (consume, mapMaybeM) import qualified Data.Conduit.List as C (consume, mapMaybeM)

View File

@ -8,7 +8,7 @@ module Handler.Participants
import Import import Import
import Handler.Utils import Handler.Utils
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@ -18,7 +18,7 @@ import Handler.Utils.Profile
import Data.Map ((!)) import Data.Map ((!))
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
-- import Database.Esqueleto ((^.)) -- import Database.Esqueleto ((^.))
import qualified Data.Text as Text import qualified Data.Text as Text

View File

@ -3,7 +3,7 @@ module Handler.School where
import Import import Import
import Handler.Utils import Handler.Utils
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.CaseInsensitive as CI import qualified Data.CaseInsensitive as CI

View File

@ -7,7 +7,7 @@ import Import
import Handler.Utils.Delete import Handler.Utils.Delete
import Handler.Utils.Sheet import Handler.Utils.Sheet
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Set as Set import qualified Data.Set as Set

View File

@ -9,7 +9,7 @@ import Handler.Utils
import qualified Data.Conduit.Combinators as C import qualified Data.Conduit.Combinators as C
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E

View File

@ -9,7 +9,7 @@ import Import
import Handler.Utils import Handler.Utils
import Handler.Utils.Invitations import Handler.Utils.Invitations
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@ -8,7 +8,7 @@ import Utils.Sheet
import Handler.Utils import Handler.Utils
import Handler.Utils.SheetType import Handler.Utils.SheetType
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@ -6,7 +6,7 @@ import Import
import Handler.Utils import Handler.Utils
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@ -32,7 +32,7 @@ import Language.Haskell.TH (nameBase)
import qualified Data.CryptoID.ByteString as CryptoID import qualified Data.CryptoID.ByteString as CryptoID
import qualified Data.CryptoID.Class.ImplicitNamespace as I import qualified Data.CryptoID.Class.ImplicitNamespace as I
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.Set as Set import qualified Data.Set as Set

View File

@ -18,7 +18,7 @@ import qualified Data.YAML.Token as YAML (Encoding(..))
import Control.Monad.Trans.State.Lazy (evalState) import Control.Monad.Trans.State.Lazy (evalState)
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.CaseInsensitive as CI import qualified Data.CaseInsensitive as CI

View File

@ -6,7 +6,7 @@ import Import hiding (link)
import Handler.Utils import Handler.Utils
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@ -30,7 +30,7 @@ import Handler.Utils
import Import import Import
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
getSubmissionOwnR :: TermId -> SchoolId -> CourseShorthand -> SheetName -> Handler Html getSubmissionOwnR :: TermId -> SchoolId -> CourseShorthand -> SheetName -> Handler Html

View File

@ -18,7 +18,7 @@ import qualified Data.Map.Strict as Map
import qualified Data.Text as Text import qualified Data.Text as Text
import qualified Data.CaseInsensitive as CI import qualified Data.CaseInsensitive as CI
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import Data.List.NonEmpty (unzip) import Data.List.NonEmpty (unzip)

View File

@ -14,7 +14,7 @@ import qualified Data.Text as Text
import qualified Control.Monad.State.Class as State import qualified Control.Monad.State.Class as State
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E

View File

@ -16,7 +16,7 @@ import qualified Data.Text as Text
import qualified Control.Monad.State.Class as State import qualified Control.Monad.State.Class as State
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import Data.List (genericLength) import Data.List (genericLength)

View File

@ -11,7 +11,7 @@ import Handler.Utils.Submission
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Conduit.Combinators as Conduit import qualified Data.Conduit.Combinators as Conduit

View File

@ -14,7 +14,7 @@ import Handler.Utils.Invitations
import Data.Maybe (fromJust) import Data.Maybe (fromJust)
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Database.Esqueleto.Internal.Internal as E (unsafeSqlFunction) import qualified Database.Esqueleto.Internal.Internal as E (unsafeSqlFunction)

View File

@ -26,7 +26,7 @@ import qualified Data.Text as Text
import qualified Data.CaseInsensitive as CI import qualified Data.CaseInsensitive as CI
import Database.Esqueleto.Utils.TH import Database.Esqueleto.Utils.TH
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Database.Esqueleto.Internal.Internal as IE (From) import qualified Database.Esqueleto.Internal.Internal as IE (From)

View File

@ -17,7 +17,7 @@ import qualified Data.List.NonEmpty as NonEmpty
import Handler.Utils import Handler.Utils
import Handler.Utils.News import Handler.Utils.News
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
-- htmlField' moved to Handler.Utils.Form/Fields -- htmlField' moved to Handler.Utils.Form/Fields
@ -257,7 +257,7 @@ postMessageListR = do
FormSuccess (SMDDelete, selection) FormSuccess (SMDDelete, selection)
| not $ null selection -> do | not $ null selection -> do
selection' <- traverse decrypt $ Set.toList selection selection' <- traverse decrypt $ Set.toList selection
runDB $ deleteCascadeWhere [ SystemMessageId <-. selection' ] runDB $ deleteWhere [ SystemMessageId <-. selection' ]
$(addMessageFile Success "templates/messages/systemMessagesDeleted.hamlet") $(addMessageFile Success "templates/messages/systemMessagesDeleted.hamlet")
redirect MessageListR redirect MessageListR
FormSuccess (SMDActivate ts, selection) FormSuccess (SMDActivate ts, selection)

View File

@ -13,7 +13,7 @@ import Handler.Utils
import qualified Data.Map.Strict as Map import qualified Data.Map.Strict as Map
import Data.Map.Strict ((!)) import Data.Map.Strict ((!))
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Set as Set import qualified Data.Set as Set

View File

@ -7,7 +7,7 @@ import Handler.Utils
import Handler.Utils.Tutorial import Handler.Utils.Tutorial
import Handler.Utils.Communication import Handler.Utils.Communication
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@ -7,7 +7,7 @@ import Handler.Utils
import Handler.Utils.Tutorial import Handler.Utils.Tutorial
import Handler.Utils.Delete import Handler.Utils.Delete
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Set as Set import qualified Data.Set as Set

View File

@ -8,7 +8,7 @@ import Handler.Utils.Tutorial
import Handler.Utils.Invitations import Handler.Utils.Invitations
import Jobs.Queue import Jobs.Queue
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.Set as Set import qualified Data.Set as Set

View File

@ -7,7 +7,7 @@ import Import
import Handler.Utils import Handler.Utils
import Handler.Utils.Form.Occurrences import Handler.Utils.Form.Occurrences
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import Data.Map ((!)) import Data.Map ((!))
import qualified Data.Set as Set import qualified Data.Set as Set

View File

@ -6,7 +6,7 @@ import Import
import Handler.Utils import Handler.Utils
import Handler.Utils.Tutorial import Handler.Utils.Tutorial
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Database.Esqueleto.Utils.TH import Database.Esqueleto.Utils.TH

View File

@ -15,7 +15,7 @@ import qualified Data.CaseInsensitive as CI
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import Handler.Course.Users import Handler.Course.Users

View File

@ -19,7 +19,7 @@ import qualified Data.CaseInsensitive as CI
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Handler.Profile (makeProfileData) import Handler.Profile (makeProfileData)
@ -503,9 +503,9 @@ deleteUser duid = do
groupSubmissions <- selectSubmissionsWhere (\numBuddies -> numBuddies E.>. E.val (0::Int64)) groupSubmissions <- selectSubmissionsWhere (\numBuddies -> numBuddies E.>. E.val (0::Int64))
singleSubmissions <- selectSubmissionsWhere (\numBuddies -> numBuddies E.==. E.val (0::Int64)) singleSubmissions <- selectSubmissionsWhere (\numBuddies -> numBuddies E.==. E.val (0::Int64))
deleteCascade duid delete duid -- cascade is now defined in models files; therefor does not cascade at all currently (2021-06-27); not even SubmissionUser...
forM_ singleSubmissions $ \(E.Value submissionId) -> do forM_ singleSubmissions $ \(E.Value submissionId) -> do
deleteCascade submissionId delete submissionId -- ditto
deletedSubmissionGroups <- deleteSingleSubmissionGroups deletedSubmissionGroups <- deleteSingleSubmissionGroups
return ((length singleSubmissions, length groupSubmissions),deletedSubmissionGroups) return ((length singleSubmissions, length groupSubmissions),deletedSubmissionGroups)

View File

@ -13,7 +13,7 @@ import Import
import qualified Data.Map.Strict as Map import qualified Data.Map.Strict as Map
import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E import qualified Database.Esqueleto.Utils as E
import Control.Monad.Trans.State (execStateT) import Control.Monad.Trans.State (execStateT)

Some files were not shown because too many files have changed in this diff Show More