diff --git a/src/Database/Adapter/Mongo.php b/src/Database/Adapter/Mongo.php index 77c7f22d2..b4c9da0f5 100644 --- a/src/Database/Adapter/Mongo.php +++ b/src/Database/Adapter/Mongo.php @@ -2055,6 +2055,7 @@ protected function getInternalKeyForAttribute(string $attribute): string '$tenant' => '_tenant', '$createdAt' => '_createdAt', '$updatedAt' => '_updatedAt', + '$deletedAt' => '_deletedAt', '$permissions' => '_permissions', default => $attribute }; diff --git a/src/Database/Adapter/SQL.php b/src/Database/Adapter/SQL.php index 3fe2696db..a4011df4f 100644 --- a/src/Database/Adapter/SQL.php +++ b/src/Database/Adapter/SQL.php @@ -420,6 +420,10 @@ public function getDocument(Document $collection, string $id, array $queries = [ $document['$updatedAt'] = $document['_updatedAt']; unset($document['_updatedAt']); } + if (\array_key_exists('_deletedAt', $document)) { + $document['$deletedAt'] = $document['_deletedAt']; + unset($document['_deletedAt']); + } if (\array_key_exists('_permissions', $document)) { $document['$permissions'] = json_decode($document['_permissions'] ?? '[]', true); unset($document['_permissions']); @@ -2432,12 +2436,18 @@ protected function getAttributeProjection(array $selections, string $prefix): mi '$updatedAt', ]; - $selections = \array_diff($selections, [...$internalKeys, '$collection']); + $hasDeletedAt = \in_array('$deletedAt', $selections); + + $selections = \array_diff($selections, [...$internalKeys, '$deletedAt', '$collection']); foreach ($internalKeys as $internalKey) { $selections[] = $this->getInternalKeyForAttribute($internalKey); } + if ($hasDeletedAt) { + $selections[] = $this->getInternalKeyForAttribute('$deletedAt'); + } + $projections = []; foreach ($selections as $selection) { $filteredSelection = $this->filter($selection); @@ -2457,6 +2467,7 @@ protected function getInternalKeyForAttribute(string $attribute): string '$tenant' => '_tenant', '$createdAt' => '_createdAt', '$updatedAt' => '_updatedAt', + '$deletedAt' => '_deletedAt', '$permissions' => '_permissions', default => $attribute };