mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
Merge pull request #9713 from ArnabChatterjee20k/feat/auto-increment
exposed internal id as a part of auto increment id
This commit is contained in:
@@ -36,6 +36,12 @@ class Document extends Any
|
||||
'default' => '',
|
||||
'example' => '5e5ea5c16897e',
|
||||
])
|
||||
->addRule('$internalId', [
|
||||
'type' => self::TYPE_INTEGER,
|
||||
'description' => 'Auto increment integer.',
|
||||
'default' => '',
|
||||
'example' => '1',
|
||||
])
|
||||
->addRule('$collectionId', [
|
||||
'type' => self::TYPE_STRING,
|
||||
'description' => 'Collection ID.',
|
||||
@@ -71,7 +77,6 @@ class Document extends Any
|
||||
|
||||
public function filter(DatabaseDocument $document): DatabaseDocument
|
||||
{
|
||||
$document->removeAttribute('$sequence');
|
||||
$document->removeAttribute('$collection');
|
||||
$document->removeAttribute('$tenant');
|
||||
|
||||
|
||||
@@ -1645,6 +1645,7 @@ trait DatabasesBase
|
||||
$this->assertEquals($document1['body']['actors'][0], 'Chris Evans');
|
||||
$this->assertEquals($document1['body']['actors'][1], 'Samuel Jackson');
|
||||
$this->assertEquals($document1['body']['birthDay'], '1975-06-12T12:12:55.000+00:00');
|
||||
$this->assertTrue(array_key_exists('$internalId', $document1['body']));
|
||||
|
||||
$this->assertEquals(201, $document2['headers']['status-code']);
|
||||
$this->assertEquals($data['moviesId'], $document2['body']['$collectionId']);
|
||||
@@ -1662,6 +1663,7 @@ trait DatabasesBase
|
||||
$this->assertEquals($document2['body']['birthDay'], null);
|
||||
$this->assertEquals($document2['body']['integers'][0], 50);
|
||||
$this->assertEquals($document2['body']['integers'][1], 60);
|
||||
$this->assertTrue(array_key_exists('$internalId', $document2['body']));
|
||||
|
||||
$this->assertEquals(201, $document3['headers']['status-code']);
|
||||
$this->assertEquals($data['moviesId'], $document3['body']['$collectionId']);
|
||||
@@ -1676,6 +1678,7 @@ trait DatabasesBase
|
||||
$this->assertEquals($document3['body']['actors'][0], 'Tom Holland');
|
||||
$this->assertEquals($document3['body']['actors'][1], 'Zendaya Maree Stoermer');
|
||||
$this->assertEquals($document3['body']['birthDay'], '1975-06-12T18:12:55.000+00:00'); // UTC for NY
|
||||
$this->assertTrue(array_key_exists('$internalId', $document3['body']));
|
||||
|
||||
$this->assertEquals(400, $document4['headers']['status-code']);
|
||||
|
||||
@@ -2003,9 +2006,9 @@ trait DatabasesBase
|
||||
$this->assertEquals(1944, $documents['body']['documents'][0]['releaseYear']);
|
||||
$this->assertEquals(2017, $documents['body']['documents'][1]['releaseYear']);
|
||||
$this->assertEquals(2019, $documents['body']['documents'][2]['releaseYear']);
|
||||
$this->assertFalse(array_key_exists('$sequence', $documents['body']['documents'][0]));
|
||||
$this->assertFalse(array_key_exists('$sequence', $documents['body']['documents'][1]));
|
||||
$this->assertFalse(array_key_exists('$sequence', $documents['body']['documents'][2]));
|
||||
$this->assertTrue(array_key_exists('$sequence', $documents['body']['documents'][0]));
|
||||
$this->assertTrue(array_key_exists('$sequence', $documents['body']['documents'][1]));
|
||||
$this->assertTrue(array_key_exists('$sequence', $documents['body']['documents'][2]));
|
||||
$this->assertCount(3, $documents['body']['documents']);
|
||||
|
||||
foreach ($documents['body']['documents'] as $document) {
|
||||
@@ -2098,7 +2101,7 @@ trait DatabasesBase
|
||||
$this->assertEquals($response['body']['releaseYear'], $document['releaseYear']);
|
||||
$this->assertEquals($response['body']['$permissions'], $document['$permissions']);
|
||||
$this->assertEquals($response['body']['birthDay'], $document['birthDay']);
|
||||
$this->assertFalse(array_key_exists('$sequence', $response['body']));
|
||||
$this->assertTrue(array_key_exists('$sequence', $response['body']));
|
||||
$this->assertFalse(array_key_exists('$tenant', $response['body']));
|
||||
}
|
||||
}
|
||||
@@ -2111,6 +2114,7 @@ trait DatabasesBase
|
||||
$databaseId = $data['databaseId'];
|
||||
$document = $data['documents'][0];
|
||||
|
||||
// not selecting internal id
|
||||
$response = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $document['$collectionId'] . '/documents/' . $document['$id'], array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
@@ -2124,6 +2128,39 @@ trait DatabasesBase
|
||||
$this->assertEquals($document['title'], $response['body']['title']);
|
||||
$this->assertEquals($document['releaseYear'], $response['body']['releaseYear']);
|
||||
$this->assertArrayNotHasKey('birthDay', $response['body']);
|
||||
$this->assertFalse(array_key_exists('$internalId', $response['body']));
|
||||
|
||||
// selecting internal id as well
|
||||
$response = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $document['$collectionId'] . '/documents/' . $document['$id'], array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], $this->getHeaders()), [
|
||||
'queries' => [
|
||||
Query::select(['title', 'releaseYear', '$id','$internalId'])->toString(),
|
||||
],
|
||||
]);
|
||||
|
||||
$this->assertEquals(200, $response['headers']['status-code']);
|
||||
$this->assertEquals($document['title'], $response['body']['title']);
|
||||
$this->assertEquals($document['releaseYear'], $response['body']['releaseYear']);
|
||||
$this->assertArrayNotHasKey('birthDay', $response['body']);
|
||||
$this->assertTrue(array_key_exists('$internalId', $response['body']));
|
||||
$internalId = $response['body']['$internalId'];
|
||||
|
||||
// Query by internalId
|
||||
$response = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $document['$collectionId'] . '/documents/' . $document['$id'], array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], $this->getHeaders()), [
|
||||
'queries' => [
|
||||
Query::equal('$internalId', [$internalId])
|
||||
],
|
||||
]);
|
||||
|
||||
$this->assertEquals(200, $response['headers']['status-code']);
|
||||
$this->assertEquals($document['title'], $response['body']['title']);
|
||||
$this->assertEquals($document['releaseYear'], $response['body']['releaseYear']);
|
||||
$this->assertTrue(array_key_exists('$internalId', $response['body']));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -4361,8 +4398,8 @@ trait DatabasesBase
|
||||
|
||||
$this->assertArrayNotHasKey('$collection', $person1['body']);
|
||||
$this->assertArrayNotHasKey('$collection', $person1['body']['library']);
|
||||
$this->assertArrayNotHasKey('$sequence', $person1['body']);
|
||||
$this->assertArrayNotHasKey('$sequence', $person1['body']['library']);
|
||||
$this->assertArrayHasKey('$sequence', $person1['body']);
|
||||
$this->assertArrayHasKey('$sequence', $person1['body']['library']);
|
||||
|
||||
$documents = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $person['body']['$id'] . '/documents', array_merge([
|
||||
'content-type' => 'application/json',
|
||||
|
||||
Reference in New Issue
Block a user