diff --git a/src/Database/Database.php b/src/Database/Database.php index 0984b33bd..7d465ee5d 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -251,8 +251,7 @@ class Database ], [ '$id' => '$tenant', - 'type' => self::VAR_INTEGER, - //'type' => self::VAR_ID, // Inconsistency with other VAR_ID since this is an INT + 'type' => self::VAR_ID, 'size' => 0, 'required' => false, 'default' => null, @@ -6055,7 +6054,7 @@ public function updateDocument(string $collection, string $id, Document $documen $document['$createdAt'] = ($createdAt === null || !$this->preserveDates) ? $old->getCreatedAt() : $createdAt; if ($this->adapter->getSharedTables()) { - $document['$tenant'] = $old->getTenant(); // Make sure user doesn't switch tenant + $document['$tenant'] = $old->getAttribute('$tenant'); // Make sure user doesn't switch tenant } $document = new Document($document); diff --git a/src/Database/Validator/Sequence.php b/src/Database/Validator/Sequence.php index d528cc4ea..4b3b6c79b 100644 --- a/src/Database/Validator/Sequence.php +++ b/src/Database/Validator/Sequence.php @@ -41,13 +41,17 @@ public function isValid($value): bool return false; } - if (!\is_string($value)) { + if (!\is_string($value) && !\is_int($value)) { return false; } switch ($this->idAttributeType) { - case Database::VAR_UUID7: //UUID7 - return preg_match('/^[a-f0-9]{8}-[a-f0-9]{4}-7[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/i', $value) === 1; + case Database::VAR_UUID7: + if (\is_string($value) && preg_match('/^[a-f0-9]{8}-[a-f0-9]{4}-7[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/i', $value) === 1) { + return true; + } + // Also accept integer IDs (e.g. $tenant may be an integer in any adapter) + // no break case Database::VAR_INTEGER: $start = ($this->primary) ? 1 : 0; $validator = new Range($start, Database::MAX_BIG_INT, Database::VAR_INTEGER); diff --git a/src/Database/Validator/Structure.php b/src/Database/Validator/Structure.php index 417e10c27..a65734dbd 100644 --- a/src/Database/Validator/Structure.php +++ b/src/Database/Validator/Structure.php @@ -52,11 +52,11 @@ class Structure extends Validator ], [ '$id' => '$tenant', - 'type' => Database::VAR_INTEGER, // ? VAR_ID - 'size' => 8, + 'type' => Database::VAR_ID, + 'size' => 0, 'required' => false, 'default' => null, - 'signed' => false, + 'signed' => true, 'array' => false, 'filters' => [], ],