exigo-schema-0.1.0.0: src/Exigo/Persistent/Schema.hs
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE StandaloneDeriving #-}
{- |
Basic database schema for exigo tools.
The assumption is that the schema will actually be composed
of this, base, schema, plus subsidiary ones for
individual assessments.
-}
module Exigo.Persistent.Schema
(
-- | Represents a student
Student
-- | A student ID
, StudentId
-- | Submission made by a 'Student'.
, Submission
-- | 'Submission' ID
, SubmissionId
-- | A late penalty applied
, LatePenalty
-- | 'LatePenalty' ID
, LatePenaltyId
-- | Saved entities from this schema
, savedMainModel
)
where
import Data.Aeson
import Data.Binary
import Data.Text (Text)
import Database.Persist.TH (
mkPersist
, mkSave
, persistFileWith
, share
, sqlSettings
)
import Database.Persist.Quasi
import Database.Persist.Class
import GHC.Generics
share [
mkSave "savedMainModel"
, mkPersist sqlSettings
]
$(persistFileWith lowerCaseSettings "config/exigo.persistentmodels")
instance Binary Student where
deriving instance Generic (Key Student)
instance Binary (Key Student) where
instance Binary Submission where
instance Binary LatePenalty where
instance FromJSON Student where
instance FromJSON Submission where
instance FromJSON LatePenalty where
instance ToJSON Student where
instance ToJSON Submission where
instance ToJSON LatePenalty where