User plugin Text ident Text matrikelnummer Text Maybe email Text displayName Text UniqueAuthentication plugin ident UserAdmin user UserId school SchoolId UserLecturer user UserId school SchoolId UniqueSchoolLecturer school user StudyFeatures user UserId degree StudyDegreeId field StudyTermsId type StudyFieldType semester Int UniqueUserSubject user degree field 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 start Day end Day holidays [Day] lectureStart Day lectureEnd Day active Bool Primary name deriving Show School json name Text shorthand Text UniqueSchool name deriving Eq Degree json name Text schoolId SchoolId UniqueDegree name schoolId deriving Eq DegreeCourse json degreeId DegreeId courseId CourseId UniqueDegreeCourse degreeId courseId Course name Text description Html Maybe linkExternal Text Maybe shorthand Text termId TermId schoolId SchoolId capacity Int Maybe created UTCTime changed UTCTime createdBy UserId changedBy UserId hasRegistration Bool -- canRegisterNow = hasRegistration && maybe False (<= currentTime) registerFrom && maybe True (>= currentTime) registerTo registerFrom UTCTime Maybe registerTo UTCTime Maybe CourseTermShort termId shorthand Lecturer userId UserId courseId CourseId UniqueLecturer userId courseId Corrector userId UserId courseId CourseId load Load -- SELECT submissionID FROM Tutorial, TutorialUser, Submission, Sheet -- WHERE ( tutorialTutor = correctorUserId -- && tutorialCourse = correctorCourseId -- && tutorialUserTutorial = tutorialId -- && submissionUser = tutorialUserUser -- && sheetId = submissionSheetId -- && sheetCourse = correctorCourseId -- ) UniqueCorrector userId courseId CourseParticipant courseId CourseId userId UserId registration UTCTime UniqueCourseParticipant courseId userId Sheet courseId CourseId name Text type SheetType markingText Text Maybe activeFrom UTCTime activeTo UTCTime hintFrom UTCTime Maybe solutionFrom UTCTime Maybe created UTCTime changed UTCTime createdBy UserId changedBy UserId SheetFile sheetId SheetId fileId FileId type SheetFileType UniqueSheetFile fileId sheetId type File title FilePath content ByteString Maybe -- Nothing iff this is a directory modified UTCTime deriving Show Eq Submission sheetId SheetId ratingPoints Points Maybe ratingComment Text Maybe ratingBy UserId Maybe ratingTime UTCTime Maybe created UTCTime changed UTCTime createdBy UserId changedBy UserId deriving Show SubmissionFile submissionId SubmissionId fileId FileId isUpdate Bool isDeletion Bool UniqueSubmissionFile fileId submissionId isUpdate deriving Show SubmissionUser userId UserId submissionId SubmissionId UniqueSubmissionUser userId submissionId SubmissionGroup courseId CourseId name Text created UTCTime changed UTCTime createdBy UserId changedBy UserId SubmissionGroupUser submissionGroupId SubmissionGroupId userId UserId UniqueSubmissionGroupUser submissionGroupId userId Tutorial json name Text tutor UserId course CourseId -- ? TutorialUser userId UserId tutorialId TutorialId UniqueTutorialUser userId tutorialId Booking termId TermId begin UTCTime end UTCTime weekly Bool exceptions [Day] -- only if weekly, begin in exception created UTCTime changed UTCTime createdBy UserId changedBy UserId bookedFor RoomForId room RoomId Room name Text capacity Int Maybe building Text Maybe -- BookingRoom -- subject RoomForId -- roomId RoomId -- bookingId BookingId -- UniqueRoomCourse subject roomId bookingId +RoomFor courseId CourseId tutorialId TutorialId examId ExamId -- data RoomFor = RoomForCourseIdSum CourseId | RoomForTutorialIdSum TutorialId ... Exam courseId CourseId name Text description Text begin UTCTime end UTCTime registrationBegin UTCTime registrationEnd UTCTime deregistrationEnd UTCTime ratingVisible Bool statisticsVisible Bool created UTCTime changed UTCTime createdBy UserId changedBy UserId ExamUser userId UserId examId ExamId -- CONTINUE HERE: Inlcude rating in this table or seperatly? UniqueExamUser userId examId -- By default this file is used in Model.hs (which is imported by Foundation.hs)