Skip to content

Commit 7657f7f

Browse files
committed
Cast ID attribute to int
1 parent 4515f21 commit 7657f7f

File tree

4 files changed

+14
-10
lines changed

4 files changed

+14
-10
lines changed

src/Database/Adapter/Postgres.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1030,6 +1030,7 @@ public function createDocument(string $collection, Document $document): Document
10301030
$lastInsertedId = $this->getPDO()->lastInsertId();
10311031
// Sequence can be manually set as well
10321032
$document['$sequence'] ??= $lastInsertedId;
1033+
$document['$sequence'] = (int)$document['$sequence'];
10331034

10341035
if (isset($stmtPermissions)) {
10351036
$this->execute($stmtPermissions);
@@ -1525,7 +1526,7 @@ public function find(string $collection, array $queries = [], ?int $limit = 25,
15251526
unset($results[$index]['_uid']);
15261527
}
15271528
if (\array_key_exists('_id', $document)) {
1528-
$results[$index]['$sequence'] = $document['_id'];
1529+
$results[$index]['$sequence'] = (int)$document['_id'];
15291530
unset($results[$index]['_id']);
15301531
}
15311532
if (\array_key_exists('_tenant', $document)) {

src/Database/Database.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6507,9 +6507,12 @@ public function casting(Document $collection, Document $document): Document
65076507
case self::VAR_BOOLEAN:
65086508
$node = (bool)$node;
65096509
break;
6510-
case self::VAR_INTEGER:
6511-
case self::VAR_ID:
65126510
case self::VAR_ID:
6511+
if ($this->adapter->getIdAttributeType() === 'int'){
6512+
$node = (int)$node;
6513+
}
6514+
break;
6515+
case self::VAR_INTEGER:
65136516
$node = (int)$node;
65146517
break;
65156518
case self::VAR_FLOAT:

src/Database/Document.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,11 @@ public function getId(): string
6262
}
6363

6464
/**
65-
* @return string
65+
* @return mixed
6666
*/
67-
public function getSequence(): string
67+
public function getSequence(): mixed
6868
{
69-
return $this->getAttribute('$sequence', '');
69+
return $this->getAttribute('$sequence');
7070
}
7171

7272
/**

tests/e2e/Adapter/Scopes/DocumentTests.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public function testCreateDocument(): Document
9797
// Test create document with manual internal id
9898
$manualIdDocument = $database->createDocument('documents', new Document([
9999
'$id' => '56000',
100-
'$sequence' => '56000',
100+
'$sequence' => 56000,
101101
'$permissions' => [
102102
Permission::read(Role::any()),
103103
Permission::read(Role::user(ID::custom('1'))),
@@ -214,7 +214,7 @@ public function testCreateDocument(): Document
214214

215215
try {
216216
$database->createDocument('documents', new Document([
217-
'$sequence' => '0',
217+
'$sequence' => 0,
218218
'$permissions' => [],
219219
'string' => '',
220220
'integer_signed' => 1,
@@ -385,7 +385,7 @@ public function testCreateDocumentsWithAutoIncrement(): void
385385

386386
for ($i = $sequence; $i <= ($sequence + $count); $i++) {
387387
$documents[] = new Document([
388-
'$sequence' => (string)$i,
388+
'$sequence' => $i,
389389
'$permissions' => [
390390
Permission::read(Role::any()),
391391
Permission::create(Role::any()),
@@ -4370,7 +4370,7 @@ public function testExceptionCaseInsensitiveDuplicate(Document $document): Docum
43704370
$database = static::getDatabase();
43714371

43724372
$document->setAttribute('$id', 'caseSensitive');
4373-
$document->setAttribute('$sequence', '200');
4373+
$document->setAttribute('$sequence', 200);
43744374
$database->createDocument($document->getCollection(), $document);
43754375

43764376
$document->setAttribute('$id', 'CaseSensitive');

0 commit comments

Comments
 (0)