diff --git a/config/models b/config/models index c32c807b6..cd6ed16fa 100644 --- a/config/models +++ b/config/models @@ -20,12 +20,22 @@ Term json name Text start UTCTime end UTCTime + holidays [UTCTime] UniqueTerm name deriving Eq School json name 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 json name Text owner UserId @@ -37,13 +47,13 @@ Course json registerFrom UTCTime registerTo UTCTime Lecturer - userId UserId - courseId CourseId + userId UserId + courseId CourseId UniqueLecturer userId courseId CourseParticipant - userId UserId - courseId CourseId - registration UTCTime + userId UserId + courseId CourseId + registration UTCTime UniqueCourseParticipant userId courseId Sheet courseId CourseId @@ -54,7 +64,7 @@ Sheet exerciseId FileId Maybe hintId FileId Maybe solutionId FileId Maybe - markingId FIleID Maybe + markingId FileId Maybe markingText Text activeFrom UTCTime activeTo UTCTime @@ -65,8 +75,8 @@ Sheet createdBy UserId changedBy UserId File - name Text - content ByteStream + title Text + content ByteString Submission sheetId SheetId fileId FileId @@ -91,46 +101,55 @@ SubmissionGroup createdBy UserId changedBy UserId SubmissionGroupUser - solutionGroupId SolutionGroupId - userId UserId - UniqueSubmissionGroupUser solutionGroupId userId --- + submissionGroupId SubmissionGroupId + userId UserId + UniqueSubmissionGroupUser submissionGroupId userId Tutorial json name Text tutor UserId -TutorialParticipant +TutorialUser userId UserId tutorialId TutorialId - UniqueTutorialParticipant userId tutorialId --- Unclear how to model this correctly + UniqueTutorialUser userId tutorialId +Booking + termId TermId + begin UTCTime + end UTCTime + weekly Bool + exceptions [UTCTime] + created UTCTime + changed UTCTime + createdBy UserId + changedBy UserId Room name Text capacity Int Maybe building Text RoomCourse - roomId RoomId courseId CourseId --- not unique, as a course might happen several times -RoomTutorial + tutorialId TutorialId Maybe + examId ExamId Maybe roomId RoomId - tutorialId TutorialId -RoomExam - roomId RoomId - examId ExamId -RoomBookingRecurring - roomId RoomId - termId termId - start TimeOfDay - end TimeOfDay - day Weekday - created UTCTime - changed UTCTime -RoomBooking - roomId RoomId - begin UTCTime - end UTCTime - created UTCTime - changed UTCTime - - + bookingId BookingId + UniqueRoomCourse courseId roomId bookingId +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) diff --git a/src/Import.hs b/src/Import.hs index a10200156..25ed1f7be 100644 --- a/src/Import.hs +++ b/src/Import.hs @@ -4,3 +4,4 @@ module Import import Foundation as Import import Import.NoFoundation as Import +import ModelData as Import diff --git a/src/Model.hs b/src/Model.hs index 976c88117..c84945443 100644 --- a/src/Model.hs +++ b/src/Model.hs @@ -11,6 +11,9 @@ module Model where import ClassyPrelude.Yesod import Database.Persist.Quasi +-- import Data.Time +-- import Data.ByteString +import ModelData -- You can define all of your database entities in the entities file. -- You can find more information on persistent and how to declare entities @@ -20,7 +23,7 @@ share [mkPersist sqlSettings, mkMigrate "migrateAll"] $(persistFileWith lowerCaseSettings "config/models") instance Show Term where - show = termName + show = ClassyPrelude.Yesod.unpack . termName + - diff --git a/src/ModelData.hs b/src/ModelData.hs index d5f8a8881..620feff5c 100644 --- a/src/ModelData.hs +++ b/src/ModelData.hs @@ -9,13 +9,11 @@ data SheetType = Regular | Bonus | Extra deriving (Show, Read, Eq, Ord, Enum, Bounded) derivePersistField "SheetType" -{- Not needed -data Weekday = Mon | Tue | Wed | Thu | Fri | Sat | Sun - deriving (Show, Read, Eq, Ord, Enum, Bounded) -derivePersistField "Weekday" --} +data ExamStatus = Attended | NoShow | Voided + deriving (Show, Read, Eq, Ord, Enum, Bounded) +derivePersistField "ExamStatus" -{- +{- Modelled in DB data Season = WS | SO deriving (Show, Read, Eq, Enum) derivePersistField "Season" @@ -24,9 +22,10 @@ data Term = Term { season:: Season, year :: Int } instance Show Term where show (Term {season, year}) = take 1 (show season) ++ (show year) --} --- instance PersistField Term where --- toPersistValue (Term {season, year}) = undefined --- fromPersistValue (Term {season, year}) = undefined --- sqlType _ = SqlInteger --- isNullable _ = False \ No newline at end of file + +instance PersistField Term where + toPersistValue (Term {season, year}) = undefined + fromPersistValue (Term {season, year}) = undefined + sqlType _ = SqlInteger + isNullable _ = False +-} \ No newline at end of file