From ec0d1cf554af6a72756ddfaa745ce44c7d4e1200 Mon Sep 17 00:00:00 2001 From: Rafa Couto Date: Mon, 11 Jul 2022 21:20:10 +0200 Subject: [PATCH 1/2] New MySQLPDOLock class on NinjaMutex and MySQL driver with options (#28) * New MySQLPDOLock class on NinjaMutex and MySQL driver with options * Compliance with styleci --- composer.json | 2 +- src/Mutex.php | 11 +++++++---- tests/MutexTest.php | 11 +++++++---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/composer.json b/composer.json index b77b59a..958f2e4 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,7 @@ }], "require": { "php": "^8.0.2", - "arvenil/ninja-mutex": "^0.6", + "arvenil/ninja-mutex": "dev-master#82cbb2c", "illuminate/console": "^9.0", "illuminate/support": "^9.0", "ramsey/collection": "^1.2" diff --git a/src/Mutex.php b/src/Mutex.php index 150535d..9da07cd 100644 --- a/src/Mutex.php +++ b/src/Mutex.php @@ -8,7 +8,7 @@ use NinjaMutex\Lock\FlockLock; use NinjaMutex\Lock\LockAbstract; use NinjaMutex\Lock\MemcachedLock; -use NinjaMutex\Lock\MySqlLock; +use NinjaMutex\Lock\MySQLPDOLock; use NinjaMutex\Lock\PhpRedisLock; use NinjaMutex\Lock\PredisRedisLock; use NinjaMutex\Mutex as NinjaMutex; @@ -58,11 +58,14 @@ public function getNinjaMutexLock(): LockAbstract $strategy = $this->command->getMutexStrategy(); switch ($strategy) { case 'mysql': - return new MySqlLock( + return new MySQLPDOLock( + 'mysql:' . implode(';', [ + 'host=' . config('database.connections.mysql.host'), + 'port=' . config('database.connections.mysql.port', 3306), + ]), config('database.connections.mysql.username'), config('database.connections.mysql.password'), - config('database.connections.mysql.host'), - config('database.connections.mysql.port', 3306) + config('database.connections.mysql.options') ); case 'redis': diff --git a/tests/MutexTest.php b/tests/MutexTest.php index 7924223..29b6b1a 100644 --- a/tests/MutexTest.php +++ b/tests/MutexTest.php @@ -10,7 +10,7 @@ use Mockery\Mock; use NinjaMutex\Lock\FlockLock; use NinjaMutex\Lock\MemcachedLock; -use NinjaMutex\Lock\MySqlLock; +use NinjaMutex\Lock\MySQLPDOLock; use NinjaMutex\Lock\PhpRedisLock; use NinjaMutex\Lock\PredisRedisLock; use Predis\Client as PredisClient; @@ -65,11 +65,14 @@ public function it_supports_mysql_strategy() $this->command->expects('getMutexStrategy')->andReturn('mysql'); $mutex = new Mutex($this->command); - $expectedLock = new MySqlLock( + $expectedLock = new MySqlPdoLock( + 'mysql:' . implode(';', [ + 'host=' . config('database.connections.mysql.host'), + 'port=' . config('database.connections.mysql.port', 3306), + ]), config('database.connections.mysql.username'), config('database.connections.mysql.password'), - config('database.connections.mysql.host'), - config('database.connections.mysql.port', 3306) + config('database.connections.mysql.options') ); $this->assertEquals($expectedLock, $mutex->getNinjaMutexLock()); } From 17ef96efb36ccef0a3c0577a10ff07f770ddc301 Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Mon, 11 Jul 2022 22:26:43 +0300 Subject: [PATCH 2/2] Minor fixes --- src/Mutex.php | 4 ++-- tests/MutexTest.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Mutex.php b/src/Mutex.php index 9da07cd..c77a766 100644 --- a/src/Mutex.php +++ b/src/Mutex.php @@ -38,7 +38,7 @@ class Mutex */ public function __construct(Command $command) { - /** @var WithoutOverlapping $command */ + /** @var Command|WithoutOverlapping $command */ $this->command = $command; $mutexName = $command->getMutexName(); @@ -65,7 +65,7 @@ public function getNinjaMutexLock(): LockAbstract ]), config('database.connections.mysql.username'), config('database.connections.mysql.password'), - config('database.connections.mysql.options') + config('database.connections.mysql.options'), ); case 'redis': diff --git a/tests/MutexTest.php b/tests/MutexTest.php index 29b6b1a..7365bc5 100644 --- a/tests/MutexTest.php +++ b/tests/MutexTest.php @@ -72,7 +72,7 @@ public function it_supports_mysql_strategy() ]), config('database.connections.mysql.username'), config('database.connections.mysql.password'), - config('database.connections.mysql.options') + config('database.connections.mysql.options'), ); $this->assertEquals($expectedLock, $mutex->getNinjaMutexLock()); }