-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
Hello -- another patching issue here. This one happens when trying to patch a value that encodes in a TaggedObject manner.
data Union = UnionA Int | UnionB String deriving (Show, Eq, Generic)
$(A.deriveJSON A.defaultOptions ''Union)
deriveJsonPatch A.defaultOptions ''Union
data Person = Person { value :: Union } deriving (Show, Eq, Generic)
$(A.deriveJSON A.defaultOptions ''Person)
deriveJsonPatch A.defaultOptions ''Person
main :: IO ()
main = do
let value1 = Person (UnionA 42)
let value2 = Person (UnionB "abc")
let p = AD.diff (A.toJSON value1) (A.toJSON value2)
putStrLn [i|Patch: #{p}|]
let patched = ADG.patch p value1
putStrLn [i|Patched: #{patched}|]Output:
> A.encode (UnionB "abc")
"{\"tag\":\"UnionB\",\"contents\":\"abc\"}"
> main
Patch: Patch {patchOperations = [Rep {changePointer = Pointer {pointerPath = [OKey "value",OKey "tag"]}, changeValue = String "UnionB"},Rep {changePointer = Pointer {pointerPath = [OKey "value",OKey "contents"]}, changeValue = String "abc"}]}
Patched: Error "Operation Replace on /value/tag failed: Invalid path"
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels