Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 96c227a

Browse files
[Messenger] Preserve existing Doctrine schema
1 parent cc42fa7 commit 96c227a

File tree

12 files changed

+45
-30
lines changed

12 files changed

+45
-30
lines changed

src/Symfony/Component/Cache/Adapter/DoctrineDbalAdapter.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory;
2323
use Doctrine\DBAL\Schema\Schema;
2424
use Doctrine\DBAL\Tools\DsnParser;
25-
use Doctrine\ORM\ORMSetup;
2625
use Symfony\Component\Cache\Exception\InvalidArgumentException;
2726
use Symfony\Component\Cache\Marshaller\DefaultMarshaller;
2827
use Symfony\Component\Cache\Marshaller\MarshallerInterface;
@@ -89,7 +88,7 @@ public function __construct($connOrDsn, string $namespace = '', int $defaultLife
8988
$params = ['url' => $connOrDsn];
9089
}
9190

92-
$config = class_exists(ORMSetup::class) ? ORMSetup::createConfiguration() : new Configuration();
91+
$config = new Configuration();
9392
if (class_exists(DefaultSchemaManagerFactory::class)) {
9493
$config->setSchemaManagerFactory(new DefaultSchemaManagerFactory());
9594
}

src/Symfony/Component/Cache/Tests/Adapter/DoctrineDbalAdapterTest.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
use Doctrine\DBAL\DriverManager;
1919
use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory;
2020
use Doctrine\DBAL\Schema\Schema;
21-
use Doctrine\ORM\ORMSetup;
2221
use PHPUnit\Framework\SkippedTestSuiteError;
2322
use Psr\Cache\CacheItemPoolInterface;
2423
use Symfony\Component\Cache\Adapter\DoctrineDbalAdapter;
@@ -160,7 +159,7 @@ private function createConnectionMock()
160159

161160
private function getDbalConfig()
162161
{
163-
$config = class_exists(ORMSetup::class) ? ORMSetup::createConfiguration(true) : new Configuration();
162+
$config = new Configuration();
164163
if (class_exists(DefaultSchemaManagerFactory::class)) {
165164
$config->setSchemaManagerFactory(new DefaultSchemaManagerFactory());
166165
}

src/Symfony/Component/Cache/Tests/Adapter/PdoDbalAdapterTest.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
use Doctrine\DBAL\DriverManager;
1919
use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory;
2020
use Doctrine\DBAL\Schema\Schema;
21-
use Doctrine\ORM\ORMSetup;
2221
use PHPUnit\Framework\SkippedTestSuiteError;
2322
use Psr\Cache\CacheItemPoolInterface;
2423
use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
@@ -176,7 +175,7 @@ private function createConnectionMock()
176175

177176
private function getDbalConfig(): Configuration
178177
{
179-
$config = class_exists(ORMSetup::class) ? ORMSetup::createConfiguration(true) : new Configuration();
178+
$config = new Configuration();
180179
if (class_exists(DefaultSchemaManagerFactory::class)) {
181180
$config->setSchemaManagerFactory(new DefaultSchemaManagerFactory());
182181
}

src/Symfony/Component/HttpFoundation/Session/Storage/Handler/SessionHandlerFactory.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
use Doctrine\DBAL\DriverManager;
1616
use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory;
1717
use Doctrine\DBAL\Tools\DsnParser;
18-
use Doctrine\ORM\ORMSetup;
1918
use Symfony\Component\Cache\Adapter\AbstractAdapter;
2019
use Symfony\Component\Cache\Traits\RedisClusterProxy;
2120
use Symfony\Component\Cache\Traits\RedisProxy;
@@ -77,7 +76,7 @@ public static function createHandler($connection): AbstractSessionHandler
7776
}
7877
$connection[3] = '-';
7978
$params = class_exists(DsnParser::class) ? (new DsnParser())->parse($connection) : ['url' => $connection];
80-
$config = class_exists(ORMSetup::class) ? ORMSetup::createConfiguration(true) : new Configuration();
79+
$config = new Configuration();
8180
if (class_exists(DefaultSchemaManagerFactory::class)) {
8281
$config->setSchemaManagerFactory(new DefaultSchemaManagerFactory());
8382
}

src/Symfony/Component/Lock/Store/DoctrineDbalPostgreSqlStore.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
use Doctrine\DBAL\Platforms\PostgreSQLPlatform;
1818
use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory;
1919
use Doctrine\DBAL\Tools\DsnParser;
20-
use Doctrine\ORM\ORMSetup;
2120
use Symfony\Component\Lock\BlockingSharedLockStoreInterface;
2221
use Symfony\Component\Lock\BlockingStoreInterface;
2322
use Symfony\Component\Lock\Exception\InvalidArgumentException;
@@ -71,7 +70,7 @@ public function __construct($connOrUrl)
7170
$params = ['url' => $this->filterDsn($connOrUrl)];
7271
}
7372

