refactor(workflow-types): refactor workflow payload
This commit is contained in:
parent
89a621ef07
commit
3787cc2012
@ -175,35 +175,27 @@ data WorkflowInstanceScope' = WISGlobal' | WISTerm' | WISSchool' | WISCourse'
|
||||
|
||||
type WorkflowPayloadLabel = CI Text
|
||||
|
||||
data WorkflowPayload fileid userid = forall payload. WorkflowPayload
|
||||
{ wpPayload :: Map WorkflowPayloadLabel (Map WorkflowPayloadFieldLabel (WorkflowFieldPayload fileid userid payload))
|
||||
type WorkflowPayload fileid userid = Map WorkflowPayloadLabel (Seq (WorkflowPayload' fileid userid))
|
||||
|
||||
data WorkflowPayload' fileid userid = forall payload. WorkflowPayload'
|
||||
{ wpPayload :: Map WorkflowPayloadFieldLabel (WorkflowFieldPayload fileid userid payload)
|
||||
, wpActor :: Maybe userid
|
||||
, wpActionTime :: UTCTime
|
||||
}
|
||||
|
||||
data WorkflowFieldPayload fileid userid (payload :: *) where
|
||||
WFPText :: { wfptLabel :: WorkflowPayloadFieldLabel
|
||||
, wfptText :: Text
|
||||
} -> WorkflowFieldPayload fileid userid Text
|
||||
WFPNumber :: { wfpnLabel :: WorkflowPayloadFieldLabel
|
||||
, wfpnNumber :: Scientific
|
||||
} -> WorkflowFieldPayload fileid userid Scientific
|
||||
WFPBool :: { wfpbLabel :: WorkflowPayloadFieldLabel
|
||||
, wfpbBool :: Bool
|
||||
} -> WorkflowFieldPayload fileid userid Bool
|
||||
WFPFile :: { wfpfLabel :: WorkflowPayloadFieldLabel
|
||||
, wfpfFile :: fileid
|
||||
} -> WorkflowFieldPayload fileid userid fileid
|
||||
WFPUser :: { wfpuLabel :: WorkflowPayloadFieldLabel
|
||||
, wfpuUser :: userid
|
||||
} -> WorkflowFieldPayload fileid userid userid
|
||||
WFPText :: Text -> WorkflowFieldPayload fileid userid Text
|
||||
WFPNumber :: Scientific -> WorkflowFieldPayload fileid userid Scientific
|
||||
WFPBool :: Bool -> WorkflowFieldPayload fileid userid Bool
|
||||
WFPFile :: fileid -> WorkflowFieldPayload fileid userid fileid
|
||||
WFPUser :: userid -> WorkflowFieldPayload fileid userid userid
|
||||
|
||||
instance (Show fileid, Show userid) => Show (WorkflowFieldPayload fileid userid payload) where
|
||||
show WFPText{..} = "WFPText{label = " <> show wfptLabel <> ", text = " <> show wfptText <> "}"
|
||||
show WFPNumber{..} = "WFPNumber{label = " <> show wfpnLabel <> ", number = " <> show wfpnNumber <> "}"
|
||||
show WFPBool{..} = "WFPBool{label = " <> show wfpbLabel <> ", bool = " <> show wfpbBool <> "}"
|
||||
show WFPFile{..} = "WFPFile{label = " <> show wfpfLabel <> ", file = " <> show wfpfFile <> "}"
|
||||
show WFPUser{..} = "WFPUser{label = " <> show wfpuLabel <> ", user = " <> show wfpuUser <> "}"
|
||||
show (WFPText wfptText ) = "WFPText{text = " <> show wfptText <> "}"
|
||||
show (WFPNumber wfpnNumber) = "WFPNumber{number = " <> show wfpnNumber <> "}"
|
||||
show (WFPBool wfpbBool ) = "WFPBool{bool = " <> show wfpbBool <> "}"
|
||||
show (WFPFile wfpfFile ) = "WFPFile{file = " <> show wfpfFile <> "}"
|
||||
show (WFPUser wfpuUser ) = "WFPUser{user = " <> show wfpuUser <> "}"
|
||||
|
||||
data WorkflowFieldPayload' = WFPText' | WFPNumber' | WFPBool' | WFPFile' | WFPUser'
|
||||
deriving (Eq, Ord, Enum, Show, Read, Data, Generic, Typeable)
|
||||
@ -365,5 +357,5 @@ testGraph = WorkflowGraph $ Map.fromList [("node1", WGN (Just "someLabel") True
|
||||
testGraphStr :: Data.ByteString.Lazy.Internal.ByteString
|
||||
testGraphStr = "{\"tag\":\"workflow\",\"nodes\":{\"node1\":{\"status\":{\"ident\":\"status-ident\",\"finished\":true,\"label\":\"status-label\"},\"edges\":[{\"actors\":[{\"tag\":\"initiator\"}],\"form\":{\"some-number\":[{\"tag\":\"number\",\"step\":0.01,\"label\":\"number-label\",\"placeholder\":\"number-placeholder\"}]},\"target\":\"node1\"}]}}}"
|
||||
|
||||
--testPayload :: WorkflowPayload Text Text
|
||||
testPayload = Map.fromList [("sometext" :: WorkflowPayloadLabel, (Seq.singleton (WFPText "text-label" "hello world!"), Just "actor-user-id" :: Maybe Text, UTCTime (ModifiedJulianDay 58946) 57250))]
|
||||
testPayload :: WorkflowPayload Text Text
|
||||
testPayload = Map.fromList [("sometext" :: WorkflowPayloadLabel, (Seq.singleton (WorkflowPayload' (Map.fromList [("text-label", WFPText "hello world!")]) (Just "actor-user-id" :: Maybe Text) (UTCTime (ModifiedJulianDay 58946) 57250))))]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user