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
    deriving Generic
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
CourseUserNote
    course       CourseId
    user         UserId
    note         Text
    UniqueCourseUserNotes user course
CourseUserNoteEdit
    user         UserId
    time         UTCTime
    note         CourseUserNoteId