74-
$config = class_exists(ORMSetup::class) ? ORMSetup::createConfiguration() : new Configuration();
73+
$config = new Configuration();
7574
if (class_exists(DefaultSchemaManagerFactory::class)) {
7675
$config->setSchemaManagerFactory(new DefaultSchemaManagerFactory());
7776
}

src/Symfony/Component/Lock/Store/DoctrineDbalStore.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory;
2121
use Doctrine\DBAL\Schema\Schema;
2222
use Doctrine\DBAL\Tools\DsnParser;
23-
use Doctrine\ORM\ORMSetup;
2423
use Symfony\Component\Lock\Exception\InvalidArgumentException;
2524
use Symfony\Component\Lock\Exception\InvalidTtlException;
2625
use Symfony\Component\Lock\Exception\LockConflictedException;
@@ -88,7 +87,7 @@ public function __construct($connOrUrl, array $options = [], float $gcProbabilit
8887
$params = ['url' => $connOrUrl];
8988
}
9089

91-
$config = class_exists(ORMSetup::class) ? ORMSetup::createConfiguration() : new Configuration();
90+
$config = new Configuration();
9291
if (class_exists(DefaultSchemaManagerFactory::class)) {
9392
$config->setSchemaManagerFactory(new DefaultSchemaManagerFactory());
9493
}

