86 lines
3.4 KiB
Haskell
86 lines
3.4 KiB
Haskell
{-# LANGUAGE UndecidableInstances #-}
|
|
{-# OPTIONS_GHC -fno-warn-orphans #-}
|
|
|
|
module Foundation.Routes
|
|
( module Foundation.Routes.Definitions
|
|
, module Foundation.Routes
|
|
) where
|
|
|
|
import Import.NoFoundation
|
|
import Foundation.Type
|
|
|
|
import Foundation.Routes.Definitions
|
|
|
|
-- This is where we define all of the routes in our application. For a full
|
|
-- explanation of the syntax, please see:
|
|
-- http://www.yesodweb.com/book/routing-and-handlers
|
|
--
|
|
-- Note that this is really half the story; in Application.hs, mkYesodDispatch
|
|
-- generates the rest of the code. Please see the following documentation
|
|
-- for an explanation for this split:
|
|
-- http://www.yesodweb.com/book/scaffolding-and-the-site-template#scaffolding-and-the-site-template_foundation_and_application_modules
|
|
--
|
|
-- This function also generates the following type synonyms:
|
|
-- type Handler x = HandlerFor UniWorX x
|
|
-- type Widget = WidgetFor UniWorX ()
|
|
mkYesodData "UniWorX" uniworxRoutes
|
|
|
|
deriving instance Generic CourseR
|
|
deriving instance Generic SheetR
|
|
deriving instance Generic SubmissionR
|
|
deriving instance Generic MaterialR
|
|
deriving instance Generic TutorialR
|
|
deriving instance Generic ExamR
|
|
deriving instance Generic EExamR
|
|
deriving instance Generic CourseApplicationR
|
|
deriving instance Generic AllocationR
|
|
deriving instance Generic SchoolR
|
|
deriving instance Generic ExamOfficeR
|
|
deriving instance Generic CourseNewsR
|
|
deriving instance Generic CourseEventR
|
|
deriving instance Generic (Route UniWorX)
|
|
|
|
data RouteChildren
|
|
type instance Children RouteChildren a = ChildrenRouteChildren a
|
|
type family ChildrenRouteChildren a where
|
|
ChildrenRouteChildren (Route EmbeddedStatic) = '[]
|
|
ChildrenRouteChildren (Route Auth) = '[]
|
|
ChildrenRouteChildren UUID = '[]
|
|
ChildrenRouteChildren (Key a) = '[]
|
|
ChildrenRouteChildren (CI a) = '[]
|
|
|
|
ChildrenRouteChildren a = Children ChGeneric a
|
|
|
|
-- Pattern Synonyms for convenience
|
|
pattern CSheetR :: TermId -> SchoolId -> CourseShorthand -> SheetName -> SheetR -> Route UniWorX
|
|
pattern CSheetR tid ssh csh shn ptn
|
|
= CourseR tid ssh csh (SheetR shn ptn)
|
|
|
|
pattern CMaterialR :: TermId -> SchoolId -> CourseShorthand -> MaterialName -> MaterialR -> Route UniWorX
|
|
pattern CMaterialR tid ssh csh mnm ptn
|
|
= CourseR tid ssh csh (MaterialR mnm ptn)
|
|
|
|
pattern CTutorialR :: TermId -> SchoolId -> CourseShorthand -> TutorialName -> TutorialR -> Route UniWorX
|
|
pattern CTutorialR tid ssh csh tnm ptn
|
|
= CourseR tid ssh csh (TutorialR tnm ptn)
|
|
|
|
pattern CExamR :: TermId -> SchoolId -> CourseShorthand -> ExamName -> ExamR -> Route UniWorX
|
|
pattern CExamR tid ssh csh tnm ptn
|
|
= CourseR tid ssh csh (ExamR tnm ptn)
|
|
|
|
pattern CSubmissionR :: TermId -> SchoolId -> CourseShorthand -> SheetName -> CryptoFileNameSubmission -> SubmissionR -> Route UniWorX
|
|
pattern CSubmissionR tid ssh csh shn cid ptn
|
|
= CSheetR tid ssh csh shn (SubmissionR cid ptn)
|
|
|
|
pattern CApplicationR :: TermId -> SchoolId -> CourseShorthand -> CryptoFileNameCourseApplication -> CourseApplicationR -> Route UniWorX
|
|
pattern CApplicationR tid ssh csh appId ptn
|
|
= CourseR tid ssh csh (CourseApplicationR appId ptn)
|
|
|
|
pattern CNewsR :: TermId -> SchoolId -> CourseShorthand -> CryptoUUIDCourseNews -> CourseNewsR -> Route UniWorX
|
|
pattern CNewsR tid ssh csh nId ptn
|
|
= CourseR tid ssh csh (CourseNewsR nId ptn)
|
|
|
|
pattern CEventR :: TermId -> SchoolId -> CourseShorthand -> CryptoUUIDCourseEvent -> CourseEventR -> Route UniWorX
|
|
pattern CEventR tid ssh csh nId ptn
|
|
= CourseR tid ssh csh (CourseEventR nId ptn)
|