From b976273db82c48f085719f01b09f2ce714a563ad Mon Sep 17 00:00:00 2001 From: Dimitri BOUTEILLE Date: Wed, 9 Oct 2024 21:45:21 +0200 Subject: [PATCH 1/2] Extends WordPressGrammar from MySqlGrammar --- src/Orm/Query/Grammars/WordPressGrammar.php | 36 +-------------------- 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/src/Orm/Query/Grammars/WordPressGrammar.php b/src/Orm/Query/Grammars/WordPressGrammar.php index c1179764..75f555ec 100644 --- a/src/Orm/Query/Grammars/WordPressGrammar.php +++ b/src/Orm/Query/Grammars/WordPressGrammar.php @@ -8,42 +8,8 @@ namespace Dbout\WpOrm\Orm\Query\Grammars; -use Illuminate\Database\Query\Builder; -use Illuminate\Database\Query\Grammars\Grammar; use Illuminate\Database\Query\Grammars\MySqlGrammar; -/** - * @todo Extend from MySqlGrammar next major version - * @see MySqlGrammar - */ -class WordPressGrammar extends Grammar +class WordPressGrammar extends MySqlGrammar { - /** - * @inheritDoc - */ - public function compileUpsert(Builder $query, array $values, array $uniqueBy, array $update): string - { - // @phpstan-ignore-next-line - $useUpsertAlias = $query->connection->getConfig('use_upsert_alias'); - - $sql = $this->compileInsert($query, $values); - - if ($useUpsertAlias) { - $sql .= ' as laravel_upsert_alias'; - } - - $sql .= ' on duplicate key update '; - - $columns = collect($update)->map(function ($value, $key) use ($useUpsertAlias) { - if (! is_numeric($key)) { - return $this->wrap($key).' = '.$this->parameter($value); - } - - return $useUpsertAlias - ? $this->wrap($value).' = '.$this->wrap('laravel_upsert_alias').'.'.$this->wrap($value) - : $this->wrap($value).' = values('.$this->wrap($value).')'; - })->implode(', '); - - return $sql.$columns; - } } From 1a2eb340c75db0899714d04a20e56ff551ed08c5 Mon Sep 17 00:00:00 2001 From: Dimitri BOUTEILLE Date: Wed, 9 Oct 2024 21:48:37 +0200 Subject: [PATCH 2/2] Update WordPress\Orm\DatabaseTest --- tests/WordPress/Orm/DatabaseTest.php | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/tests/WordPress/Orm/DatabaseTest.php b/tests/WordPress/Orm/DatabaseTest.php index 62df1b4d..c46ac5fc 100644 --- a/tests/WordPress/Orm/DatabaseTest.php +++ b/tests/WordPress/Orm/DatabaseTest.php @@ -12,9 +12,6 @@ use Dbout\WpOrm\Orm\Database; use Dbout\WpOrm\Tests\WordPress\TestCase; -/** - * @coversDefaultClass \Dbout\WpOrm\Orm\Database - */ class DatabaseTest extends TestCase { private Database $database; @@ -29,7 +26,7 @@ public function setUp(): void /** * @return void - * @covers ::getTablePrefix + * @covers Database::getTablePrefix */ public function testGetTablePrefix(): void { @@ -39,8 +36,8 @@ public function testGetTablePrefix(): void /** * @return void - * @covers ::getDatabaseName - * @covers ::getConfig + * @covers Database::getDatabaseName + * @covers Database::getConfig */ public function testGetDatabaseName(): void { @@ -49,8 +46,8 @@ public function testGetDatabaseName(): void /** * @return void - * @covers ::getName - * @covers ::getConfig + * @covers Database::getName + * @covers Database::getConfig */ public function testGetName(): void { @@ -62,7 +59,7 @@ public function testGetName(): void * @param string|null $alias * @param string $expectedQuery * @return void - * @covers ::table + * @covers Database::table * @dataProvider providerTestTable */ public function testTable(string $table, ?string $alias, string $expectedQuery): void @@ -79,19 +76,19 @@ protected function providerTestTable(): \Generator yield 'Without alias' => [ 'options', null, - sprintf('select * from "%s"', $this->getTable('options')), + sprintf('select * from `%s`', $this->getTable('options')), ]; yield 'With alias' => [ 'options', 'opts', - sprintf('select * from "%s" as "opts"', $this->getTable('options')), + sprintf('select * from `%s` as `opts`', $this->getTable('options')), ]; } /** * @return void - * @covers ::lastInsertId + * @covers Database::lastInsertId */ public function testLastInsertId(): void {