chore: bump versions
This commit is contained in:
parent
adbbb8db6b
commit
5ade6c65d6
@ -6,7 +6,7 @@ workflow:
|
||||
|
||||
default:
|
||||
image:
|
||||
name: fpco/stack-build:lts-16.31
|
||||
name: fpco/stack-build:lts-17.15
|
||||
|
||||
variables:
|
||||
STACK_ROOT: "${CI_PROJECT_DIR}/.stack"
|
||||
|
||||
@ -13,6 +13,7 @@
|
||||
- ignore: { name: "Redundant void" }
|
||||
- ignore: { name: "Too strict maybe" }
|
||||
- ignore: { name: "Use Just" }
|
||||
- ignore: { name: "Use const" }
|
||||
|
||||
- arguments:
|
||||
- -XQuasiQuotes
|
||||
|
||||
12
flake.lock
12
flake.lock
@ -2,11 +2,11 @@
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"locked": {
|
||||
"lastModified": 1619345332,
|
||||
"narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=",
|
||||
"lastModified": 1623875721,
|
||||
"narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28",
|
||||
"rev": "f7e004a55b120c02ecb6219596820fcd32ca8772",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -18,11 +18,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1620323686,
|
||||
"narHash": "sha256-+gfcE3YTGl+Osc8HzOUXSFO8/0PAK4J8ZxCXZ4hjXHI=",
|
||||
"lastModified": 1624788075,
|
||||
"narHash": "sha256-xzO2aL5gGejNvey2jKGnbnFXbo99pdytlY5FF/IhvAE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "dfacb8329b2236688b9a1e705116203a213b283a",
|
||||
"rev": "4ba70da807359ed01d662763a96c7b442762e5ef",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@ -53,7 +53,7 @@ AllocationUser
|
||||
|
||||
AllocationDeregister -- self-inflicted user-deregistrations from an allocated course
|
||||
user UserId
|
||||
course CourseId Maybe
|
||||
course CourseId Maybe OnDeleteSetNull OnUpdateCascade
|
||||
time UTCTime
|
||||
reason Text Maybe -- if this deregistration was done by proxy (e.g. the lecturer pressed the button)
|
||||
deriving Eq Ord Show Generic
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
DegreeCourse json -- for which degree programmes this course is appropriate for
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
degree StudyDegreeId
|
||||
terms StudyTermsId
|
||||
UniqueDegreeCourse course degree terms
|
||||
@ -31,7 +31,7 @@ Course -- Information about a single course; contained info is always visible
|
||||
deriving Generic
|
||||
CourseEvent
|
||||
type (CI Text)
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
room RoomReference Maybe
|
||||
roomHidden Bool default=false
|
||||
time Occurrences
|
||||
@ -40,7 +40,7 @@ CourseEvent
|
||||
deriving Generic
|
||||
|
||||
CourseAppInstructionFile
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
title FilePath
|
||||
content FileContentReference Maybe
|
||||
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)
|
||||
user UserId
|
||||
time UTCTime
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
deriving Generic
|
||||
Lecturer -- course ownership
|
||||
user UserId
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
type LecturerType default='"lecturer"'::jsonb
|
||||
UniqueLecturer user course -- note: multiple lecturers per course are allowed, but no duplicated rows in this table
|
||||
deriving Generic
|
||||
|
||||
@ -13,7 +13,7 @@ CourseApplication
|
||||
deriving Generic
|
||||
|
||||
CourseApplicationFile
|
||||
application CourseApplicationId
|
||||
application CourseApplicationId OnDeleteCascade OnUpdateCascade
|
||||
title FilePath
|
||||
content FileContentReference Maybe
|
||||
modified UTCTime
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
CourseFavourite -- which user accessed which course when, only displayed to user for convenience;
|
||||
user UserId
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
reason FavouriteReason
|
||||
lastVisit UTCTime
|
||||
UniqueCourseFavourite user course
|
||||
deriving Generic
|
||||
CourseNoFavourite
|
||||
user UserId
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
UniqueCourseNoFavourite user course
|
||||
deriving Generic
|
||||
@ -1,5 +1,5 @@
|
||||
Material -- course material for disemination to course participants
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
name (CI Text)
|
||||
type (CI Text) Maybe
|
||||
description StoredMarkup Maybe
|
||||
@ -8,7 +8,7 @@ Material -- course material for disemination to course participants
|
||||
UniqueMaterial course name
|
||||
deriving Generic
|
||||
MaterialFile -- a file that is part of a material distribution
|
||||
material MaterialId
|
||||
material MaterialId OnDeleteCascade OnUpdateCascade
|
||||
title FilePath
|
||||
content FileContentReference Maybe
|
||||
modified UTCTime
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
CourseNews
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
visibleFrom UTCTime Maybe
|
||||
participantsOnly Bool
|
||||
title Text Maybe
|
||||
@ -8,7 +8,7 @@ CourseNews
|
||||
lastEdit UTCTime
|
||||
deriving Generic
|
||||
CourseNewsFile
|
||||
news CourseNewsId
|
||||
news CourseNewsId OnDeleteCascade OnUpdateCascade
|
||||
title FilePath
|
||||
content FileContentReference Maybe
|
||||
modified UTCTime
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
Sheet -- exercise sheet for a given course
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
name (CI Text)
|
||||
description StoredMarkup Maybe
|
||||
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
|
||||
user UserId
|
||||
time UTCTime
|
||||
sheet SheetId
|
||||
sheet SheetId OnDeleteCascade OnUpdateCascade
|
||||
deriving Generic
|
||||
|
||||
-- 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
|
||||
-- Chosen uniformly at random when the submitting user presses a button on the view of a sheet
|
||||
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
|
||||
user UserId
|
||||
UniqueSheetPseudonym sheet pseudonym
|
||||
@ -35,13 +35,13 @@ SheetPseudonym
|
||||
deriving Generic
|
||||
SheetCorrector -- grant corrector role to user for a sheet
|
||||
user UserId
|
||||
sheet SheetId
|
||||
sheet SheetId OnDeleteCascade OnUpdateCascade
|
||||
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)
|
||||
UniqueSheetCorrector user sheet
|
||||
deriving Show Eq Ord Generic
|
||||
SheetFile -- a file that is part of an exercise sheet
|
||||
sheet SheetId
|
||||
sheet SheetId OnDeleteCascade OnUpdateCascade
|
||||
type SheetFileType -- excercise, marking, hint or solution
|
||||
title FilePath
|
||||
content FileContentReference Maybe
|
||||
@ -49,7 +49,7 @@ SheetFile -- a file that is part of an exercise sheet
|
||||
UniqueSheetFile sheet type title
|
||||
deriving Generic
|
||||
PersonalisedSheetFile
|
||||
sheet SheetId
|
||||
sheet SheetId OnDeleteCascade OnUpdateCascade
|
||||
user UserId
|
||||
type SheetFileType
|
||||
title FilePath
|
||||
@ -59,7 +59,7 @@ PersonalisedSheetFile
|
||||
deriving Eq Ord Read Show Typeable Generic
|
||||
|
||||
FallbackPersonalisedSheetFilesKey
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
index Word24
|
||||
secret ByteString
|
||||
generated UTCTime
|
||||
|
||||
@ -9,10 +9,10 @@ Submission -- submission for marking by a CourseParticipa
|
||||
SubmissionEdit -- user uploads new version of their submission
|
||||
user UserId Maybe -- track id, important for group submissions
|
||||
time UTCTime
|
||||
submission SubmissionId
|
||||
submission SubmissionId OnDeleteCascade OnUpdateCascade
|
||||
deriving Generic
|
||||
SubmissionFile json -- files that are part of a submission
|
||||
submission SubmissionId
|
||||
submission SubmissionId OnDeleteCascade OnUpdateCascade
|
||||
title FilePath
|
||||
content FileContentReference Maybe
|
||||
modified UTCTime
|
||||
@ -22,11 +22,11 @@ SubmissionFile json -- files that are part of a submission
|
||||
deriving Eq Ord Read Show Generic
|
||||
SubmissionUser -- which submission belongs to whom
|
||||
user UserId
|
||||
submission SubmissionId
|
||||
submission SubmissionId OnDeleteCascade OnUpdateCascade
|
||||
UniqueSubmissionUser user submission -- multiple users may share same submission, in case of (ad-hoc) submission groups
|
||||
deriving Generic
|
||||
SubmissionGroup -- pre-defined submission groups; some courses only allow pre-defined submission groups
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
name SubmissionGroupName
|
||||
UniqueSubmissionGroup course name
|
||||
deriving Generic
|
||||
|
||||
@ -16,7 +16,7 @@ SystemMessage
|
||||
deriving Generic
|
||||
|
||||
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
|
||||
content StoredMarkup
|
||||
summary StoredMarkup Maybe
|
||||
@ -24,7 +24,7 @@ SystemMessageTranslation -- Translation of a @SystemMessage@ into another langua
|
||||
deriving Generic
|
||||
|
||||
SystemMessageHidden
|
||||
message SystemMessageId
|
||||
message SystemMessageId OnDeleteCascade OnUpdateCascade
|
||||
user UserId
|
||||
time UTCTime
|
||||
UniqueSystemMessageHidden user message
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
Tutorial json
|
||||
name TutorialName
|
||||
course CourseId
|
||||
course CourseId OnDeleteCascade OnUpdateCascade
|
||||
type (CI Text) -- "Tutorium", "Zentralübung", ...
|
||||
capacity Int Maybe -- limit for enrolment in this tutorial
|
||||
room RoomReference Maybe
|
||||
@ -15,12 +15,12 @@ Tutorial json
|
||||
UniqueTutorial course name
|
||||
deriving Generic
|
||||
Tutor
|
||||
tutorial TutorialId
|
||||
tutorial TutorialId OnDeleteCascade OnUpdateCascade
|
||||
user UserId
|
||||
UniqueTutor tutorial user
|
||||
deriving Generic
|
||||
TutorialParticipant
|
||||
tutorial TutorialId
|
||||
tutorial TutorialId OnDeleteCascade OnUpdateCascade
|
||||
user UserId
|
||||
UniqueTutorialParticipant tutorial user
|
||||
deriving Eq Ord Show
|
||||
|
||||
@ -13,7 +13,7 @@ WorkflowDefinition
|
||||
deriving Generic
|
||||
|
||||
WorkflowDefinitionDescription
|
||||
definition WorkflowDefinitionId
|
||||
definition WorkflowDefinitionId OnDeleteCascade OnUpdateCascade
|
||||
language Lang
|
||||
title Text
|
||||
description StoredMarkup Maybe
|
||||
@ -21,7 +21,7 @@ WorkflowDefinitionDescription
|
||||
deriving Generic
|
||||
|
||||
WorkflowDefinitionInstanceDescription
|
||||
definition WorkflowDefinitionId
|
||||
definition WorkflowDefinitionId OnDeleteCascade OnUpdateCascade
|
||||
language Lang
|
||||
title Text
|
||||
description StoredMarkup Maybe
|
||||
@ -29,7 +29,7 @@ WorkflowDefinitionInstanceDescription
|
||||
deriving Generic
|
||||
|
||||
WorkflowInstance
|
||||
definition WorkflowDefinitionId Maybe
|
||||
definition WorkflowDefinitionId Maybe OnDeleteSetNull OnUpdateCascade
|
||||
graph SharedWorkflowGraphId
|
||||
scope (WorkflowScope TermIdentifier SchoolShorthand SqlBackendKey) -- TermId, SchoolId, CourseId
|
||||
name WorkflowInstanceName
|
||||
|
||||
@ -17,9 +17,10 @@ module Application
|
||||
) where
|
||||
|
||||
import Control.Monad.Logger (liftLoc, LoggingT(..), MonadLoggerIO(..))
|
||||
import Database.Persist.Postgresql ( openSimpleConn, pgConnStr, connClose, pgPoolIdleTimeout
|
||||
import Database.Persist.Postgresql ( openSimpleConn, pgConnStr, pgPoolIdleTimeout
|
||||
, pgPoolSize
|
||||
)
|
||||
import Database.Persist.SqlBackend.Internal ( connClose )
|
||||
import qualified Database.PostgreSQL.Simple as PG
|
||||
import Import hiding (cancel, respond)
|
||||
import Language.Haskell.TH.Syntax (qLocation)
|
||||
|
||||
@ -23,7 +23,8 @@ import qualified Data.ByteString as BS
|
||||
|
||||
|
||||
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
|
||||
|
||||
instance Binary Seed where
|
||||
|
||||
@ -22,7 +22,7 @@ import Language.Haskell.TH.Syntax (Lift(..))
|
||||
|
||||
import Data.Aeson (ToJSONKey(..), FromJSONKey(..), ToJSONKeyFunction(..))
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
import Web.HttpApiData
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ module Database.Esqueleto.Instances
|
||||
|
||||
import ClassyPrelude.Yesod
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
import Data.Binary (Binary)
|
||||
import qualified Data.Binary as B
|
||||
|
||||
@ -43,7 +43,7 @@ import Data.Universe
|
||||
import qualified Data.Set as Set
|
||||
import qualified Data.List as List
|
||||
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.Internal.Internal as E
|
||||
import Database.Esqueleto.Utils.TH
|
||||
@ -126,40 +126,24 @@ substring :: ( E.SqlString str
|
||||
-> E.SqlExpr (E.Value from)
|
||||
-> E.SqlExpr (E.Value for)
|
||||
-> E.SqlExpr (E.Value str)
|
||||
substring (E.ERaw p1 f1) (E.ERaw p2 f2) (E.ERaw p3 f3)
|
||||
= E.ERaw E.Never $ \info ->
|
||||
let (strTLB, strVals) = f1 info
|
||||
(fromiTLB, fromiVals) = f2 info
|
||||
(foriTLB, foriVals) = f3 info
|
||||
in ( "SUBSTRING" <> E.parens (E.parensM p1 strTLB <> " FROM " <> E.parensM p2 fromiTLB <> " FOR " <> E.parensM p3 foriTLB)
|
||||
substring (E.ERaw _m1 f1) (E.ERaw _m2 f2) (E.ERaw _m3 f3)
|
||||
= E.ERaw E.noMeta $ \_nParens info ->
|
||||
let (strTLB, strVals) = f1 E.Parens info
|
||||
(fromiTLB, fromiVals) = f2 E.Parens info
|
||||
(foriTLB, foriVals) = f3 E.Parens info
|
||||
in ( "SUBSTRING" <> E.parens (E.parens strTLB <> " FROM " <> E.parens fromiTLB <> " FOR " <> E.parens foriTLB)
|
||||
, strVals <> fromiVals <> foriVals
|
||||
)
|
||||
substring a b c = substring (construct a) (construct b) (construct c)
|
||||
|
||||
explicitUnsafeCoerceSqlExprValue :: forall b a.
|
||||
Text
|
||||
-> E.SqlExpr (E.Value a)
|
||||
-> E.SqlExpr (E.Value b)
|
||||
explicitUnsafeCoerceSqlExprValue typ (E.ERaw p1 f1) = E.ERaw E.Parens $ \info ->
|
||||
let (valTLB, valVals) = f1 info
|
||||
in ( E.parensM p1 valTLB <> " :: " <> Text.Builder.fromText typ
|
||||
explicitUnsafeCoerceSqlExprValue typ (E.ERaw _m1 f1) = E.ERaw E.noMeta $ \_nParens info ->
|
||||
let (valTLB, valVals) = f1 E.Parens info
|
||||
in ( E.parens valTLB <> " :: " <> Text.Builder.fromText typ
|
||||
, 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 = 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
|
||||
|
||||
unsafeExtract :: String -> E.SqlExpr (E.Value a) -> E.SqlExpr (E.Value b)
|
||||
unsafeExtract extr (E.ERaw vP vF) = E.ERaw E.Never $ \info ->
|
||||
let (vTLB, vVals) = vF info
|
||||
in ( "EXTRACT" <> E.parens (fromString extr <> " FROM " <> E.parensM vP vTLB)
|
||||
unsafeExtract extr (E.ERaw _mF vF) = E.ERaw E.noMeta $ \_nParens info ->
|
||||
let (vTLB, vVals) = vF E.Parens info
|
||||
in ( "EXTRACT" <> E.parens (fromString extr <> " FROM " <> E.parens vTLB)
|
||||
, vVals
|
||||
)
|
||||
unsafeExtract extr v = unsafeExtract extr $ construct v
|
||||
|
||||
|
||||
class ExprLift e a | e -> a where
|
||||
|
||||
@ -9,7 +9,7 @@ module Database.Esqueleto.Utils.TH
|
||||
|
||||
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 Database.Persist (PersistField)
|
||||
|
||||
@ -31,8 +31,8 @@ instance PersistEntity record => Binary (Key record) where
|
||||
get = either (fail . unpack) return . fromPersistValue =<< Binary.get
|
||||
|
||||
|
||||
uniqueToMap :: PersistEntity record => Unique record -> Map (HaskellName, DBName) PersistValue
|
||||
uniqueToMap = fmap Map.fromList $ zip <$> persistUniqueToFieldNames <*> persistUniqueToValues
|
||||
uniqueToMap :: PersistEntity record => Unique record -> Map (FieldNameHS, FieldNameDB) PersistValue
|
||||
uniqueToMap = fmap Map.fromList $ zip <$> fmap toList persistUniqueToFieldNames <*> persistUniqueToValues
|
||||
|
||||
instance PersistEntity record => Eq (Unique record) where
|
||||
(==) = (==) `on` uniqueToMap
|
||||
|
||||
@ -17,6 +17,14 @@ import Data.Binary.Instances.Time as Import ()
|
||||
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 Typeable PersistValue
|
||||
|
||||
|
||||
@ -48,7 +48,7 @@ import qualified Data.Text as Text
|
||||
import Data.List (findIndex, inits)
|
||||
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 Control.Monad.Error.Class (MonadError(..))
|
||||
|
||||
@ -48,7 +48,7 @@ import qualified Data.Binary as Binary
|
||||
|
||||
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
|
||||
|
||||
@ -30,7 +30,7 @@ import Handler.Utils.ExamOffice.Course
|
||||
import Utils.Sheet
|
||||
|
||||
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 Control.Monad.Trans.State (execStateT)
|
||||
|
||||
@ -30,7 +30,7 @@ import qualified Data.Text as Text
|
||||
import qualified Data.Set as Set
|
||||
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 Data.Conduit.Combinators as C
|
||||
|
||||
@ -39,7 +39,7 @@ import Data.ByteArray (convert)
|
||||
import Crypto.Hash (SHAKE128)
|
||||
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 Crypto.Hash.Conduit (sinkHash)
|
||||
|
||||
@ -14,6 +14,7 @@ import Foundation.Authorization
|
||||
|
||||
import Database.Persist.Sql (transactionUndo)
|
||||
import qualified Database.Persist.Sql as SQL
|
||||
import qualified Database.Persist.SqlBackend.Internal as SQL
|
||||
|
||||
import qualified Utils.Pool as Custom
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@ import qualified Data.Text as Text
|
||||
import qualified Data.Set as Set
|
||||
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 qualified Handler.Utils.TermCandidates as Candidates
|
||||
|
||||
@ -18,7 +18,7 @@ import Data.Binary.Builder (Builder)
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ import Data.Map ((!), (!?))
|
||||
|
||||
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 Data.Conduit.Combinators as C
|
||||
|
||||
@ -13,7 +13,7 @@ import Data.Map ((!?))
|
||||
import qualified Data.Map as Map
|
||||
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 Data.Sequence (Seq((:|>)))
|
||||
|
||||
@ -14,7 +14,7 @@ import Handler.Utils
|
||||
import qualified Data.Text as Text
|
||||
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
|
||||
|
||||
@ -348,7 +348,7 @@ editApplicationR maId uid cid mAppId afMode allowAction postAction = do
|
||||
, allowAction afAction
|
||||
, Just appId <- mAppId
|
||||
-> runDB $ do
|
||||
deleteCascade appId
|
||||
delete appId
|
||||
audit $ TransactionCourseApplicationDeleted cid uid appId
|
||||
addMessageI Success $ MsgCourseApplicationDeleted courseShorthand
|
||||
| otherwise
|
||||
|
||||
@ -12,7 +12,7 @@ import Handler.Allocation.Accept (SessionDataAllocationResults(..))
|
||||
import qualified Data.Set as Set
|
||||
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 Control.Monad.State.Class as State
|
||||
|
||||
@ -16,7 +16,7 @@ import qualified Data.Conduit.Combinators as C
|
||||
|
||||
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 Handler.Course.Register (deregisterParticipant)
|
||||
|
||||
@ -7,7 +7,7 @@ import Import
|
||||
|
||||
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.Set as Set
|
||||
|
||||
@ -8,7 +8,7 @@ import Import
|
||||
|
||||
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 Handler.Utils.Table.Columns
|
||||
import Handler.Utils.Table.Pagination
|
||||
|
||||
@ -8,7 +8,7 @@ import Handler.Utils
|
||||
import Handler.Utils.Csv
|
||||
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 Data.Conduit.List as C
|
||||
|
||||
@ -12,7 +12,7 @@ import Handler.Utils.Allocation (allocationNotifyNewCourses)
|
||||
import Handler.Allocation.Register
|
||||
import Handler.Allocation.Application
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
import qualified Database.Esqueleto.Utils as E
|
||||
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@ import Handler.Allocation.Application
|
||||
|
||||
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.PostgreSQL as E
|
||||
import qualified Data.Map.Strict as Map
|
||||
|
||||
@ -12,7 +12,7 @@ import Handler.Utils
|
||||
import Handler.Utils.Allocation
|
||||
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 Data.Csv as Csv
|
||||
|
||||
@ -4,7 +4,7 @@ module Handler.Course
|
||||
|
||||
import Import
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
import qualified Database.Persist as P
|
||||
|
||||
import Handler.Course.Communication as Handler.Course
|
||||
|
||||
@ -10,7 +10,7 @@ import Handler.Utils
|
||||
|
||||
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
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ import Import
|
||||
|
||||
import Handler.Utils
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
import qualified Database.Esqueleto.Utils as E
|
||||
import Database.Esqueleto.Utils.TH
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ import Handler.Utils.Communication
|
||||
|
||||
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
|
||||
|
||||
@ -18,7 +18,7 @@ import qualified Data.Map as Map
|
||||
|
||||
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 Jobs.Queue
|
||||
|
||||
@ -8,7 +8,7 @@ import Import
|
||||
import Handler.Utils
|
||||
import Handler.Utils.Form.Occurrences
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
|
||||
data CourseEventForm = CourseEventForm
|
||||
|
||||
@ -17,7 +17,7 @@ import Utils.Form
|
||||
-- import Utils.DB
|
||||
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 Data.CaseInsensitive as CI
|
||||
|
||||
@ -6,7 +6,7 @@ module Handler.Course.News.Download
|
||||
import Import
|
||||
import Handler.Utils
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
import qualified Data.Conduit.List as C
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@ import qualified Data.Text as Text
|
||||
import qualified Data.Conduit.List as C
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ import qualified Data.CaseInsensitive as CI
|
||||
|
||||
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 Database.Esqueleto.Utils.TH
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ import Handler.Utils
|
||||
import Handler.Utils.SheetType
|
||||
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 Database.Persist.Sql (deleteWhereCount)
|
||||
|
||||
@ -23,7 +23,7 @@ import qualified Data.Map as Map
|
||||
import qualified Data.Text as Text
|
||||
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
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@ import Handler.Utils.Exam
|
||||
import qualified Data.Map as Map
|
||||
import qualified Data.Set as Set
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
import Database.Persist.Sql (updateWhereCount)
|
||||
|
||||
newtype ExamAutoOccurrenceCalculateForm = ExamAutoOccurrenceCalculateForm
|
||||
|
||||
@ -7,7 +7,7 @@ import Import
|
||||
import qualified Data.Set as Set
|
||||
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 Database.Persist.Sql (transactionUndo)
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ import Handler.Utils.Invitations
|
||||
|
||||
import Jobs.Queue
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
import qualified Database.Esqueleto.Utils as E
|
||||
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@ import Data.Map ((!))
|
||||
import qualified Data.Map as Map
|
||||
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 Control.Monad.State.Class as State
|
||||
|
||||
@ -9,7 +9,7 @@ import Handler.Utils
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@ import Handler.ExamOffice.Exam (examCloseWidget, examFinishWidget)
|
||||
import Data.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 Data.CaseInsensitive as CI
|
||||
|
||||
@ -16,7 +16,7 @@ import Handler.Exam.AutoOccurrence (examAutoOccurrenceCalculateWidget)
|
||||
|
||||
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 Database.Esqueleto.Utils.TH
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ import Import
|
||||
|
||||
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 Handler.Utils.ExamOffice.Course
|
||||
|
||||
@ -11,7 +11,7 @@ import Handler.Utils.Exam
|
||||
import Handler.Utils.Csv
|
||||
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 Data.Csv as Csv
|
||||
|
||||
@ -10,7 +10,7 @@ import Handler.Utils
|
||||
import qualified Handler.Utils.ExamOffice.Exam as Exam
|
||||
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 Colonnade
|
||||
|
||||
@ -6,7 +6,7 @@ module Handler.ExamOffice.Fields
|
||||
import Import
|
||||
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.Map as Map
|
||||
|
||||
@ -13,7 +13,7 @@ import Handler.Utils.Invitations
|
||||
import Data.Aeson hiding (Result(..))
|
||||
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.Map as Map
|
||||
|
||||
@ -7,7 +7,7 @@ import Import
|
||||
import qualified Data.Set as Set
|
||||
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 Database.Persist.Sql (transactionUndo)
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ import Data.Map ((!))
|
||||
|
||||
import qualified Control.Monad.State.Class as State
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
|
||||
data ExternalExamForm = ExternalExamForm
|
||||
|
||||
@ -6,7 +6,7 @@ import Import
|
||||
|
||||
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 Data.Map as Map
|
||||
|
||||
@ -11,7 +11,7 @@ import Handler.ExternalExam.StaffInvite ()
|
||||
import qualified Data.CaseInsensitive as CI
|
||||
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
|
||||
|
||||
@ -9,7 +9,7 @@ import Data.Map ((!))
|
||||
import qualified Data.CaseInsensitive as CI
|
||||
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 Development.GitRev
|
||||
|
||||
@ -17,7 +17,7 @@ import qualified Data.Conduit.List as C
|
||||
import qualified Data.CaseInsensitive as CI
|
||||
-- import qualified Data.Text.Encoding as Text
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
import Utils.Form
|
||||
import Handler.Utils
|
||||
|
||||
@ -11,7 +11,7 @@ import qualified Data.Map.Strict as Map
|
||||
import qualified Data.Set as Set
|
||||
|
||||
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 Data.Conduit.List as C (consume, mapMaybeM)
|
||||
|
||||
@ -8,7 +8,7 @@ module Handler.Participants
|
||||
import Import
|
||||
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 Data.Map as Map
|
||||
|
||||
@ -18,7 +18,7 @@ import Handler.Utils.Profile
|
||||
import Data.Map ((!))
|
||||
import qualified Data.Map as Map
|
||||
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 Database.Esqueleto ((^.))
|
||||
import qualified Data.Text as Text
|
||||
|
||||
@ -3,7 +3,7 @@ module Handler.School where
|
||||
import Import
|
||||
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.CaseInsensitive as CI
|
||||
|
||||
@ -7,7 +7,7 @@ import Import
|
||||
import Handler.Utils.Delete
|
||||
import Handler.Utils.Sheet
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
import qualified Data.Set as Set
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ import Handler.Utils
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ import Import
|
||||
import Handler.Utils
|
||||
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.Map as Map
|
||||
|
||||
@ -8,7 +8,7 @@ import Utils.Sheet
|
||||
import Handler.Utils
|
||||
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 Data.Map as Map
|
||||
|
||||
@ -6,7 +6,7 @@ import Import
|
||||
|
||||
import Handler.Utils
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
import qualified Data.Map as Map
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@ import Language.Haskell.TH (nameBase)
|
||||
import qualified Data.CryptoID.ByteString as CryptoID
|
||||
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.Set as Set
|
||||
|
||||
@ -18,7 +18,7 @@ import qualified Data.YAML.Token as YAML (Encoding(..))
|
||||
|
||||
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
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ import Import hiding (link)
|
||||
|
||||
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 Data.Map as Map
|
||||
|
||||
@ -30,7 +30,7 @@ import Handler.Utils
|
||||
|
||||
import Import
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
|
||||
getSubmissionOwnR :: TermId -> SchoolId -> CourseShorthand -> SheetName -> Handler Html
|
||||
|
||||
@ -18,7 +18,7 @@ import qualified Data.Map.Strict as Map
|
||||
import qualified Data.Text as Text
|
||||
import qualified Data.CaseInsensitive as CI
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
import Data.List.NonEmpty (unzip)
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ import qualified Data.Text as Text
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ import qualified Data.Text as Text
|
||||
|
||||
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)
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@ import Handler.Utils.Submission
|
||||
|
||||
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
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ import Handler.Utils.Invitations
|
||||
|
||||
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.Internal.Internal as E (unsafeSqlFunction)
|
||||
|
||||
|
||||
@ -26,7 +26,7 @@ import qualified Data.Text as Text
|
||||
import qualified Data.CaseInsensitive as CI
|
||||
|
||||
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.Internal.Internal as IE (From)
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ import qualified Data.List.NonEmpty as NonEmpty
|
||||
import Handler.Utils
|
||||
import Handler.Utils.News
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
-- htmlField' moved to Handler.Utils.Form/Fields
|
||||
|
||||
@ -257,7 +257,7 @@ postMessageListR = do
|
||||
FormSuccess (SMDDelete, selection)
|
||||
| not $ null selection -> do
|
||||
selection' <- traverse decrypt $ Set.toList selection
|
||||
runDB $ deleteCascadeWhere [ SystemMessageId <-. selection' ]
|
||||
runDB $ deleteWhere [ SystemMessageId <-. selection' ]
|
||||
$(addMessageFile Success "templates/messages/systemMessagesDeleted.hamlet")
|
||||
redirect MessageListR
|
||||
FormSuccess (SMDActivate ts, selection)
|
||||
|
||||
@ -13,7 +13,7 @@ import Handler.Utils
|
||||
import qualified Data.Map.Strict as Map
|
||||
import Data.Map.Strict ((!))
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
import qualified Data.Set as Set
|
||||
|
||||
|
||||
@ -7,7 +7,7 @@ import Handler.Utils
|
||||
import Handler.Utils.Tutorial
|
||||
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 Data.Map as Map
|
||||
|
||||
@ -7,7 +7,7 @@ import Handler.Utils
|
||||
import Handler.Utils.Tutorial
|
||||
import Handler.Utils.Delete
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
import qualified Data.Set as Set
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ import Handler.Utils.Tutorial
|
||||
import Handler.Utils.Invitations
|
||||
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.Set as Set
|
||||
|
||||
@ -7,7 +7,7 @@ import Import
|
||||
import Handler.Utils
|
||||
import Handler.Utils.Form.Occurrences
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
import Data.Map ((!))
|
||||
import qualified Data.Set as Set
|
||||
|
||||
@ -6,7 +6,7 @@ import Import
|
||||
import Handler.Utils
|
||||
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 Database.Esqueleto.Utils.TH
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ import qualified Data.CaseInsensitive as CI
|
||||
import qualified Data.Set as Set
|
||||
import qualified Data.Map as Map
|
||||
|
||||
import qualified Database.Esqueleto as E
|
||||
import qualified Database.Esqueleto.Legacy as E
|
||||
|
||||
import Handler.Course.Users
|
||||
|
||||
|
||||
@ -19,7 +19,7 @@ import qualified Data.CaseInsensitive as CI
|
||||
import qualified Data.Set as Set
|
||||
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 Handler.Profile (makeProfileData)
|
||||
@ -503,9 +503,9 @@ deleteUser duid = do
|
||||
|
||||
groupSubmissions <- 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
|
||||
deleteCascade submissionId
|
||||
delete submissionId -- ditto
|
||||
|
||||
deletedSubmissionGroups <- deleteSingleSubmissionGroups
|
||||
return ((length singleSubmissions, length groupSubmissions),deletedSubmissionGroups)
|
||||
|
||||
@ -13,7 +13,7 @@ import Import
|
||||
|
||||
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 Control.Monad.Trans.State (execStateT)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user