From 938e699b4015c17805efb8d58d91f060b5d453ef Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Thu, 23 Jan 2025 18:03:17 +1300 Subject: [PATCH] Remove redundant method --- src/Database/Adapter.php | 4 +- src/Database/Adapter/MariaDB.php | 13 +----- src/Database/Adapter/Mongo.php | 3 +- src/Database/Adapter/Postgres.php | 3 +- src/Database/Database.php | 36 ++-------------- tests/e2e/Adapter/Base.php | 69 +------------------------------ 6 files changed, 9 insertions(+), 119 deletions(-) diff --git a/src/Database/Adapter.php b/src/Database/Adapter.php index 8f831e7d4..c9cbbdecc 100644 --- a/src/Database/Adapter.php +++ b/src/Database/Adapter.php @@ -640,11 +640,10 @@ abstract public function updateDocuments(string $collection, Document $updates, /** * Create documents if they do not exist, otherwise update them. * - * If both attribute and value are not empty, only the specified attribute will be increased, by the provided value. + * If attribute is not empty, only the specified attribute will be increased, by the new value in each document. * * @param string $collection * @param string $attribute - * @param int|float $value * @param array $documents * @param int $batchSize * @return array @@ -652,7 +651,6 @@ abstract public function updateDocuments(string $collection, Document $updates, abstract public function createOrUpdateDocuments( string $collection, string $attribute, - int|float $value, array $documents, int $batchSize ): array; diff --git a/src/Database/Adapter/MariaDB.php b/src/Database/Adapter/MariaDB.php index aaf3b9d7c..bbb04e722 100644 --- a/src/Database/Adapter/MariaDB.php +++ b/src/Database/Adapter/MariaDB.php @@ -1594,7 +1594,6 @@ public function updateDocuments(string $collection, Document $updates, array $do /** * @param string $collection * @param string $attribute - * @param int|float $value * @param array $documents * @param int $batchSize * @return array @@ -1603,7 +1602,6 @@ public function updateDocuments(string $collection, Document $updates, array $do public function createOrUpdateDocuments( string $collection, string $attribute, - int|float $value, array $documents, int $batchSize ): array { @@ -1664,12 +1662,7 @@ public function createOrUpdateDocuments( $batchKeys[] = '(' . \implode(', ', $bindKeys) . ')'; } - if (!empty($attribute) && !empty($value)) { - // Increment specific column by the specified value - $updateColumns = [ - "`{$attribute}` = `{$attribute}` + :_increment" - ]; - } elseif (!empty($attribute) && empty($value)) { + if (!empty($attribute)) { // Increment specific column by its new value in place $updateColumns = [ "`{$attribute}` = `{$attribute}` + VALUES(`{$attribute}`)" @@ -1694,10 +1687,6 @@ public function createOrUpdateDocuments( $stmt->bindValue($key, $binding, $this->getPDOType($binding)); } - if (!empty($attribute) && !empty($value)) { - $stmt->bindValue(':_increment', $value, $this->getPDOType($value)); - } - $stmt->execute(); // Fetch existing permissions in bulk after data updates diff --git a/src/Database/Adapter/Mongo.php b/src/Database/Adapter/Mongo.php index 27d77ccfe..c5f0522af 100644 --- a/src/Database/Adapter/Mongo.php +++ b/src/Database/Adapter/Mongo.php @@ -894,12 +894,11 @@ public function updateDocuments(string $collection, Document $updates, array $do /** * @param string $collection * @param string $attribute - * @param float|int $value * @param array $documents * @param int $batchSize * @return array */ - public function createOrUpdateDocuments(string $collection, string $attribute, float|int $value, array $documents, int $batchSize): array + public function createOrUpdateDocuments(string $collection, string $attribute, array $documents, int $batchSize): array { return $documents; } diff --git a/src/Database/Adapter/Postgres.php b/src/Database/Adapter/Postgres.php index 127da6bbe..c2b886776 100644 --- a/src/Database/Adapter/Postgres.php +++ b/src/Database/Adapter/Postgres.php @@ -1608,12 +1608,11 @@ public function updateDocuments(string $collection, Document $updates, array $do /** * @param string $collection * @param string $attribute - * @param float|int $value * @param array $documents * @param int $batchSize * @return array */ - public function createOrUpdateDocuments(string $collection, string $attribute, float|int $value, array $documents, int $batchSize): array + public function createOrUpdateDocuments(string $collection, string $attribute, array $documents, int $batchSize): array { return $documents; } diff --git a/src/Database/Database.php b/src/Database/Database.php index 88958bed8..1ccea9ec8 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -425,7 +425,7 @@ function (mixed $value) { $value = new \DateTime($value); $value->setTimezone(new \DateTimeZone(date_default_timezone_get())); return DateTime::format($value); - } catch (\Throwable $th) { + } catch (\Throwable) { return $value; } }, @@ -4536,7 +4536,7 @@ private function getJunctionCollection(Document $collection, Document $relatedCo } /** - * Create or update documents + * Create or update documents. * * @param string $collection * @param array $documents @@ -4552,14 +4552,13 @@ public function createOrUpdateDocuments( return $this->createOrUpdateDocumentsWithIncrease( $collection, '', - 0, $documents, $batchSize ); } /** - * Create or update documents + * Create or update documents, increasing the value of the given attribute by the value in each document. * * @param string $collection * @param string $attribute @@ -4568,37 +4567,11 @@ public function createOrUpdateDocuments( * @return array * @throws StructureException * @throws \Throwable - */ - public function createOrUpdateDocumentsWithInplaceIncrease( - string $collection, - string $attribute, - array $documents, - int $batchSize = self::INSERT_BATCH_SIZE - ): array { - return $this->createOrUpdateDocumentsWithIncrease( - $collection, - $attribute, - 0, - $documents, - $batchSize - ); - } - - /** - * @param string $collection - * @param string $attribute - * @param int|float $value - * @param array $documents - * @param int $batchSize - * @return array - * @throws StructureException - * @throws \Throwable * @throws Exception */ public function createOrUpdateDocumentsWithIncrease( string $collection, string $attribute, - int|float $value, array $documents, int $batchSize = self::INSERT_BATCH_SIZE ): array { @@ -4652,11 +4625,10 @@ public function createOrUpdateDocumentsWithIncrease( $documents[$key] = $document; } - $documents = $this->withTransaction(function () use ($collection, $attribute, $value, $documents, $batchSize) { + $documents = $this->withTransaction(function () use ($collection, $attribute, $documents, $batchSize) { return $this->adapter->createOrUpdateDocuments( $collection->getId(), $attribute, - $value, $documents, $batchSize, ); diff --git a/tests/e2e/Adapter/Base.php b/tests/e2e/Adapter/Base.php index 815d55b84..0c0662a82 100644 --- a/tests/e2e/Adapter/Base.php +++ b/tests/e2e/Adapter/Base.php @@ -2341,73 +2341,6 @@ public function testCreateOrUpdateDocumentsWithIncrease(): void return; } - $collection = 'testCreateOrUpdateWithIncrease'; - - static::getDatabase()->createCollection($collection); - static::getDatabase()->createAttribute($collection, 'string', Database::VAR_STRING, 128, true); - static::getDatabase()->createAttribute($collection, 'integer', Database::VAR_INTEGER, 0, true); - - $documents = [ - new Document([ - '$id' => 'first', - 'string' => 'text📝', - 'integer' => 5, - '$permissions' => [ - Permission::read(Role::any()), - Permission::create(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - ]), - new Document([ - '$id' => 'second', - 'string' => 'text📝', - 'integer' => 5, - '$permissions' => [ - Permission::read(Role::any()), - Permission::create(Role::any()), - Permission::update(Role::any()), - Permission::delete(Role::any()), - ], - ]), - ]; - - static::getDatabase()->createDocuments($collection, $documents); - - static::getDatabase()->createOrUpdateDocumentsWithIncrease( - collection: $collection, - attribute:'integer', - value: 1, - documents: $documents - ); - - $documents = static::getDatabase()->find($collection); - - foreach ($documents as $document) { - $this->assertEquals(6, $document->getAttribute('integer')); - } - - static::getDatabase()->createOrUpdateDocumentsWithIncrease( - collection: $collection, - attribute:'integer', - value: -1, - documents: $documents - ); - - $documents = static::getDatabase()->find($collection); - - foreach ($documents as $document) { - $this->assertEquals(5, $document->getAttribute('integer')); - } - } - - public function testCreateOrUpdateDocumentsWithInplaceIncrease(): void - { - if (!static::getDatabase()->getAdapter()->getSupportForUpserts()) { - $this->expectNotToPerformAssertions(); - return; - } - $collection = 'testCreateOrUpdateInplace'; static::getDatabase()->createCollection($collection); @@ -2444,7 +2377,7 @@ public function testCreateOrUpdateDocumentsWithInplaceIncrease(): void $documents[0]->setAttribute('integer', 1); $documents[1]->setAttribute('integer', 1); - static::getDatabase()->createOrUpdateDocumentsWithInplaceIncrease( + static::getDatabase()->createOrUpdateDocumentsWithIncrease( collection: $collection, attribute:'integer', documents: $documents