Skip to content

Commit 1f77f32

Browse files
committed
Merge branch '5.1'
* 5.1: fix merge stop using the deprecated schema synchronizer API
2 parents 28ede1f + 60ce71e commit 1f77f32

File tree

3 files changed

+29
-22
lines changed

3 files changed

+29
-22
lines changed

src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/ConnectionTest.php

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
use Doctrine\DBAL\Schema\AbstractSchemaManager;
1919
use Doctrine\DBAL\Schema\Schema;
2020
use Doctrine\DBAL\Schema\SchemaConfig;
21-
use Doctrine\DBAL\Schema\Synchronizer\SchemaSynchronizer;
2221
use Doctrine\DBAL\Statement;
2322
use PHPUnit\Framework\TestCase;
2423
use Symfony\Component\Messenger\Bridge\Doctrine\Tests\Fixtures\DummyMessage;
@@ -30,7 +29,6 @@ public function testGetAMessageWillChangeItsStatus()
3029
{
3130
$queryBuilder = $this->getQueryBuilderMock();
3231
$driverConnection = $this->getDBALConnectionMock();
33-
$schemaSynchronizer = $this->getSchemaSynchronizerMock();
3432
$stmt = $this->getResultMock([
3533
'id' => 1,
3634
'body' => '{"message":"Hi"}',
@@ -53,7 +51,7 @@ public function testGetAMessageWillChangeItsStatus()
5351
->method('executeQuery')
5452
->willReturn($stmt);
5553

56-
$connection = new Connection([], $driverConnection, $schemaSynchronizer);
54+
$connection = new Connection([], $driverConnection);
5755
$doctrineEnvelope = $connection->get();
5856
$this->assertEquals(1, $doctrineEnvelope['id']);
5957
$this->assertEquals('{"message":"Hi"}', $doctrineEnvelope['body']);
@@ -64,7 +62,6 @@ public function testGetWithNoPendingMessageWillReturnNull()
6462
{
6563
$queryBuilder = $this->getQueryBuilderMock();
6664
$driverConnection = $this->getDBALConnectionMock();
67-
$schemaSynchronizer = $this->getSchemaSynchronizerMock();
6865
$stmt = $this->getResultMock(false);
6966

7067
$queryBuilder
@@ -82,7 +79,7 @@ public function testGetWithNoPendingMessageWillReturnNull()
8279
->method('executeQuery')
8380
->willReturn($stmt);
8481

85-
$connection = new Connection([], $driverConnection, $schemaSynchronizer);
82+
$connection = new Connection([], $driverConnection);
8683
$doctrineEnvelope = $connection->get();
8784
$this->assertNull($doctrineEnvelope);
8885
}
@@ -155,11 +152,6 @@ private function getResultMock($expectedResult)
155152
return $stmt;
156153
}
157154

158-
private function getSchemaSynchronizerMock(): SchemaSynchronizer
159-
{
160-
return $this->createMock(SchemaSynchronizer::class);
161-
}
162-
163155
/**
164156
* @dataProvider buildConfigurationProvider
165157
*/
@@ -264,7 +256,6 @@ public function testFind()
264256
{
265257
$queryBuilder = $this->getQueryBuilderMock();
266258
$driverConnection = $this->getDBALConnectionMock();
267-
$schemaSynchronizer = $this->getSchemaSynchronizerMock();
268259
$id = 1;
269260
$stmt = $this->getResultMock([
270261
'id' => $id,
@@ -288,7 +279,7 @@ public function testFind()
288279
->method('executeQuery')
289280
->willReturn($stmt);
290281

291-
$connection = new Connection([], $driverConnection, $schemaSynchronizer);
282+
$connection = new Connection([], $driverConnection);
292283
$doctrineEnvelope = $connection->find($id);
293284
$this->assertEquals(1, $doctrineEnvelope['id']);
294285
$this->assertEquals('{"message":"Hi"}', $doctrineEnvelope['body']);
@@ -299,7 +290,6 @@ public function testFindAll()
299290
{
300291
$queryBuilder = $this->getQueryBuilderMock();
301292
$driverConnection = $this->getDBALConnectionMock();
302-
$schemaSynchronizer = $this->getSchemaSynchronizerMock();
303293
$message1 = [
304294
'id' => 1,
305295
'body' => '{"message":"Hi"}',
@@ -335,7 +325,7 @@ public function testFindAll()
335325
->method('executeQuery')
336326
->willReturn($stmt);
337327

338-
$connection = new Connection([], $driverConnection, $schemaSynchronizer);
328+
$connection = new Connection([], $driverConnection);
339329
$doctrineEnvelopes = $connection->findAll();
340330

341331
$this->assertEquals(1, $doctrineEnvelopes[0]['id']);

src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/PostgreSqlConnectionTest.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
namespace Symfony\Component\Messenger\Bridge\Doctrine\Tests\Transport;
1313

14-
use Doctrine\DBAL\Schema\Synchronizer\SchemaSynchronizer;
1514
use Doctrine\DBAL\Schema\Table;
1615
use PHPUnit\Framework\TestCase;
1716
use Symfony\Component\Messenger\Bridge\Doctrine\Transport\PostgreSqlConnection;
@@ -26,10 +25,9 @@ public function testSerialize()
2625
$this->expectException(\BadMethodCallException::class);
2726
$this->expectExceptionMessage('Cannot serialize '.PostgreSqlConnection::class);
2827

29-
$schemaSynchronizer = $this->createMock(SchemaSynchronizer::class);
3028
$driverConnection = $this->createMock(\Doctrine\DBAL\Connection::class);
3129

32-
$connection = new PostgreSqlConnection([], $driverConnection, $schemaSynchronizer);
30+
$connection = new PostgreSqlConnection([], $driverConnection);
3331
serialize($connection);
3432
}
3533

@@ -38,10 +36,9 @@ public function testUnserialize()
3836
$this->expectException(\BadMethodCallException::class);
3937
$this->expectExceptionMessage('Cannot unserialize '.PostgreSqlConnection::class);
4038

41-
$schemaSynchronizer = $this->createMock(SchemaSynchronizer::class);
4239
$driverConnection = $this->createMock(\Doctrine\DBAL\Connection::class);
4340

44-
$connection = new PostgreSqlConnection([], $driverConnection, $schemaSynchronizer);
41+
$connection = new PostgreSqlConnection([], $driverConnection);
4542
$connection->__wakeup();
4643
}
4744

src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/Connection.php

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
use Doctrine\DBAL\Driver\Result;
1717
use Doctrine\DBAL\Exception\TableNotFoundException;
1818
use Doctrine\DBAL\Query\QueryBuilder;
19+
use Doctrine\DBAL\Schema\Comparator;
1920
use Doctrine\DBAL\Schema\Schema;
2021
use Doctrine\DBAL\Schema\Synchronizer\SchemaSynchronizer;
21-
use Doctrine\DBAL\Schema\Synchronizer\SingleDatabaseSynchronizer;
2222
use Doctrine\DBAL\Schema\Table;
2323
use Doctrine\DBAL\Types\Types;
2424
use Symfony\Component\Messenger\Exception\InvalidArgumentException;
@@ -63,7 +63,7 @@ public function __construct(array $configuration, DBALConnection $driverConnecti
6363
{
6464
$this->configuration = array_replace_recursive(static::DEFAULT_OPTIONS, $configuration);
6565
$this->driverConnection = $driverConnection;
66-
$this->schemaSynchronizer = $schemaSynchronizer ?? new SingleDatabaseSynchronizer($this->driverConnection);
66+
$this->schemaSynchronizer = $schemaSynchronizer;
6767
$this->autoSetup = $this->configuration['auto_setup'];
6868
}
6969

@@ -226,7 +226,7 @@ public function setup(): void
226226
$configuration = $this->driverConnection->getConfiguration();
227227
$assetFilter = $configuration->getSchemaAssetsFilter();
228228
$configuration->setSchemaAssetsFilter(null);
229-
$this->schemaSynchronizer->updateSchema($this->getSchema(), true);
229+
$this->updateSchema();
230230
$configuration->setSchemaAssetsFilter($assetFilter);
231231
$this->autoSetup = false;
232232
}
@@ -406,5 +406,25 @@ private function decodeEnvelopeHeaders(array $doctrineEnvelope): array
406406

407407
return $doctrineEnvelope;
408408
}
409+
410+
private function updateSchema(): void
411+
{
412+
if (null !== $this->schemaSynchronizer) {
413+
$this->schemaSynchronizer->updateSchema($this->getSchema(), true);
414+
415+
return;
416+
}
417+
418+
$comparator = new Comparator();
419+
$schemaDiff = $comparator->compare($this->driverConnection->getSchemaManager()->createSchema(), $this->getSchema());
420+
421+
foreach ($schemaDiff->toSaveSql($this->driverConnection->getDatabasePlatform()) as $sql) {
422+
if (method_exists($this->driverConnection, 'executeStatement')) {
423+
$this->driverConnection->executeStatement($sql);
424+
} else {
425+
$this->driverConnection->exec($sql);
426+
}
427+
}
428+
}
409429
}
410430
class_alias(Connection::class, \Symfony\Component\Messenger\Transport\Doctrine\Connection::class);

0 commit comments

Comments
 (0)