From 26c5a32f587ceee5c09c1ad2f6bc60e9c0a5a1e6 Mon Sep 17 00:00:00 2001 From: Sarah Vaupel Date: Thu, 2 Apr 2020 17:58:12 +0200 Subject: [PATCH] chore(workflows): cleanup types --- models/workflows.model | 4 ++-- src/Model/Types/Workflow.hs | 48 ++++++++++++++++++------------------- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/models/workflows.model b/models/workflows.model index ec061c039..6396cb385 100644 --- a/models/workflows.model +++ b/models/workflows.model @@ -1,6 +1,6 @@ WorkflowDefinition - graph (WorkflowGraph UserId AuthDNF FileId) - scope WorkflowInstanceScope' + graph (WorkflowGraph UserId AuthDNF FileId) + scope WorkflowInstanceScope' WorkflowInstance definition WorkflowDefinition diff --git a/src/Model/Types/Workflow.hs b/src/Model/Types/Workflow.hs index ec783bd8d..49fe82f81 100644 --- a/src/Model/Types/Workflow.hs +++ b/src/Model/Types/Workflow.hs @@ -4,15 +4,15 @@ import Import.NoModel data WorkflowRole userid authdnf = WorkflowRoleUser userid - | WorkflowRoleAuthorized authdnf - | WorkflowRoleInitiator userid + | WorkflowRoleAuthorized authdnf + | WorkflowRoleInitiator userid data WorkflowGraphNodeStatus = WGNS - { wgnsIdent :: CI Text - , wgnsFinished :: Bool - , wgnsLabel :: Maybe Text - } + { wgnsIdent :: CI Text + , wgnsFinished :: Bool + , wgnsLabel :: Maybe Text + } deriving (Eq, Ord, Show, Read, Data, Generic, Typeable) deriveJSON defaultOptions ''WorkflowGraphNodeStatus @@ -23,12 +23,14 @@ data WorkflowGraphNode userid authdnf fileid = WGN } -data WorkflowEdgePayload = WEPText Text - | WEPBool Bool - deriving (Eq, Ord, Show, Read, Data, Generic, Typeable) +data WorkflowEdgePayload userid fileid (payload :: *) where + WEPText :: Text -> WorkflowEdgePayload userid fileid Text + WEPNumber :: HasResolution prec => (Fixed prec) -> WorkflowEdgePayload userid fileid (Fixed prec) + WEPBool :: Bool -> WorkflowEdgePayload userid fileid Bool + WEPFile :: fileid -> WorkflowEdgePayload userid fileid fileid + WEPUser :: userid -> WorkflowEdgePayload userid fileid userid - -data WorkflowEdgePayload' = WEPText' | WEPBool' +data WorkflowEdgePayload' = WEPText' | WEPNumber' | WEPBool' | WEPFile' | WEPUser' deriving (Eq, Ord, Enum, Show, Read, Data, Generic, Typeable) @@ -60,29 +62,25 @@ data WorkflowEdgePayloadField fileid userid (payload :: *) where data WorkflowEdgePayloadSpecification fileid userid = forall payload. (FromJSON payload, ToJSON payload) => WorkflowEdgePayloadSpecification (WorkflowEdgePayloadField fileid userid payload) -data WorkflowPayload fileid = Map WorkflowEdgePayloadLabel (WorkflowEdgePayload) +data WorkflowPayload userid fileid = forall payload. Map WorkflowEdgePayloadLabel (WorkflowEdgePayload userid fileid payload) data WorkflowGraphEdge userid authdnf fileid = WGE - { wgeActors :: Set (WorkflowRole userid authdnf) - , wgeTarget :: WorkflowGraphNode userid authdnf fileid - , wgeForm :: Map WorkflowEdgePayloadLabel (NonNull (Set (WorkflowEdgePayloadSpecification fileid userid))) - } + { wgeActors :: Set (WorkflowRole userid authdnf) + , wgeTarget :: WorkflowGraphNode userid authdnf fileid + , wgeForm :: Map WorkflowEdgePayloadLabel (NonNull (Set (WorkflowEdgePayloadSpecification fileid userid))) + } data WorkflowGraph userid authdnf fileid = WG - { wgNodes :: Set (WorkflowGraphNode userid authdnf fileid) - , wgEdges :: Set (WorkflowGraphEdge userid authdnf fileid) - } + { wgNodes :: Set (WorkflowGraphNode userid authdnf fileid) + , wgEdges :: Set (WorkflowGraphEdge userid authdnf fileid) + } -data WorkflowInstanceScope term school course = WISGlobal - | WISTerm term - | WISSchool school - | WISCourse course +data WorkflowInstanceScope term school course = WISGlobal | WISTerm term | WISSchool school | WISCourse course deriving (Eq, Ord, Show, Read, Data, Generic, Typeable) - -data WorkflowInstanceScope' = WISTerm' | WISSchool' | WISCourse' +data WorkflowInstanceScope' = WISGlobal' | WISTerm' | WISSchool' | WISCourse' deriving (Eq, Ord, Enum, Read, Show, Data, Generic, Typeable)