src/Symfony/Component/Lock/Tests/Store/DoctrineDbalPostgreSqlStoreTest.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
use Doctrine\DBAL\Exception as DBALException;
1818
use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory;
1919
use Doctrine\DBAL\Tools\DsnParser;
20-
use Doctrine\ORM\ORMSetup;
2120
use Symfony\Component\Lock\Exception\InvalidArgumentException;
2221
use Symfony\Component\Lock\Exception\LockConflictedException;
2322
use Symfony\Component\Lock\Key;
@@ -176,7 +175,7 @@ public function testWaitAndSaveReadAfterConflictReleasesLockFromInternalStore()
176175
private static function getDbalConnection(string $dsn): Connection
177176
{
178177
$params = class_exists(DsnParser::class) ? (new DsnParser(['sqlite' => 'pdo_sqlite']))->parse($dsn) : ['url' => $dsn];
179-
$config = class_exists(ORMSetup::class) ? ORMSetup::createConfiguration(true) : new Configuration();
178+
$config = new Configuration();
180179
if (class_exists(DefaultSchemaManagerFactory::class)) {
181180
$config->setSchemaManagerFactory(new DefaultSchemaManagerFactory());
182181
}

src/Symfony/Component/Lock/Tests/Store/DoctrineDbalStoreTest.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
use Doctrine\DBAL\Exception\TableNotFoundException;
1818
use Doctrine\DBAL\Platforms\AbstractPlatform;
1919
use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory;
20-
use Doctrine\ORM\ORMSetup;
2120
use Symfony\Component\Lock\Key;
2221
use Symfony\Component\Lock\PersistingStoreInterface;
2322
use Symfony\Component\Lock\Store\DoctrineDbalStore;
@@ -39,7 +38,7 @@ public static function setUpBeforeClass(): void
3938
{
4039
self::$dbFile = tempnam(sys_get_temp_dir(), 'sf_sqlite_lock');
4140

42-
$config = class_exists(ORMSetup::class) ? ORMSetup::createConfiguration(true) : new Configuration();
41+
$config = new Configuration();
4342
if (class_exists(DefaultSchemaManagerFactory::class)) {
4443
$config->setSchemaManagerFactory(new DefaultSchemaManagerFactory());
4544
}
@@ -66,7 +65,7 @@ protected function getClockDelay()
6665
*/
6766
public function getStore(): PersistingStoreInterface
6867
{
69-
$config = class_exists(ORMSetup::class) ? ORMSetup::createConfiguration(true) : new Configuration();
68+
$config = new Configuration();
7069
if (class_exists(DefaultSchemaManagerFactory::class)) {
7170
$config->setSchemaManagerFactory(new DefaultSchemaManagerFactory());
7271
}

src/Symfony/Component/Lock/Tests/Store/PdoDbalStoreTest.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
use Doctrine\DBAL\DriverManager;
1717
use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory;
1818
use Doctrine\DBAL\Schema\Schema;
19-
use Doctrine\ORM\ORMSetup;
2019
use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
2120
use Symfony\Component\Lock\Key;
2221
use Symfony\Component\Lock\PersistingStoreInterface;
@@ -40,7 +39,7 @@ public static function setUpBeforeClass(): void
4039
{
4140
self::$dbFile = tempnam(sys_get_temp_dir(), 'sf_sqlite_lock');
4241

43-
$config = class_exists(ORMSetup::class) ? ORMSetup::createConfiguration(true) : new Configuration();
42+
$config = new Configuration();
4443
if (class_exists(DefaultSchemaManagerFactory::class)) {
4544
$config->setSchemaManagerFactory(new DefaultSchemaManagerFactory());
4645
}
@@ -69,7 +68,7 @@ public function getStore(): PersistingStoreInterface
6968
{
7069
$this->expectDeprecation('Since symfony/lock 5.4: Usage of a DBAL Connection with "Symfony\Component\Lock\Store\PdoStore" is deprecated and will be removed in symfony 6.0. Use "Symfony\Component\Lock\Store\DoctrineDbalStore" instead.');
7170

72-
$config = class_exists(ORMSetup::class) ? ORMSetup::createConfiguration(true) : new Configuration();
71+
$config = new Configuration();
7372
if (class_exists(DefaultSchemaManagerFactory::class)) {
7473
$config->setSchemaManagerFactory(new DefaultSchemaManagerFactory());
7574
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
use Doctrine\DBAL\Schema\AbstractSchemaManager;
1919
use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory;
2020
use Doctrine\DBAL\Tools\DsnParser;
21-
use Doctrine\ORM\ORMSetup;
2221
use PHPUnit\Framework\TestCase;
2322
use Symfony\Component\Messenger\Bridge\Doctrine\Tests\Fixtures\DummyMessage;
2423
use Symfony\Component\Messenger\Bridge\Doctrine\Transport\Connection;
@@ -37,7 +36,7 @@ protected function setUp(): void
3736
{
3837
$dsn = getenv('MESSENGER_DOCTRINE_DSN') ?: 'pdo-sqlite://:memory:';
3938
$params = class_exists(DsnParser::class) ? (new DsnParser())->parse($dsn) : ['url' => $dsn];
40-
$config = class_exists(ORMSetup::class) ? ORMSetup::createConfiguration() : new Configuration();
39+
$config = new Configuration();
4140
if (class_exists(DefaultSchemaManagerFactory::class)) {
4241
$config->setSchemaManagerFactory(new DefaultSchemaManagerFactory());
4342
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
use Doctrine\DBAL\Schema\AbstractSchemaManager;
1818
use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory;
1919
use Doctrine\DBAL\Tools\DsnParser;
20-
use Doctrine\ORM\ORMSetup;
2120
use PHPUnit\Framework\TestCase;
2221
use Symfony\Component\Messenger\Bridge\Doctrine\Tests\Fixtures\DummyMessage;
2322
use Symfony\Component\Messenger\Bridge\Doctrine\Transport\PostgreSqlConnection;
@@ -42,7 +41,7 @@ protected function setUp(): void
4241

4342
$url = "pdo-pgsql://postgres:password@$host";
4443
$params = class_exists(DsnParser::class) ? (new DsnParser())->parse($url) : ['url' => $url];
45-
$config = class_exists(ORMSetup::class) ? ORMSetup::createConfiguration() : new Configuration();
44+
$config = new Configuration();
4645
if (class_exists(DefaultSchemaManagerFactory::class)) {
4746
$config->setSchemaManagerFactory(new DefaultSchemaManagerFactory());
4847
}

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

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -482,13 +482,39 @@ private function updateSchema(): void
482482
$comparator = $this->createComparator($schemaManager);
483483
$schemaDiff = $this->compareSchemas($comparator, method_exists($schemaManager, 'introspectSchema') ? $schemaManager->introspectSchema() : $schemaManager->createSchema(), $this->getSchema());
484484
$platform = $this->driverConnection->getDatabasePlatform();
485-
$queries = method_exists($platform, 'getAlterSchemaSQL') ? $platform->getAlterSchemaSQL($schemaDiff) : $schemaDiff->toSaveSql($platform);
485+
$exec = method_exists($this->driverConnection, 'executeStatement') ? 'executeStatement' : 'exec';
486486

487-
foreach ($queries as $sql) {
488-
if (method_exists($this->driverConnection, 'executeStatement')) {
489-
$this->driverConnection->executeStatement($sql);
490-
} else {
491-
$this->driverConnection->exec($sql);
487+
if (!method_exists(SchemaDiff::class, 'getCreatedSchemas')) {
488+
foreach ($schemaDiff->toSaveSql($platform) as $sql) {
489+
$this->driverConnection->$exec($sql);
490+
}
491+
492+
return;
493+
}
494+
495+
if ($platform->supportsSchemas()) {
496+
foreach ($schemaDiff->getCreatedSchemas() as $schema) {
497+
$this->driverConnection->$exec($platform->getCreateSchemaSQL($schema));
498+
}
499+
}
500+
501+
if ($platform->supportsSequences()) {
502+
foreach ($schemaDiff->getAlteredSequences() as $sequence) {
503+
$this->driverConnection->$exec($platform->getAlterSequenceSQL($sequence));
504+
}
505+
506+
foreach ($schemaDiff->getCreatedSequences() as $sequence) {
507+
$this->driverConnection->$exec($platform->getCreateSequenceSQL($sequence));
508+
}
509+
}
510+
511+
foreach ($platform->getCreateTablesSQL($schemaDiff->getCreatedTables()) as $sql) {
512+
$this->driverConnection->$exec($sql);
513+
}
514+
515+
foreach ($schemaDiff->getAlteredTables() as $tableDiff) {
516+
foreach ($platform->getAlterTableSQL($tableDiff) as $sql) {
517+
$this->driverConnection->$exec($sql);
492518
}
493519
}
494520
}

0 commit comments

Comments
 (0)