262 lines
8.2 KiB
Plaintext
262 lines
8.2 KiB
Plaintext
User json
|
|
ident (CI Text)
|
|
authentication AuthenticationMode
|
|
matrikelnummer Text Maybe
|
|
email (CI Text)
|
|
displayName Text
|
|
surname Text -- always use: nameWidget displayName surname
|
|
maxFavourites Int default=12
|
|
theme Theme default='Default'
|
|
dateTimeFormat DateTimeFormat "default='%a %d %b %Y %R'"
|
|
dateFormat DateTimeFormat "default='%d.%m.%Y'"
|
|
timeFormat DateTimeFormat "default='%R'"
|
|
downloadFiles Bool default=false
|
|
mailLanguages MailLanguages default='[]'
|
|
notificationSettings NotificationSettings
|
|
UniqueAuthentication ident
|
|
UniqueEmail email
|
|
deriving Show Eq
|
|
UserAdmin
|
|
user UserId
|
|
school SchoolId
|
|
UniqueUserAdmin user school
|
|
UserLecturer
|
|
user UserId
|
|
school SchoolId
|
|
UniqueSchoolLecturer user school
|
|
StudyFeatures
|
|
user UserId
|
|
degree StudyDegreeId
|
|
field StudyTermsId
|
|
type StudyFieldType
|
|
semester Int
|
|
-- UniqueUserSubject user degree field -- There exists a counterexample
|
|
StudyDegree
|
|
key Int
|
|
shorthand Text Maybe
|
|
name Text Maybe
|
|
Primary key
|
|
StudyTerms
|
|
key Int
|
|
shorthand Text Maybe
|
|
name Text Maybe
|
|
Primary key
|
|
Term json
|
|
name TermIdentifier -- unTermKey :: TermId -> TermIdentifier
|
|
start Day -- TermKey :: TermIdentifier -> TermId
|
|
end Day
|
|
holidays [Day]
|
|
lectureStart Day
|
|
lectureEnd Day
|
|
active Bool
|
|
Primary name -- newtype Key Term = TermKey { unTermKey :: TermIdentifier }
|
|
deriving Show -- type TermId = Key Term
|
|
School json
|
|
name (CI Text)
|
|
shorthand (CI Text)
|
|
UniqueSchool name
|
|
UniqueSchoolShorthand shorthand -- required for Normalisation of CI Text
|
|
Primary shorthand -- newtype Key School = SchoolKey { unSchoolKey :: SchoolShorthand }
|
|
deriving Eq
|
|
DegreeCourse json
|
|
course CourseId
|
|
degree StudyDegreeId
|
|
terms StudyTermsId
|
|
UniqueDegreeCourse course degree terms
|
|
Course
|
|
name (CI Text)
|
|
description Html Maybe
|
|
linkExternal Text Maybe
|
|
shorthand (CI Text)
|
|
term TermId
|
|
school SchoolId
|
|
capacity Int64 Maybe
|
|
-- canRegisterNow = maybe False (<= currentTime) registerFrom && maybe True (>= currentTime) registerTo
|
|
registerFrom UTCTime Maybe
|
|
registerTo UTCTime Maybe
|
|
deregisterUntil UTCTime Maybe
|
|
registerSecret Text Maybe -- Falls ein Passwort erforderlich ist
|
|
materialFree Bool
|
|
TermSchoolCourseShort term school shorthand
|
|
TermSchoolCourseName term school name
|
|
CourseEdit
|
|
user UserId
|
|
time UTCTime
|
|
course CourseId
|
|
CourseFavourite
|
|
user UserId
|
|
time UTCTime
|
|
course CourseId
|
|
UniqueCourseFavourite user course
|
|
deriving Show
|
|
Lecturer
|
|
user UserId
|
|
course CourseId
|
|
UniqueLecturer user course
|
|
CourseParticipant
|
|
course CourseId
|
|
user UserId
|
|
registration UTCTime
|
|
UniqueParticipant user course
|
|
Sheet
|
|
course CourseId
|
|
name (CI Text)
|
|
description Html Maybe
|
|
type SheetType
|
|
grouping SheetGroup
|
|
markingText Html Maybe
|
|
visibleFrom UTCTime Maybe
|
|
activeFrom UTCTime
|
|
activeTo UTCTime
|
|
hintFrom UTCTime Maybe
|
|
solutionFrom UTCTime Maybe
|
|
uploadMode UploadMode
|
|
submissionMode SheetSubmissionMode default='UserSubmissions'
|
|
CourseSheet course name
|
|
SheetEdit
|
|
user UserId
|
|
time UTCTime
|
|
sheet SheetId
|
|
SheetPseudonym
|
|
sheet SheetId
|
|
pseudonym Pseudonym
|
|
user UserId
|
|
UniqueSheetPseudonym sheet pseudonym
|
|
UniqueSheetPseudonymUser sheet user
|
|
SheetCorrector
|
|
user UserId
|
|
sheet SheetId
|
|
load Load
|
|
state CorrectorState default='CorrectorNormal'
|
|
UniqueSheetCorrector user sheet
|
|
deriving Show Eq Ord
|
|
SheetFile
|
|
sheet SheetId
|
|
file FileId
|
|
type SheetFileType
|
|
UniqueSheetFile file sheet type
|
|
File
|
|
title FilePath
|
|
content ByteString Maybe -- Nothing iff this is a directory
|
|
modified UTCTime
|
|
deriving Show Eq Generic
|
|
Submission
|
|
sheet SheetId
|
|
ratingPoints Points Maybe -- "Just" does not mean done
|
|
ratingComment Text Maybe -- "Just" does not mean done
|
|
ratingBy UserId Maybe -- assigned corrector
|
|
ratingAssigned UTCTime Maybe -- time assigned corrector
|
|
ratingTime UTCTime Maybe -- "Just" here indicates done!
|
|
deriving Show
|
|
SubmissionEdit
|
|
user UserId
|
|
time UTCTime
|
|
submission SubmissionId
|
|
SubmissionFile
|
|
submission SubmissionId
|
|
file FileId
|
|
isUpdate Bool -- is this the file updated by a corrector (original will always be retained)
|
|
isDeletion Bool -- only set if isUpdate is also set, but file was deleted by corrector
|
|
UniqueSubmissionFile file submission isUpdate
|
|
deriving Show
|
|
SubmissionUser -- Actual submission participant
|
|
user UserId
|
|
submission SubmissionId
|
|
UniqueSubmissionUser user submission
|
|
SubmissionGroup
|
|
course CourseId
|
|
name Text Maybe
|
|
SubmissionGroupEdit
|
|
user UserId
|
|
time UTCTime
|
|
submissionGroup SubmissionGroupId
|
|
SubmissionGroupUser -- Registered submission groups, independent of actual SubmissionUser
|
|
submissionGroup SubmissionGroupId
|
|
user UserId
|
|
UniqueSubmissionGroupUser submissionGroup user
|
|
Tutorial json
|
|
name Text
|
|
tutor UserId
|
|
course CourseId
|
|
TutorialUser
|
|
user UserId
|
|
tutorial TutorialId
|
|
UniqueTutorialUser user tutorial
|
|
Booking
|
|
term TermId
|
|
begin UTCTime
|
|
end UTCTime
|
|
weekly Bool
|
|
exceptions [Day] -- only if weekly, begin in exception
|
|
bookedFor RoomForId
|
|
room RoomId
|
|
BookingEdit
|
|
user UserId
|
|
time UTCTime
|
|
boooking BookingId
|
|
Room
|
|
name Text
|
|
capacity Int Maybe
|
|
building Text Maybe
|
|
-- BookingRoom
|
|
-- subject RoomForId
|
|
-- room RoomId
|
|
-- booking BookingId
|
|
-- UniqueRoomCourse subject room booking
|
|
+RoomFor
|
|
course CourseId
|
|
tutorial TutorialId
|
|
exam ExamId
|
|
-- data RoomFor = RoomForCourseSum CourseId | RoomForTutorialSum TutorialId ...
|
|
-- EXAMS ARE TODO:
|
|
Exam
|
|
course CourseId
|
|
name Text
|
|
description Text
|
|
begin UTCTime
|
|
end UTCTime
|
|
registrationBegin UTCTime
|
|
registrationEnd UTCTime
|
|
deregistrationEnd UTCTime
|
|
ratingVisible Bool
|
|
statisticsVisible Bool
|
|
--ExamEdit
|
|
-- user UserId
|
|
-- time UTCTime
|
|
-- exam ExamId
|
|
--ExamUser
|
|
-- user UserId
|
|
-- examId ExamId
|
|
-- -- CONTINUE HERE: Include rating in this table or separately?
|
|
-- UniqueExamUser user examId
|
|
-- By default this file is used in Model.hs (which is imported by Foundation.hs)
|
|
QueuedJob
|
|
content Value
|
|
creationInstance InstanceId
|
|
creationTime UTCTime
|
|
lockInstance InstanceId Maybe
|
|
lockTime UTCTime Maybe
|
|
deriving Eq Read Show Generic Typeable
|
|
CronLastExec
|
|
job Value
|
|
time UTCTime
|
|
instance InstanceId
|
|
UniqueCronLastExec job
|
|
SystemMessage
|
|
from UTCTime Maybe
|
|
to UTCTime Maybe
|
|
authenticatedOnly Bool
|
|
severity MessageClass
|
|
defaultLanguage Lang
|
|
content Html
|
|
summary Html Maybe
|
|
SystemMessageTranslation
|
|
message SystemMessageId
|
|
language Lang
|
|
content Html
|
|
summary Html Maybe
|
|
UniqueSystemMessageTranslation message language
|
|
ClusterConfig
|
|
setting ClusterSettingsKey
|
|
value Value
|
|
Primary setting |