module Handler.Utils.Workflow.CanonicalRoute where import Import.NoFoundation import Foundation.Type import Foundation.Routes data WorkflowScopeRoute = WorkflowInstanceListR | WorkflowInstanceNewR | WorkflowInstanceR WorkflowInstanceName WorkflowInstanceR | WorkflowWorkflowListR | WorkflowWorkflowR CryptoFileNameWorkflowWorkflow WorkflowWorkflowR deriving (Eq, Ord, Read, Show, Generic, Typeable) data WorkflowInstanceR = WIEditR | WIDeleteR | WIWorkflowsR | WIInitiateR deriving (Eq, Ord, Read, Show, Generic, Typeable) data WorkflowWorkflowR = WWWorkflowR | WWFilesR WorkflowPayloadLabel CryptoUUIDWorkflowStateIndex | WWEditR | WWDeleteR deriving (Eq, Ord, Read, Show, Generic, Typeable) _WorkflowScopeRoute :: Prism' ( Route UniWorX ) ( WorkflowScope TermId SchoolId (TermId, SchoolId, CourseShorthand) , WorkflowScopeRoute ) _WorkflowScopeRoute = prism' (uncurry toRoute) toWorkflowScopeRoute where toRoute = \case WSGlobal -> \case WorkflowInstanceListR -> GlobalWorkflowInstanceListR WorkflowInstanceNewR -> GlobalWorkflowInstanceNewR WorkflowInstanceR win subRoute -> GlobalWorkflowInstanceR win $ case subRoute of WIEditR -> GWIEditR WIDeleteR -> GWIDeleteR WIWorkflowsR -> GWIWorkflowsR WIInitiateR -> GWIInitiateR WorkflowWorkflowListR -> GlobalWorkflowWorkflowListR WorkflowWorkflowR wwCID subRoute -> GlobalWorkflowWorkflowR wwCID $ case subRoute of WWWorkflowR -> GWWWorkflowR WWFilesR wpl stCID -> GWWFilesR wpl stCID WWEditR -> GWWEditR WWDeleteR -> GWWDeleteR other -> error $ "not implemented _WorkflowScopeRoute for: " <> show other toWorkflowScopeRoute = \case GlobalWorkflowInstanceListR -> Just ( WSGlobal, WorkflowInstanceListR ) GlobalWorkflowInstanceNewR -> Just ( WSGlobal, WorkflowInstanceNewR ) GlobalWorkflowInstanceR win subRoute -> Just . (WSGlobal, ) . WorkflowInstanceR win $ case subRoute of GWIEditR -> WIEditR GWIDeleteR -> WIDeleteR GWIWorkflowsR -> WIWorkflowsR GWIInitiateR -> WIInitiateR GlobalWorkflowWorkflowListR -> Just ( WSGlobal, WorkflowWorkflowListR ) GlobalWorkflowWorkflowR wwCID subRoute -> Just . (WSGlobal, ) . WorkflowWorkflowR wwCID $ case subRoute of GWWWorkflowR -> WWWorkflowR GWWFilesR wpl stCID -> WWFilesR wpl stCID GWWEditR -> WWEditR GWWDeleteR -> WWDeleteR _other -> Nothing