8000 stop using the deprecated schema synchronizer API · symfony/symfony@40129d6 · GitHub
[go: up one dir, main page]

Skip to content

Commit 40129d6

Browse files
committed
stop using the deprecated schema synchronizer API
1 parent 1f4c616 commit 40129d6

File tree

2 files changed

+27
-17
lines changed

2 files changed

+27
-17
lines changed

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

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
use Doctrine\DBAL\Query\QueryBuilder;
1818
use Doctrine\DBAL\Schema\AbstractSchemaManager;
1919
use Doctrine\DBAL\Schema\SchemaConfig;
20-
use Doctrine\DBAL\Schema\Synchronizer\SchemaSynchronizer;
2120
use Doctrine\DBAL\Statement;
2221
use PHPUnit\Framework\TestCase;
2322
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
@@ -29,7 +28,6 @@ public function testGetAMessageWillChangeItsStatus()
2928
{
3029
$queryBuilder = $this->getQueryBuilderMock();
3130
$driverConnection = $this->getDBALConnectionMock();
32-
$schemaSynchronizer = $this->getSchemaSynchronizerMock();
3331
$stmt = $this->getResultMock([
3432
'id' => 1,
3533
'body' => '{"message":"Hi"}',
@@ -52,7 +50,7 @@ public function testGetAMessageWillChangeItsStatus()
5250
->method('executeQuery')
5351
->willReturn($stmt);
5452

55-
$connection = new Connection([], $driverConnection, $schemaSynchronizer);
53+
$connection = new Connection([], $driverConnection);
5654
$doctrineEnvelope = $connection->get();
5755
$this->assertEquals(1, $doctrineEnvelope['id']);
5856
$this->assertEquals('{"message":"Hi"}', $doctrineEnvelope['body']);
@@ -63,7 +61,6 @@ public function testGetWithNoPendingMessageWillReturnNull()
6361
{
6462
$queryBuilder = $this->getQueryBuilderMock();
6563
10000 $driverConnection = $this->getDBALConnectionMock();
66-
$schemaSynchronizer = $this->getSchemaSynchronizerMock();
6764
$stmt = $this->getResultMock(false);
6865

6966
$queryBuilder
@@ -81,7 +78,7 @@ public function testGetWithNoPendingMessageWillReturnNull()
8178
->method('executeQuery')
8279
->willReturn($stmt);
8380

84-
$connection = new Connection([], $driverConnection, $schemaSynchronizer);
81+
$connection = new Connection([], $driverConnection);
8582
$doctrineEnvelope = $connection->get();
8683
$this->assertNull($doctrineEnvelope);
8784
}
@@ -154,11 +151,6 @@ private function getResultMock($expectedResult)
154151
return $stmt;
155152
}
156153

157-
private function getSchemaSynchronizerMock(): SchemaSynchronizer
158-
{
159-
return $this->createMock(SchemaSynchronizer::class);
160-
}
161-
162154
/**
163155
* @dataProvider buildConfigurationProvider
164156
*/
@@ -261,7 +253,6 @@ public function testFind()
261253
{
262254
$queryBuilder = $this->getQueryBuilderMock();
263255
$driverConnection = $this->getDBALConnectionMock();
264-
$schemaSynchronizer = $this->getSchemaSynchronizerMock();
265256
$id = 1;
266257
$stmt = $this->getResultMock([
267258
'id' => $id,
@@ -285,7 +276,7 @@ public function testFind()
285276
->method('executeQuery')
286277
->willReturn($stmt);
287278

288-
$connection = new Connection([], $driverConnection, $schemaSynchronizer);
279+
$connection = new Connection([], $driverConnection);
289280
$doctrineEnvelope = $connection->find($id);
290281
$this->assertEquals(1, $doctrineEnvelope['id']);
291282
$this->assertEquals('{"message":"Hi"}', $doctrineEnvelope['body']);
@@ -296,7 +287,6 @@ public function testFindAll()
296287
{
297288
$queryBuilder = $this->getQueryBuilderMock();
298289
$driverConnection = $this->getDBALConnectionMock();
299-
$schemaSynchronizer = $this->getSchemaSynchronizerMock();
300290
$message1 = [
301291
'id' => 1,
302292
'body' => '{"message":"Hi"}',
@@ -332,7 +322,7 @@ public function testFindAll()
332322
->method('executeQuery')
333323
->willReturn($stmt);
334324

335-
$connection = new Connection([], $driverConnection, $schemaSynchronizer);
325+
$connection = new Connection([], $driverConnection);
336326
$doctrineEnvelopes = $connection->findAll();
337327

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

src/Symfony/Component/Messenger/Transport/Doctrine/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\Types\Type;
2323
use Doctrine\DBAL\Types\Types;
2424
use Symfony\Component\Messenger\Exception\InvalidArgumentException;
@@ -60,7 +60,7 @@ public function __construct(array $configuration, DBALConnection $driverConnecti
6060
{
6161
$this->configuration = array_replace_recursive(self::DEFAULT_OPTIONS, $configuration);
6262
$this->driverConnection = $driverConnection;
63-
$this->schemaSynchronizer = $schemaSynchronizer ?? new SingleDatabaseSynchronizer($this->driverConnection);
63+
$this->schemaSynchronizer = $schemaSynchronizer;
6464
$this->autoSetup = $this->configuration['auto_setup'];
6565

6666
if (null === self::$useDeprecatedConstants) {
@@ -233,7 +233,7 @@ public function setup(): void
233233
$this->driverConnection->getConfiguration()->setFilterSchemaAssetsExpression(null);
234234
}
235235

236-
$this->schemaSynchronizer->updateSchema($this->getSchema(), true);
236+
$this->updateSchema();
237237

238238
if ($hasFilterCallback) {
239239
$this->driverConnection->getConfiguration()->setSchemaAssetsFilter($assetFilter);
@@ -390,4 +390,24 @@ private function decodeEnvelopeHeaders(array $doctrineEnvelope): array
390390

391391
return $doctrineEnvelope;
392392
}
393+
394+
private function updateSchema(): void
395+
{
396+
if (null !== $this->schemaSynchronizer) {
397+
$this->schemaSynchronizer->updateSchema($this->getSchema(), true);
398+
399+
return;
400+
}
401+
402+
$comparator = new Comparator();
403+
$schemaDiff = $comparator->compare($this->driverConnection->getSchemaManager()->createSchema(), $this->getSchema());
404+
405+
foreach ($schemaDiff->toSaveSql($this->driverConnection->getDatabasePlatform()) as $sql) {
406+
if (method_exists($this->driverConnection, 'executeStatement')) {
407+
$this->driverConnection->executeStatement($sql);
408+
} else {
409+
$this->driverConnection->exec($sql);
410+
}
411+
}
412+
}
393413
}

0 commit comments

Comments
 (0)
0