68 lines
2.2 KiB
Haskell
68 lines
2.2 KiB
Haskell
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
|
|
|
|
module Model
|
|
( module Model
|
|
, module Model.Types
|
|
, module Cron.Types
|
|
) where
|
|
|
|
import Import.NoModel
|
|
import Database.Persist.Quasi
|
|
import Database.Persist.TH.Directory
|
|
-- import Data.Time
|
|
-- import Data.ByteString
|
|
import Model.Types hiding (_maxPoints, _passingPoints)
|
|
import Cron.Types
|
|
|
|
import Data.Aeson (Value)
|
|
|
|
import Data.CaseInsensitive (CI, original)
|
|
import Data.CaseInsensitive.Instances ()
|
|
|
|
import Utils.Message (MessageStatus)
|
|
|
|
import Settings.Cluster (ClusterSettingsKey)
|
|
|
|
import Text.Blaze (ToMarkup(..))
|
|
|
|
|
|
-- You can define all of your database entities in the entities file.
|
|
-- You can find more information on persistent and how to declare entities
|
|
-- at:
|
|
-- http://www.yesodweb.com/book/persistent/
|
|
share [mkPersist sqlSettings, mkDeleteCascade sqlSettings, mkMigrate "migrateAll'", mkSave "currentModel"]
|
|
$(persistDirectoryWith lowerCaseSettings "models")
|
|
|
|
-- (Eq Course) is impossible so we derive it for the Uniqueness Constraint only; comments helpful for searching in code
|
|
deriving instance Eq (Unique Course) -- instance Eq TermSchoolCourseShort; instance Eq TermSchoolCourseName
|
|
deriving instance Eq (Unique Sheet) -- instance Eq CourseSheet
|
|
deriving instance Eq (Unique Material) -- instance Eq UniqueMaterial
|
|
deriving instance Eq (Unique Tutorial) -- instance Eq Tutorial
|
|
deriving instance Eq (Unique Exam)
|
|
|
|
instance Ord User where
|
|
compare User{userSurname=surnameA, userDisplayName=displayNameA, userEmail=emailA}
|
|
User{userSurname=surnameB, userDisplayName=displayNameB, userEmail=emailB}
|
|
= compare surnameA surnameB
|
|
<> compare displayNameA displayNameB
|
|
<> compare emailA emailB -- userEmail is unique, so this suffices
|
|
|
|
|
|
|
|
submissionRatingDone :: Submission -> Bool
|
|
submissionRatingDone Submission{..} = isJust submissionRatingTime
|
|
|
|
-- ToMarkup and ToMessage instances for displaying selected database primary keys
|
|
|
|
instance ToMarkup (Key School) where
|
|
toMarkup = toMarkup . unSchoolKey
|
|
|
|
instance ToMessage (Key School) where
|
|
toMessage = original . unSchoolKey
|
|
|
|
instance ToMarkup (Key Term) where
|
|
toMarkup = toMarkup . termToText . unTermKey
|
|
|
|
instance ToMessage (Key Term) where
|
|
toMessage = termToText . unTermKey
|