Skip to content

Commit 4515f21

Browse files
committed
ID / Sequence attribute use as int
1 parent 98c22c1 commit 4515f21

5 files changed

Lines changed: 23 additions & 19 deletions

File tree

src/Database/Adapter/MariaDB.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -910,6 +910,8 @@ public function createDocument(string $collection, Document $document): Document
910910
throw new DatabaseException('Error creating document empty "$sequence"');
911911
}
912912

913+
$document['$sequence'] = (int)$document['$sequence'];
914+
913915
if (isset($stmtPermissions)) {
914916
$stmtPermissions->execute();
915917
}
@@ -1640,7 +1642,7 @@ public function find(string $collection, array $queries = [], ?int $limit = 25,
16401642
unset($results[$index]['_uid']);
16411643
}
16421644
if (\array_key_exists('_id', $document)) {
1643-
$results[$index]['$sequence'] = $document['_id'];
1645+
$results[$index]['$sequence'] = (int)$document['_id'];
16441646
unset($results[$index]['_id']);
16451647
}
16461648
if (\array_key_exists('_tenant', $document)) {

src/Database/Adapter/SQL.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ public function getDocument(string $collection, string $id, array $queries = [],
369369
$document = $document[0];
370370

371371
if (\array_key_exists('_id', $document)) {
372-
$document['$sequence'] = $document['_id'];
372+
$document['$sequence'] = (int)$document['_id'];
373373
unset($document['_id']);
374374
}
375375
if (\array_key_exists('_uid', $document)) {

src/Database/Database.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6508,6 +6508,8 @@ public function casting(Document $collection, Document $document): Document
65086508
$node = (bool)$node;
65096509
break;
65106510
case self::VAR_INTEGER:
6511+
case self::VAR_ID:
6512+
case self::VAR_ID:
65116513
$node = (int)$node;
65126514
break;
65136515
case self::VAR_FLOAT:

src/Database/Validator/Sequence.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,15 @@ public function isValid($value): bool
4646
return false;
4747
}
4848

49-
if (gettype($value) !== 'string') {
50-
return false;
51-
}
52-
5349
if ($this->idAttributeType === 'string') {
5450
return preg_match('/^[a-f0-9]{24}$/i', $value) === 1;
5551
} elseif ($this->idAttributeType === 'int') {
56-
$validator = new Integer(loose: true);
52+
53+
if (gettype($value) !== 'integer') {
54+
return false;
55+
}
56+
57+
$validator = new Integer();
5758
if (!$validator->isValid($value)) {
5859
return false;
5960
}

tests/e2e/Adapter/Scopes/DocumentTests.php

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public function testCreateDocument(): Document
6767
'colors' => ['pink', 'green', 'blue'],
6868
'empty' => [],
6969
'with-dash' => 'Works',
70-
'id' => '1000000',
70+
'id' => 1000000,
7171
]));
7272

7373
$this->assertNotEmpty(true, $document->getId());
@@ -91,8 +91,8 @@ public function testCreateDocument(): Document
9191
$this->assertEquals(['pink', 'green', 'blue'], $document->getAttribute('colors'));
9292
$this->assertEquals([], $document->getAttribute('empty'));
9393
$this->assertEquals('Works', $document->getAttribute('with-dash'));
94-
$this->assertIsString($document->getAttribute('id'));
95-
$this->assertEquals('1000000', $document->getAttribute('id'));
94+
$this->assertIsInt($document->getAttribute('id'));
95+
$this->assertEquals(1000000, $document->getAttribute('id'));
9696

9797
// Test create document with manual internal id
9898
$manualIdDocument = $database->createDocument('documents', new Document([
@@ -270,7 +270,7 @@ public function testCreateDocument(): Document
270270
* Insert ID attribute with '0'
271271
*/
272272
$documentId0 = $database->createDocument('documents', new Document([
273-
'id' => '0',
273+
'id' => 0,
274274
'$permissions' => [Permission::read(Role::any())],
275275
'string' => '',
276276
'integer_signed' => 1,
@@ -285,21 +285,20 @@ public function testCreateDocument(): Document
285285
'with-dash' => '',
286286
]));
287287
$this->assertNotEmpty(true, $documentId0->getSequence());
288-
$this->assertIsString($documentId0->getAttribute('id'));
289-
$this->assertEquals('0', $documentId0->getAttribute('id'));
288+
$this->assertIsInt($documentId0->getAttribute('id'));
289+
$this->assertEquals(0, $documentId0->getAttribute('id'));
290290

291291
$documentId0 = $database->getDocument('documents', $documentId0->getId());
292292
$this->assertNotEmpty(true, $documentId0->getSequence());
293-
$this->assertIsString($documentId0->getAttribute('id'));
294-
$this->assertEquals('0', $documentId0->getAttribute('id'));
293+
$this->assertIsInt($documentId0->getAttribute('id'));
294+
$this->assertEquals(0, $documentId0->getAttribute('id'));
295295

296296
$documentId0 = $database->findOne('documents', [
297-
query::equal('id', ['0'])
297+
query::equal('id', [0])
298298
]);
299299
$this->assertNotEmpty(true, $documentId0->getSequence());
300-
$this->assertIsString($documentId0->getAttribute('id'));
301-
$this->assertEquals('0', $documentId0->getAttribute('id'));
302-
300+
$this->assertIsInt($documentId0->getAttribute('id'));
301+
$this->assertEquals(0, $documentId0->getAttribute('id'));
303302

304303
return $document;
305304
}

0 commit comments

Comments
 (0)