211 lines
6.0 KiB
Plaintext
211 lines
6.0 KiB
Plaintext
User json
|
|
plugin Text
|
|
ident Text
|
|
matrikelnummer Text Maybe
|
|
email Text
|
|
displayName Text
|
|
maxFavourites Int default=12
|
|
theme Theme default='default'
|
|
UniqueAuthentication plugin ident
|
|
UniqueEmail email
|
|
deriving Show
|
|
UserAdmin
|
|
user UserId
|
|
school SchoolId
|
|
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 Text
|
|
shorthand Text
|
|
UniqueSchool name
|
|
deriving Eq
|
|
DegreeCourse json
|
|
course CourseId
|
|
degree StudyDegreeId
|
|
terms StudyTermsId
|
|
UniqueDegreeCourse course degree terms
|
|
Course
|
|
name Text
|
|
description Html Maybe
|
|
linkExternal Text Maybe
|
|
shorthand 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 default=true
|
|
CourseTermShort term shorthand
|
|
CourseEdit
|
|
user UserId
|
|
time UTCTime
|
|
course CourseId
|
|
CourseFavourite
|
|
user UserId
|
|
time UTCTime
|
|
course CourseId
|
|
UniqueCourseFavourite user course
|
|
Lecturer
|
|
user UserId
|
|
course CourseId
|
|
UniqueLecturer user course
|
|
CourseParticipant
|
|
course CourseId
|
|
user UserId
|
|
registration UTCTime
|
|
UniqueParticipant user course
|
|
Sheet
|
|
course CourseId
|
|
name Text
|
|
description Html Maybe
|
|
type SheetType
|
|
grouping SheetGroup
|
|
markingText Html Maybe
|
|
visibleFrom UTCTime Maybe
|
|
activeFrom UTCTime
|
|
activeTo UTCTime
|
|
hintFrom UTCTime Maybe
|
|
solutionFrom UTCTime Maybe
|
|
CourseSheet course name
|
|
SheetEdit
|
|
user UserId
|
|
time UTCTime
|
|
sheet SheetId
|
|
SheetCorrector
|
|
user UserId
|
|
sheet SheetId
|
|
load Load
|
|
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
|
|
Submission
|
|
sheet SheetId
|
|
ratingPoints Points Maybe
|
|
ratingComment Text Maybe
|
|
ratingBy UserId Maybe
|
|
ratingTime UTCTime Maybe
|
|
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
|
|
user UserId
|
|
submission SubmissionId
|
|
UniqueSubmissionUser user submission
|
|
SubmissionGroup
|
|
course CourseId
|
|
name Text Maybe
|
|
SubmissionGroupEdit
|
|
user UserId
|
|
time UTCTime
|
|
submissionGroup SubmissionGroupId
|
|
SubmissionGroupUser
|
|
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)
|