-- Description of all primary schools managed by uni2work
-- Each school must have a unique human-readable shorthand which is used as database row key
School json
    name          (CI Text)
    shorthand     (CI Text)  -- SchoolKey :: SchoolShorthand -> SchoolId
    examMinimumRegisterBeforeStart NominalDiffTime Maybe
    examMinimumRegisterDuration    NominalDiffTime Maybe
    examRequireModeForRegistration Bool default=false
    examDiscouragedModes ExamModeDNF
    UniqueSchool name
    UniqueSchoolShorthand shorthand -- required for Normalisation of CI Text
    Primary shorthand        -- newtype Key School = SchoolKey { unSchoolKey :: SchoolShorthand }
    deriving Ord Eq Show Generic
SchoolLdap
    school  SchoolId Maybe
    orgUnit (CI Text)
    UniqueOrgUnit orgUnit
SchoolTerms
    school  SchoolId
    terms   StudyTermsId
    UniqueSchoolTerms school terms