fix(workflow): fix false instance with atrocious instances
This commit is contained in:
parent
ce1acec444
commit
8812f24d90
@ -71,26 +71,46 @@ data WorkflowEdgePayloadField fileid userid (payload :: *) where
|
||||
, wepfuDefault :: Maybe userid
|
||||
} -> WorkflowEdgePayloadField fileid userid userid
|
||||
|
||||
instance forall fileid userid payload. (Eq fileid, Eq userid) => Eq (WorkflowEdgePayloadField fileid userid payload) where
|
||||
(WorkflowEdgePayloadFieldText l1 p1 tt1 d1) == (WorkflowEdgePayloadFieldText l2 p2 tt2 d2) = l1 == l2 && p1 == p2 && tt1 == tt2 && d1 == d2
|
||||
(WorkflowEdgePayloadFieldNumber l1 p1 tt1 d1 prec1) == (WorkflowEdgePayloadFieldNumber l2 p2 tt2 d2 prec2) = l1 == l2 && p1 == p2 && tt1 == tt2 && d1 == d2 && prec1 == prec2
|
||||
(WorkflowEdgePayloadFieldBool l1 tt1 d1) == (WorkflowEdgePayloadFieldBool l2 tt2 d2) = l1 == l2 && tt1 == tt2 && d1 == d2
|
||||
(WorkflowEdgePayloadFieldFile l1 tt1 d1) == (WorkflowEdgePayloadFieldFile l2 tt2 d2) = l1 == l2 && tt1 == tt2 && d1 == d2
|
||||
(WorkflowEdgePayloadFieldUser l1 tt1 d1) == (WorkflowEdgePayloadFieldUser l2 tt2 d2) = l1 == l2 && tt1 == tt2 && d1 == d2
|
||||
_ == _ = False
|
||||
instance (Show fileid, Show userid) => Show (WorkflowEdgePayloadField fileid userid payload) where
|
||||
show (WorkflowEdgePayloadFieldText{..} ) = show wepftLabel
|
||||
show (WorkflowEdgePayloadFieldNumber{..}) = show wepfnLabel
|
||||
show (WorkflowEdgePayloadFieldBool{..} ) = show wepfbLabel
|
||||
show (WorkflowEdgePayloadFieldFile{..} ) = show wepffLabel
|
||||
show (WorkflowEdgePayloadFieldUser{..} ) = show wepfuLabel
|
||||
|
||||
-- TODO remove this instance on removal of the test definition
|
||||
instance forall fileid userid payload. (Ord fileid, Ord userid) => Ord (WorkflowEdgePayloadField fileid userid payload) where
|
||||
compare _ _ = EQ
|
||||
|
||||
|
||||
data WorkflowEdgePayloadSpecification fileid userid = forall payload. WorkflowEdgePayloadSpecification (WorkflowEdgePayloadField fileid userid payload)
|
||||
|
||||
-- TODO remove (see above)
|
||||
instance Eq (WorkflowEdgePayloadSpecification fileid userid) where
|
||||
(WorkflowEdgePayloadSpecification _) == (WorkflowEdgePayloadSpecification _) = True
|
||||
instance Ord (WorkflowEdgePayloadSpecification fileid userid) where
|
||||
compare _ _ = EQ
|
||||
instance (Show fileid, Show userid) => Show (WorkflowEdgePayloadSpecification fileid userid) where
|
||||
show (WorkflowEdgePayloadSpecification payloadField) = show payloadField
|
||||
|
||||
instance (Eq fileid, Eq userid) => Eq (WorkflowEdgePayloadSpecification fileid userid) where
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldText{}) == (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldText{}) = wepftLabel f1 == wepftLabel f2 && wepftPlaceholder f1 == wepftPlaceholder f2 && wepftTooltip f1 == wepftTooltip f2 && wepftDefault f1 == wepftDefault f2
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldNumber{}) == (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldNumber{}) = wepfnLabel f1 == wepfnLabel f2 && wepfnPlaceholder f1 == wepfnPlaceholder f2 && wepfnTooltip f1 == wepfnTooltip f2 && wepfnDefault f1 == wepfnDefault f2 && wepfnPrecision f1 == wepfnPrecision f2
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldBool{}) == (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldBool{}) = wepfbLabel f1 == wepfbLabel f2 && wepfbTooltip f1 == wepfbTooltip f2 && wepfbDefault f1 == wepfbDefault f2
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldFile{}) == (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldFile{}) = wepffLabel f1 == wepffLabel f2 && wepffTooltip f1 == wepffTooltip f2 && wepffDefault f1 == wepffDefault f2
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldUser{}) == (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldUser{}) = wepfuLabel f1 == wepfuLabel f2 && wepfuTooltip f1 == wepfuTooltip f2 && wepfuDefault f1 == wepfuDefault f2
|
||||
_ == _ = False
|
||||
|
||||
instance (Ord fileid, Ord userid) => Ord (WorkflowEdgePayloadSpecification fileid userid) where
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldText{}) <= (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldText{}) = wepftLabel f1 <= wepftLabel f2 && wepftPlaceholder f1 <= wepftPlaceholder f2 && wepftTooltip f1 <= wepftTooltip f2 && wepftDefault f1 <= wepftDefault f2
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldNumber{}) <= (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldNumber{}) = wepfnLabel f1 <= wepfnLabel f2 && wepfnPlaceholder f1 <= wepfnPlaceholder f2 && wepfnTooltip f1 <= wepfnTooltip f2 && wepfnDefault f1 <= wepfnDefault f2 && wepfnPrecision f1 <= wepfnPrecision f2
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldBool{}) <= (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldBool{}) = wepfbLabel f1 <= wepfbLabel f2 && wepfbTooltip f1 <= wepfbTooltip f2 && wepfbDefault f1 <= wepfbDefault f2
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldFile{}) <= (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldFile{}) = wepffLabel f1 <= wepffLabel f2 && wepffTooltip f1 <= wepffTooltip f2 && wepffDefault f1 <= wepffDefault f2
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldUser{}) <= (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldUser{}) = wepfuLabel f1 <= wepfuLabel f2 && wepfuTooltip f1 <= wepfuTooltip f2 && wepfuDefault f1 <= wepfuDefault f2
|
||||
(WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldText{} ) <= _ = False
|
||||
(WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldNumber{}) <= (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldText{}) = True
|
||||
(WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldNumber{}) <= _ = False
|
||||
(WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldBool{}) <= (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldText{}) = True
|
||||
(WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldBool{}) <= (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldNumber{}) = True
|
||||
(WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldBool{}) <= _ = False
|
||||
(WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldFile{}) <= (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldText{}) = True
|
||||
(WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldFile{}) <= (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldNumber{}) = True
|
||||
(WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldFile{}) <= (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldBool{}) = True
|
||||
(WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldFile{}) <= _ = False
|
||||
(WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldUser{}) <= _ = False
|
||||
|
||||
|
||||
data WorkflowPayload userid fileid = forall payload. Map WorkflowEdgePayloadLabel (WorkflowEdgePayload userid fileid payload)
|
||||
|
||||
@ -101,15 +121,23 @@ data WorkflowGraphEdge userid fileid = WGE
|
||||
, wgeForm :: Map WorkflowEdgePayloadLabel (NonNull (Set (WorkflowEdgePayloadSpecification fileid userid)))
|
||||
}
|
||||
|
||||
-- TODO remove (see above)
|
||||
instance Eq (WorkflowGraphEdge userid fileid) where
|
||||
_ == _ = True
|
||||
instance Ord (WorkflowGraphEdge userid fileid) where
|
||||
compare _ _ = EQ
|
||||
instance (Show userid, Show fileid) => Show (WorkflowGraphEdge userid fileid) where
|
||||
show WGE{..} = "(wgeActors:" ++ show wgeActors ++ "; wgeTarget:" ++ show wgeTarget ++ "; wgeForm:" ++ show wgeForm ++ ")"
|
||||
|
||||
instance (Eq userid, Eq fileid) => Eq (WorkflowGraphEdge userid fileid) where
|
||||
e1@WGE{} == e2@WGE{} = wgeActors e1 == wgeActors e2 && wgeTarget e1 == wgeTarget e2 && wgeForm e1 == wgeForm e2
|
||||
instance (Ord userid, Ord fileid) => Ord (WorkflowGraphEdge userid fileid) where
|
||||
e1@WGE{} <= e2@WGE{} = wgeActors e1 <= wgeActors e2 && wgeTarget e1 <= wgeTarget e2 && wgeForm e1 <= wgeForm e2
|
||||
|
||||
|
||||
data WorkflowGraph userid fileid = WorkflowGraph (Map WorkflowGraphNodeLabel (WorkflowGraphNode, Set (WorkflowGraphEdge userid fileid)))
|
||||
|
||||
instance (Show userid, Show fileid) => Show (WorkflowGraph userid fileid) where
|
||||
show (WorkflowGraph m) = show m
|
||||
|
||||
instance (Eq userid, Eq fileid) => Eq (WorkflowGraph userid fileid) where
|
||||
WorkflowGraph m1 == WorkflowGraph m2 = m1 == m2
|
||||
|
||||
|
||||
data WorkflowInstanceScope term school course = WISGlobal | WISTerm term | WISSchool school | WISCourse course
|
||||
deriving (Eq, Ord, Show, Read, Data, Generic, Typeable)
|
||||
@ -134,16 +162,16 @@ instance (ToJSON userid) => ToJSON (WorkflowRole userid) where
|
||||
]
|
||||
instance (FromJSON userid) => FromJSON (WorkflowRole userid) where
|
||||
parseJSON = JSON.withObject "WorkflowRole" $ \o -> do
|
||||
role <- (o .: "role" :: Parser Text)
|
||||
role <- (o JSON..: "role" :: Parser Text)
|
||||
case role of
|
||||
"user" -> do
|
||||
uid <- o .: "user"
|
||||
uid <- o JSON..: "user"
|
||||
return $ WorkflowRoleUser uid
|
||||
"authorized" -> do
|
||||
adnf <- o .: "authorized"
|
||||
adnf <- o JSON..: "authorized"
|
||||
return $ WorkflowRoleAuthorized adnf
|
||||
"initiator" -> do
|
||||
iid <- o .: "initiator"
|
||||
iid <- o JSON..: "initiator"
|
||||
return $ WorkflowRoleInitiator iid
|
||||
_ -> terror $ "WorkflowRole parseJSON error: expected role (user|authorized|initiator), but got " <> role
|
||||
|
||||
@ -158,11 +186,11 @@ instance (ToJSON userid, ToJSON fileid) => ToJSON (WorkflowGraphEdge userid file
|
||||
, "target" JSON..= wgeTarget
|
||||
, "form" JSON..= wgeForm
|
||||
]
|
||||
instance (FromJSON userid, Ord userid, FromJSON fileid) => FromJSON (WorkflowGraphEdge userid fileid) where
|
||||
instance (Ord userid, Ord fileid, FromJSON userid, FromJSON fileid) => FromJSON (WorkflowGraphEdge userid fileid) where
|
||||
parseJSON = JSON.withObject "WorkflowGraphEdge" $ \o -> do
|
||||
wgeActors <- o .: "actors"
|
||||
wgeTarget <- o .: "target"
|
||||
wgeForm <- o .: "form"
|
||||
wgeActors <- o JSON..: "actors"
|
||||
wgeTarget <- o JSON..: "target"
|
||||
wgeForm <- o JSON..: "form"
|
||||
return WGE{..}
|
||||
|
||||
instance (ToJSON fileid, ToJSON userid) => ToJSON (WorkflowEdgePayloadSpecification fileid userid) where
|
||||
|
||||
Loading…
Reference in New Issue
Block a user