Qualification school SchoolId name (CI Text) shorthand (CI Text) description StoredMarkup Maybe -- user-defined large Html, ought to contain full description validDuration CalendarDiffDays Maybe -- qualification is valid for this time refreshWithin CalendarDiffDays Maybe -- refresher is scheduled within this duration before expiry refreshInvitation StoredMarkup Maybe -- email/letter to send expiryNotification StoredMarkup Maybe UniqueSchoolName name shorthand -- must be unique per school and name UniqueSchoolShort school shorthand -- must be unique per school and shorthand -- to be expanded later deriving Generic QualificationEdit user User time UTCTime qualification QualificationId OnDeleteCascade OnUpdateCascade deriving Generic -- LMS Interface Tables, need regular processing by background jobs LmsUser qualification QualificationId user UserId ident LmsIdent pin Text resetPin Bool delete Bool started UTCTime UniqueLmsUser qualification ident deriving Generic LmsUserlist qualification QualificationId ident LmsIdent failed Bool UniqueLmsUserlist qualification ident deriving Generic -- QualificationId is redundant here; but known due to external upload LmsResult qualification QualificationId ident LmsIdent success UTCTime UniqueLmsResult qualification ident deriving Generic