From 7eb005deb21bc0789275abe28d80c96919f8ae92 Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 5 Dec 2024 12:48:42 +0200 Subject: [PATCH 1/9] Schema attributes --- src/Database/Adapter.php | 7 ++++ src/Database/Adapter/MariaDB.php | 40 +++++++++++++++++++++ src/Database/Adapter/Mongo.php | 10 ++++++ src/Database/Adapter/Postgres.php | 10 ++++++ src/Database/Adapter/SQLite.php | 10 ++++++ src/Database/Database.php | 12 +++++++ tests/e2e/Adapter/Base.php | 58 +++++++++++++++++++++++++++++++ 7 files changed, 147 insertions(+) diff --git a/src/Database/Adapter.php b/src/Database/Adapter.php index f5748e460..b7e214720 100644 --- a/src/Database/Adapter.php +++ b/src/Database/Adapter.php @@ -781,6 +781,13 @@ abstract public function getSupportForSchemas(): bool; */ abstract public function getSupportForAttributes(): bool; + /** + * Are schema attributes? + * + * @return bool + */ + abstract public function getSupportForSchemaAttributes(): bool; + /** * Is index supported? * diff --git a/src/Database/Adapter/MariaDB.php b/src/Database/Adapter/MariaDB.php index b616247ab..701944645 100644 --- a/src/Database/Adapter/MariaDB.php +++ b/src/Database/Adapter/MariaDB.php @@ -2433,4 +2433,44 @@ protected function processException(PDOException $e): \Exception return $e; } + + /** + * Get Schema Attributes + * + * @param string $collection + * @return array + * @throws DatabaseException + */ + public function getSchemaAttributes(string $collection): array + { + $schema = $this->getDatabase(); + $collection = $this->getNamespace().'_'.$this->filter($collection); + + $stmt = $this->getPDO()->prepare(" + SELECT + COLUMN_NAME, + COLUMN_DEFAULT, + IS_NULLABLE, + DATA_TYPE, + CHARACTER_MAXIMUM_LENGTH, + NUMERIC_PRECISION, + NUMERIC_SCALE, + DATETIME_PRECISION, + COLUMN_TYPE, + COLUMN_KEY, + EXTRA + FROM INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_SCHEMA = :schema AND TABLE_NAME = :table + "); + $stmt->bindParam(':schema', $schema); + $stmt->bindParam(':table', $collection); + $stmt->execute(); + + return $stmt->fetchAll(); + } + + public function getSupportForSchemaAttributes(): bool + { + return true; + } } diff --git a/src/Database/Adapter/Mongo.php b/src/Database/Adapter/Mongo.php index 4a54c473b..0fc0d123b 100644 --- a/src/Database/Adapter/Mongo.php +++ b/src/Database/Adapter/Mongo.php @@ -1787,6 +1787,16 @@ public function getSupportForGetConnectionId(): bool return false; } + /** + * Is get schema attributes supported? + * + * @return bool + */ + public function getSupportForSchemaAttributes(): bool + { + return false; + } + /** * Get current attribute count from collection document * diff --git a/src/Database/Adapter/Postgres.php b/src/Database/Adapter/Postgres.php index c679a9414..378d77cdf 100644 --- a/src/Database/Adapter/Postgres.php +++ b/src/Database/Adapter/Postgres.php @@ -2397,6 +2397,16 @@ public function getSupportForJSONOverlaps(): bool return false; } + /** + * Is get schema attributes supported? + * + * @return bool + */ + public function getSupportForSchemaAttributes(): bool + { + return false; + } + /** * @return string */ diff --git a/src/Database/Adapter/SQLite.php b/src/Database/Adapter/SQLite.php index a52ce1332..8442367ff 100644 --- a/src/Database/Adapter/SQLite.php +++ b/src/Database/Adapter/SQLite.php @@ -934,6 +934,16 @@ public function getSupportForGetConnectionId(): bool return false; } + /** + * Is get schema attributes supported? + * + * @return bool + */ + public function getSupportForSchemaAttributes(): bool + { + return false; + } + /** * Get SQL Index Type * diff --git a/src/Database/Database.php b/src/Database/Database.php index 95a499df2..ce9b47faf 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -6037,4 +6037,16 @@ public function analyzeCollection(string $collection): bool { return $this->adapter->analyzeCollection($collection); } + + /** + * Get Schema attributes + * + * @param string $collection + * @return array + */ + public function getSchemaAttributes(string $collection): array + { + var_dump('getSchemaAttributes' . $collection); + return $this->adapter->getSchemaAttributes($collection); + } } diff --git a/tests/e2e/Adapter/Base.php b/tests/e2e/Adapter/Base.php index 943eb458e..9ca27abbd 100644 --- a/tests/e2e/Adapter/Base.php +++ b/tests/e2e/Adapter/Base.php @@ -1300,6 +1300,64 @@ public function testPurgeCollectionCache(): void $this->assertArrayHasKey('age', $document); } + public function testSchemaAttribute(): void + { + if (!$this->getDatabase()->getAdapter()->getSupportForSchemaAttributes()) { + $this->expectNotToPerformAssertions(); + return; + } + + $collection = 'schema'; + $db = static::getDatabase(); + + $db->createCollection($collection); + + $db->createAttribute($collection, 'username', Database::VAR_STRING, 128, true); + $db->createAttribute($collection, 'story', Database::VAR_STRING, 20000, true); + $db->createAttribute($collection, 'string_list', Database::VAR_STRING, 128, true, null, true, true); + $db->createAttribute($collection, 'dob', Database::VAR_DATETIME, 0, false, '2000-06-12T14:12:55.000+00:00', true, false, null, [], ['datetime']); + + $attributes = []; + foreach ($db->getSchemaAttributes($collection) as $attribute) { + $attributes[$attribute['COLUMN_NAME']] = $attribute; + } + + $attribute = $attributes['username']; + $this->assertEquals('username', $attribute['COLUMN_NAME']); + $this->assertEquals('varchar', $attribute['DATA_TYPE']); + $this->assertEquals('varchar(128)', $attribute['COLUMN_TYPE']); + $this->assertEquals('128', $attribute['CHARACTER_MAXIMUM_LENGTH']); + $this->assertEquals('YES', $attribute['IS_NULLABLE']); + + $attribute = $attributes['story']; + $this->assertEquals('story', $attribute['COLUMN_NAME']); + $this->assertEquals('text', $attribute['DATA_TYPE']); + $this->assertEquals('text', $attribute['COLUMN_TYPE']); + $this->assertEquals('65535', $attribute['CHARACTER_MAXIMUM_LENGTH']); + + $attribute = $attributes['string_list']; + $this->assertEquals('string_list', $attribute['COLUMN_NAME']); + $this->assertTrue(in_array($attribute['DATA_TYPE'], ['json', 'longtext'])); // mysql vs maria + $this->assertTrue(in_array($attribute['COLUMN_TYPE'], ['json', 'longtext'])); + $this->assertTrue(in_array($attribute['CHARACTER_MAXIMUM_LENGTH'], [null, '4294967295'])); + $this->assertEquals('YES', $attribute['IS_NULLABLE']); + + $attribute = $attributes['dob']; + $this->assertEquals('dob', $attribute['COLUMN_NAME']); + $this->assertEquals('datetime', $attribute['DATA_TYPE']); + $this->assertEquals('datetime(3)', $attribute['COLUMN_TYPE']); + $this->assertEquals(null, $attribute['CHARACTER_MAXIMUM_LENGTH']); + $this->assertEquals('3', $attribute['DATETIME_PRECISION']); + + if($db->getSharedTables()){ + $attribute = $attributes['_tenant']; + $this->assertEquals('_tenant', $attribute['COLUMN_NAME']); + $this->assertEquals('int', $attribute['DATA_TYPE']); + $this->assertEquals('10', $attribute['NUMERIC_PRECISION']); + $this->assertTrue(in_array($attribute['COLUMN_TYPE'], ['int unsigned', 'int(11) unsigned'])); + } + } + public function testCreateDeleteAttribute(): void { static::getDatabase()->createCollection('attributes'); From aa4a0cfc9a3a26717481f22905cc9a38bc221f45 Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 5 Dec 2024 12:51:54 +0200 Subject: [PATCH 2/9] comment --- src/Database/Adapter.php | 2 +- src/Database/Database.php | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Database/Adapter.php b/src/Database/Adapter.php index b7e214720..1a4aaa240 100644 --- a/src/Database/Adapter.php +++ b/src/Database/Adapter.php @@ -782,7 +782,7 @@ abstract public function getSupportForSchemas(): bool; abstract public function getSupportForAttributes(): bool; /** - * Are schema attributes? + * Are schema attributes supported? * * @return bool */ diff --git a/src/Database/Database.php b/src/Database/Database.php index ce9b47faf..b51eff377 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -6046,7 +6046,6 @@ public function analyzeCollection(string $collection): bool */ public function getSchemaAttributes(string $collection): array { - var_dump('getSchemaAttributes' . $collection); return $this->adapter->getSchemaAttributes($collection); } } From 3f7fb816e45c35e18da271763bc6ceac4824be33 Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 5 Dec 2024 12:56:38 +0200 Subject: [PATCH 3/9] lint --- tests/e2e/Adapter/Base.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/Adapter/Base.php b/tests/e2e/Adapter/Base.php index 9ca27abbd..b56ac28ae 100644 --- a/tests/e2e/Adapter/Base.php +++ b/tests/e2e/Adapter/Base.php @@ -1349,7 +1349,7 @@ public function testSchemaAttribute(): void $this->assertEquals(null, $attribute['CHARACTER_MAXIMUM_LENGTH']); $this->assertEquals('3', $attribute['DATETIME_PRECISION']); - if($db->getSharedTables()){ + if ($db->getSharedTables()) { $attribute = $attributes['_tenant']; $this->assertEquals('_tenant', $attribute['COLUMN_NAME']); $this->assertEquals('int', $attribute['DATA_TYPE']); From 67dda79e5c67251d5b2fe978024dcf87f172b122 Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 5 Dec 2024 15:26:09 +0200 Subject: [PATCH 4/9] add adapter --- src/Database/Adapter.php | 9 ++++++ src/Database/Adapter/MariaDB.php | 48 +++++++++++++++++++------------- src/Database/Adapter/Mongo.php | 5 ++++ src/Database/Adapter/SQL.php | 5 ++++ tests/e2e/Adapter/Base.php | 4 ++- 5 files changed, 50 insertions(+), 21 deletions(-) diff --git a/src/Database/Adapter.php b/src/Database/Adapter.php index 1a4aaa240..43b1ca130 100644 --- a/src/Database/Adapter.php +++ b/src/Database/Adapter.php @@ -1029,4 +1029,13 @@ abstract public function getConnectionId(): string; * @return array */ abstract public function getInternalIndexesKeys(): array; + + /** + * Get Schema Attributes + * + * @param string $collection + * @return array + * @throws DatabaseException + */ + abstract public function getSchemaAttributes(string $collection): array; } diff --git a/src/Database/Adapter/MariaDB.php b/src/Database/Adapter/MariaDB.php index 701944645..10da2e971 100644 --- a/src/Database/Adapter/MariaDB.php +++ b/src/Database/Adapter/MariaDB.php @@ -1457,6 +1457,7 @@ public function updateDocuments(string $collection, Document $updates, array $do $permissionsStmt->execute(); $permissions = $permissionsStmt->fetchAll(); + $permissionsStmt->closeCursor(); $initial = []; foreach (Database::PERMISSIONS as $type) { @@ -2446,27 +2447,34 @@ public function getSchemaAttributes(string $collection): array $schema = $this->getDatabase(); $collection = $this->getNamespace().'_'.$this->filter($collection); - $stmt = $this->getPDO()->prepare(" - SELECT - COLUMN_NAME, - COLUMN_DEFAULT, - IS_NULLABLE, - DATA_TYPE, - CHARACTER_MAXIMUM_LENGTH, - NUMERIC_PRECISION, - NUMERIC_SCALE, - DATETIME_PRECISION, - COLUMN_TYPE, - COLUMN_KEY, - EXTRA - FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA = :schema AND TABLE_NAME = :table - "); - $stmt->bindParam(':schema', $schema); - $stmt->bindParam(':table', $collection); - $stmt->execute(); + try { + $stmt = $this->getPDO()->prepare(" + SELECT + COLUMN_NAME, + COLUMN_DEFAULT, + IS_NULLABLE, + DATA_TYPE, + CHARACTER_MAXIMUM_LENGTH, + NUMERIC_PRECISION, + NUMERIC_SCALE, + DATETIME_PRECISION, + COLUMN_TYPE, + COLUMN_KEY, + EXTRA + FROM INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_SCHEMA = :schema AND TABLE_NAME = :table + "); + $stmt->bindParam(':schema', $schema); + $stmt->bindParam(':table', $collection); + $stmt->execute(); + $results = $stmt->fetchAll(); + $stmt->closeCursor(); - return $stmt->fetchAll(); + return $results; + + } catch (PDOException $e) { + throw new DatabaseException('Failed to get schema attributes', $e->getCode(), $e); + } } public function getSupportForSchemaAttributes(): bool diff --git a/src/Database/Adapter/Mongo.php b/src/Database/Adapter/Mongo.php index 0fc0d123b..2e35a74e0 100644 --- a/src/Database/Adapter/Mongo.php +++ b/src/Database/Adapter/Mongo.php @@ -1952,4 +1952,9 @@ public function getInternalIndexesKeys(): array { return []; } + + public function getSchemaAttributes(string $collection): array + { + return []; + } } diff --git a/src/Database/Adapter/SQL.php b/src/Database/Adapter/SQL.php index a0b6a3c6a..ee69d5919 100644 --- a/src/Database/Adapter/SQL.php +++ b/src/Database/Adapter/SQL.php @@ -1151,4 +1151,9 @@ protected function processException(PDOException $e): \Exception { return $e; } + + public function getSchemaAttributes(string $collection): array + { + return []; + } } diff --git a/tests/e2e/Adapter/Base.php b/tests/e2e/Adapter/Base.php index b56ac28ae..b1ed05374 100644 --- a/tests/e2e/Adapter/Base.php +++ b/tests/e2e/Adapter/Base.php @@ -1307,9 +1307,11 @@ public function testSchemaAttribute(): void return; } - $collection = 'schema'; + $collection = 'schema_attributes'; $db = static::getDatabase(); + $this->assertEmpty($db->getSchemaAttributes('no_such_collection')); + $db->createCollection($collection); $db->createAttribute($collection, 'username', Database::VAR_STRING, 128, true); From d07b0ad52be6df50047f1ba927ce3cab1fbcf808 Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 5 Dec 2024 16:01:40 +0200 Subject: [PATCH 5/9] fix phpstan --- src/Database/Adapter.php | 2 +- src/Database/Adapter/MariaDB.php | 2 +- src/Database/Database.php | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Database/Adapter.php b/src/Database/Adapter.php index 43b1ca130..d3614fc9e 100644 --- a/src/Database/Adapter.php +++ b/src/Database/Adapter.php @@ -1034,7 +1034,7 @@ abstract public function getInternalIndexesKeys(): array; * Get Schema Attributes * * @param string $collection - * @return array + * @return array * @throws DatabaseException */ abstract public function getSchemaAttributes(string $collection): array; diff --git a/src/Database/Adapter/MariaDB.php b/src/Database/Adapter/MariaDB.php index 10da2e971..25bfbdcce 100644 --- a/src/Database/Adapter/MariaDB.php +++ b/src/Database/Adapter/MariaDB.php @@ -2439,7 +2439,7 @@ protected function processException(PDOException $e): \Exception * Get Schema Attributes * * @param string $collection - * @return array + * @return array * @throws DatabaseException */ public function getSchemaAttributes(string $collection): array diff --git a/src/Database/Database.php b/src/Database/Database.php index b51eff377..130558427 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -6039,10 +6039,11 @@ public function analyzeCollection(string $collection): bool } /** - * Get Schema attributes + * Get Schema Attributes * * @param string $collection - * @return array + * @return array + * @throws DatabaseException */ public function getSchemaAttributes(string $collection): array { From eea30ac9872dd7af656f18198d7fa54c9b1d602b Mon Sep 17 00:00:00 2001 From: fogelito Date: Sun, 8 Dec 2024 11:17:39 +0200 Subject: [PATCH 6/9] Address comments --- src/Database/Adapter.php | 2 +- src/Database/Adapter/MariaDB.php | 36 ++++++++++++---------- tests/e2e/Adapter/Base.php | 53 +++++++++++++++++--------------- 3 files changed, 49 insertions(+), 42 deletions(-) diff --git a/src/Database/Adapter.php b/src/Database/Adapter.php index d3614fc9e..6e7cc9f9e 100644 --- a/src/Database/Adapter.php +++ b/src/Database/Adapter.php @@ -1034,7 +1034,7 @@ abstract public function getInternalIndexesKeys(): array; * Get Schema Attributes * * @param string $collection - * @return array + * @return array * @throws DatabaseException */ abstract public function getSchemaAttributes(string $collection): array; diff --git a/src/Database/Adapter/MariaDB.php b/src/Database/Adapter/MariaDB.php index 25bfbdcce..b5d2956f1 100644 --- a/src/Database/Adapter/MariaDB.php +++ b/src/Database/Adapter/MariaDB.php @@ -2439,7 +2439,7 @@ protected function processException(PDOException $e): \Exception * Get Schema Attributes * * @param string $collection - * @return array + * @return array * @throws DatabaseException */ public function getSchemaAttributes(string $collection): array @@ -2448,28 +2448,32 @@ public function getSchemaAttributes(string $collection): array $collection = $this->getNamespace().'_'.$this->filter($collection); try { - $stmt = $this->getPDO()->prepare(" - SELECT - COLUMN_NAME, - COLUMN_DEFAULT, - IS_NULLABLE, - DATA_TYPE, - CHARACTER_MAXIMUM_LENGTH, - NUMERIC_PRECISION, - NUMERIC_SCALE, - DATETIME_PRECISION, - COLUMN_TYPE, - COLUMN_KEY, - EXTRA - FROM INFORMATION_SCHEMA.COLUMNS + $stmt = $this->getPDO()->prepare(' + SELECT + COLUMN_NAME as columnName, + COLUMN_DEFAULT as columnDefault, + IS_NULLABLE as isNullable, + DATA_TYPE as dataType, + CHARACTER_MAXIMUM_LENGTH as characterMaximumLength, + NUMERIC_PRECISION as numericPrecision, + NUMERIC_SCALE as numericScale, + DATETIME_PRECISION as datetimePrecision, + COLUMN_TYPE as columnType, + COLUMN_KEY as columnKey, + EXTRA as extra + FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = :schema AND TABLE_NAME = :table - "); + '); $stmt->bindParam(':schema', $schema); $stmt->bindParam(':table', $collection); $stmt->execute(); $results = $stmt->fetchAll(); $stmt->closeCursor(); + foreach ($results as $index => $document) { + $results[$index] = new Document($document); + } + return $results; } catch (PDOException $e) { diff --git a/tests/e2e/Adapter/Base.php b/tests/e2e/Adapter/Base.php index b1ed05374..6cbbfde8e 100644 --- a/tests/e2e/Adapter/Base.php +++ b/tests/e2e/Adapter/Base.php @@ -1321,42 +1321,45 @@ public function testSchemaAttribute(): void $attributes = []; foreach ($db->getSchemaAttributes($collection) as $attribute) { - $attributes[$attribute['COLUMN_NAME']] = $attribute; - } + /** + * @var $attribute Document + */ + $attributes[$attribute->getAttribute('columnName')] = $attribute; + } $attribute = $attributes['username']; - $this->assertEquals('username', $attribute['COLUMN_NAME']); - $this->assertEquals('varchar', $attribute['DATA_TYPE']); - $this->assertEquals('varchar(128)', $attribute['COLUMN_TYPE']); - $this->assertEquals('128', $attribute['CHARACTER_MAXIMUM_LENGTH']); - $this->assertEquals('YES', $attribute['IS_NULLABLE']); + $this->assertEquals('username', $attribute['columnName']); + $this->assertEquals('varchar', $attribute['dataType']); + $this->assertEquals('varchar(128)', $attribute['columnType']); + $this->assertEquals('128', $attribute['characterMaximumLength']); + $this->assertEquals('YES', $attribute['isNullable']); $attribute = $attributes['story']; - $this->assertEquals('story', $attribute['COLUMN_NAME']); - $this->assertEquals('text', $attribute['DATA_TYPE']); - $this->assertEquals('text', $attribute['COLUMN_TYPE']); - $this->assertEquals('65535', $attribute['CHARACTER_MAXIMUM_LENGTH']); + $this->assertEquals('story', $attribute['columnName']); + $this->assertEquals('text', $attribute['dataType']); + $this->assertEquals('text', $attribute['columnType']); + $this->assertEquals('65535', $attribute['characterMaximumLength']); $attribute = $attributes['string_list']; - $this->assertEquals('string_list', $attribute['COLUMN_NAME']); - $this->assertTrue(in_array($attribute['DATA_TYPE'], ['json', 'longtext'])); // mysql vs maria - $this->assertTrue(in_array($attribute['COLUMN_TYPE'], ['json', 'longtext'])); - $this->assertTrue(in_array($attribute['CHARACTER_MAXIMUM_LENGTH'], [null, '4294967295'])); - $this->assertEquals('YES', $attribute['IS_NULLABLE']); + $this->assertEquals('string_list', $attribute['columnName']); + $this->assertTrue(in_array($attribute['dataType'], ['json', 'longtext'])); // mysql vs maria + $this->assertTrue(in_array($attribute['columnType'], ['json', 'longtext'])); + $this->assertTrue(in_array($attribute['characterMaximumLength'], [null, '4294967295'])); + $this->assertEquals('YES', $attribute['isNullable']); $attribute = $attributes['dob']; - $this->assertEquals('dob', $attribute['COLUMN_NAME']); - $this->assertEquals('datetime', $attribute['DATA_TYPE']); - $this->assertEquals('datetime(3)', $attribute['COLUMN_TYPE']); - $this->assertEquals(null, $attribute['CHARACTER_MAXIMUM_LENGTH']); - $this->assertEquals('3', $attribute['DATETIME_PRECISION']); + $this->assertEquals('dob', $attribute['columnName']); + $this->assertEquals('datetime', $attribute['dataType']); + $this->assertEquals('datetime(3)', $attribute['columnType']); + $this->assertEquals(null, $attribute['characterMaximumLength']); + $this->assertEquals('3', $attribute['datetimePrecision']); if ($db->getSharedTables()) { $attribute = $attributes['_tenant']; - $this->assertEquals('_tenant', $attribute['COLUMN_NAME']); - $this->assertEquals('int', $attribute['DATA_TYPE']); - $this->assertEquals('10', $attribute['NUMERIC_PRECISION']); - $this->assertTrue(in_array($attribute['COLUMN_TYPE'], ['int unsigned', 'int(11) unsigned'])); + $this->assertEquals('_tenant', $attribute['columnName']); + $this->assertEquals('int', $attribute['dataType']); + $this->assertEquals('10', $attribute['numericPrecision']); + $this->assertTrue(in_array($attribute['columnType'], ['int unsigned', 'int(11) unsigned'])); } } From 8470c301fddca4b0b3f7b5e8ea241bc7a5a996f8 Mon Sep 17 00:00:00 2001 From: fogelito Date: Sun, 8 Dec 2024 11:20:11 +0200 Subject: [PATCH 7/9] lint --- tests/e2e/Adapter/Base.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/Adapter/Base.php b/tests/e2e/Adapter/Base.php index 6cbbfde8e..f64dfbaa4 100644 --- a/tests/e2e/Adapter/Base.php +++ b/tests/e2e/Adapter/Base.php @@ -1325,7 +1325,7 @@ public function testSchemaAttribute(): void * @var $attribute Document */ $attributes[$attribute->getAttribute('columnName')] = $attribute; - } + } $attribute = $attributes['username']; $this->assertEquals('username', $attribute['columnName']); From c8086fd4a7f51228005da6e2f3ab93050d002494 Mon Sep 17 00:00:00 2001 From: fogelito Date: Sun, 8 Dec 2024 11:26:44 +0200 Subject: [PATCH 8/9] analyze --- tests/e2e/Adapter/Base.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/Adapter/Base.php b/tests/e2e/Adapter/Base.php index f64dfbaa4..d56a987df 100644 --- a/tests/e2e/Adapter/Base.php +++ b/tests/e2e/Adapter/Base.php @@ -1322,7 +1322,7 @@ public function testSchemaAttribute(): void $attributes = []; foreach ($db->getSchemaAttributes($collection) as $attribute) { /** - * @var $attribute Document + * @var Document $attribute */ $attributes[$attribute->getAttribute('columnName')] = $attribute; } From 3fb18dac66bdb7fbc9cd3f7909a8aba5b8b17a01 Mon Sep 17 00:00:00 2001 From: fogelito Date: Sun, 8 Dec 2024 16:22:47 +0200 Subject: [PATCH 9/9] Return array of Documents --- src/Database/Database.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Database/Database.php b/src/Database/Database.php index 130558427..b37f821bc 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -6042,7 +6042,7 @@ public function analyzeCollection(string $collection): bool * Get Schema Attributes * * @param string $collection - * @return array + * @return array * @throws DatabaseException */ public function getSchemaAttributes(string $collection): array