From 5a9a0c06992f5e9e3d902f7e3e656e089e93f977 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Thu, 28 Nov 2024 13:30:02 +0100 Subject: [PATCH 1/2] Add possibility to update as patch --- lib/Service/ObjectService.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/Service/ObjectService.php b/lib/Service/ObjectService.php index 7be4d13..ce7599d 100755 --- a/lib/Service/ObjectService.php +++ b/lib/Service/ObjectService.php @@ -129,11 +129,19 @@ public function createFromArray(array $object) { * @param bool $updatedObject Whether this is an update operation * @return ObjectEntity The updated object */ - public function updateFromArray(string $id, array $object, bool $updatedObject) { + public function updateFromArray(string $id, array $object, bool $updatedObject, bool $patch = false) { // Add ID to object data for update $object['id'] = $id; - return $this->saveObject( + if($patch === true) { + $oldObject = $this->getObject($this->registerMapper->find($this->getRegister()), $this->schemaMapper->find($this->getSchema()), $id)->jsonSerialize(); + + $object = array_merge($oldObject, $object); + } + + + + return $this->saveObject( register: $this->getRegister(), schema: $this->getSchema(), object: $object From a50883b6e0dec9b6a8242f3e654f49a5011fceb1 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Thu, 28 Nov 2024 13:38:27 +0100 Subject: [PATCH 2/2] Process PR comments before they arrive --- lib/Service/ObjectService.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/Service/ObjectService.php b/lib/Service/ObjectService.php index ce7599d..2a097c1 100755 --- a/lib/Service/ObjectService.php +++ b/lib/Service/ObjectService.php @@ -133,14 +133,13 @@ public function updateFromArray(string $id, array $object, bool $updatedObject, // Add ID to object data for update $object['id'] = $id; - if($patch === true) { + // If we want the update to behave like patch, merge with existing object. + if ($patch === true) { $oldObject = $this->getObject($this->registerMapper->find($this->getRegister()), $this->schemaMapper->find($this->getSchema()), $id)->jsonSerialize(); $object = array_merge($oldObject, $object); } - - return $this->saveObject( register: $this->getRegister(), schema: $this->getSchema(),