From 80490350d0140ac30feca8e7a4827bb9e3584802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Thu, 1 Oct 2026 16:39:09 +0200 Subject: [PATCH 1/2] IBX-11939: Added Doctrine Migrations for the user-invitation schema * IBX-11939: Added Doctrine Migrations for the user-invitation schema * IBX-11939: Replaced SqlPlatform with doctrine-schema's DatabasePlatformName (#154) * IBX-11939: Wrapped long lines in the Doctrine Migrations SQL files --- .../Migration/InstallSchemaMigration.php | 2 +- .../Migration/RenameSchemaTo5_0Migration.php | 50 +++++++++++++++++++ .../sql/rename-schema-to-5-0-mysql.sql | 21 ++++++++ .../sql/rename-schema-to-5-0-postgresql.sql | 24 +++++++++ .../sql/rename-schema-to-5-0-sqlite.sql | 23 +++++++++ .../Resources/config/services/installer.yaml | 8 +++ 6 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 src/bundle/Migration/RenameSchemaTo5_0Migration.php create mode 100644 src/bundle/Migration/sql/rename-schema-to-5-0-mysql.sql create mode 100644 src/bundle/Migration/sql/rename-schema-to-5-0-postgresql.sql create mode 100644 src/bundle/Migration/sql/rename-schema-to-5-0-sqlite.sql diff --git a/src/bundle/Migration/InstallSchemaMigration.php b/src/bundle/Migration/InstallSchemaMigration.php index 47580ff2..766172c3 100644 --- a/src/bundle/Migration/InstallSchemaMigration.php +++ b/src/bundle/Migration/InstallSchemaMigration.php @@ -35,7 +35,7 @@ public function up(Schema $schema): void { $this->abortIfUnsupportedPlatform(SqlPlatform::MYSQL, SqlPlatform::MARIADB, SqlPlatform::POSTGRESQL, SqlPlatform::SQLITE); - if ($schema->hasTable('ibexa_user_invitations')) { + if ($schema->hasTable('ibexa_user_invitation')) { return; } diff --git a/src/bundle/Migration/RenameSchemaTo5_0Migration.php b/src/bundle/Migration/RenameSchemaTo5_0Migration.php new file mode 100644 index 00000000..f99bc946 --- /dev/null +++ b/src/bundle/Migration/RenameSchemaTo5_0Migration.php @@ -0,0 +1,50 @@ +abortIfUnsupportedPlatform(DatabasePlatformName::MySQL, DatabasePlatformName::PostgreSQL, DatabasePlatformName::SQLite); + + if ($schema->hasTable('ibexa_user_invitation')) { + return; + } + + if ($this->isMySQL()) { + $this->addSqlFile(__DIR__ . '/sql/rename-schema-to-5-0-mysql.sql'); + } elseif ($this->isPostgreSQL()) { + $this->addSqlFile(__DIR__ . '/sql/rename-schema-to-5-0-postgresql.sql'); + } elseif ($this->isSqlite()) { + $this->addSqlFile(__DIR__ . '/sql/rename-schema-to-5-0-sqlite.sql'); + } + } +} diff --git a/src/bundle/Migration/sql/rename-schema-to-5-0-mysql.sql b/src/bundle/Migration/sql/rename-schema-to-5-0-mysql.sql new file mode 100644 index 00000000..1f2bb72a --- /dev/null +++ b/src/bundle/Migration/sql/rename-schema-to-5-0-mysql.sql @@ -0,0 +1,21 @@ +ALTER TABLE ibexa_user_invitations RENAME TO ibexa_user_invitation; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_invitation RENAME INDEX ibexa_user_invitations_email_idx TO ibexa_user_invitation_email_idx; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_invitation RENAME INDEX ibexa_user_invitations_hash_idx TO ibexa_user_invitation_hash_idx; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_invitation + RENAME INDEX ibexa_user_invitations_email_uindex TO ibexa_user_invitation_email_uindex; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_invitation RENAME INDEX ibexa_user_invitations_hash_uindex TO ibexa_user_invitation_hash_uindex; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_invitations_assignments RENAME TO ibexa_user_invitation_assignment; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_invitation_assignment + DROP FOREIGN KEY ibexa_user_invitations_assignments_ibexa_user_invitations_id_fk; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_invitation_assignment + ADD CONSTRAINT ibexa_user_invitation_assignment_ibexa_user_invitation_id_fk FOREIGN KEY (invitation_id) + REFERENCES ibexa_user_invitation(id) ON DELETE CASCADE ON UPDATE CASCADE; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_invitation_assignment RENAME INDEX IDX_DA5A7872A35D7AF0 TO IDX_9E1E6F70A35D7AF0; diff --git a/src/bundle/Migration/sql/rename-schema-to-5-0-postgresql.sql b/src/bundle/Migration/sql/rename-schema-to-5-0-postgresql.sql new file mode 100644 index 00000000..11a08b5e --- /dev/null +++ b/src/bundle/Migration/sql/rename-schema-to-5-0-postgresql.sql @@ -0,0 +1,24 @@ +ALTER TABLE ibexa_user_invitations RENAME TO ibexa_user_invitation; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ibexa_user_invitations_id_seq RENAME TO ibexa_user_invitation_id_seq; +-- ibexa:sql-statement-separator +ALTER INDEX ibexa_user_invitations_email_idx RENAME TO ibexa_user_invitation_email_idx; +-- ibexa:sql-statement-separator +ALTER INDEX ibexa_user_invitations_hash_idx RENAME TO ibexa_user_invitation_hash_idx; +-- ibexa:sql-statement-separator +ALTER INDEX ibexa_user_invitations_email_uindex RENAME TO ibexa_user_invitation_email_uindex; +-- ibexa:sql-statement-separator +ALTER INDEX ibexa_user_invitations_hash_uindex RENAME TO ibexa_user_invitation_hash_uindex; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_invitations_assignments RENAME TO ibexa_user_invitation_assignment; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ibexa_user_invitations_assignments_id_seq RENAME TO ibexa_user_invitation_assignment_id_seq; +-- ibexa:sql-statement-separator +ALTER INDEX IDX_DA5A7872A35D7AF0 RENAME TO IDX_9E1E6F70A35D7AF0; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_invitation_assignment + DROP CONSTRAINT ibexa_user_invitations_assignments_ibexa_user_invitations_id_fk; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_invitation_assignment + ADD CONSTRAINT ibexa_user_invitation_assignment_ibexa_user_invitation_id_fk FOREIGN KEY (invitation_id) + REFERENCES ibexa_user_invitation(id) ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/src/bundle/Migration/sql/rename-schema-to-5-0-sqlite.sql b/src/bundle/Migration/sql/rename-schema-to-5-0-sqlite.sql new file mode 100644 index 00000000..907664f2 --- /dev/null +++ b/src/bundle/Migration/sql/rename-schema-to-5-0-sqlite.sql @@ -0,0 +1,23 @@ +ALTER TABLE ibexa_user_invitations RENAME TO ibexa_user_invitation; +-- ibexa:sql-statement-separator +DROP INDEX ibexa_user_invitations_email_idx; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_user_invitation_email_idx ON ibexa_user_invitation (email); +-- ibexa:sql-statement-separator +DROP INDEX ibexa_user_invitations_hash_idx; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_user_invitation_hash_idx ON ibexa_user_invitation (hash); +-- ibexa:sql-statement-separator +DROP INDEX ibexa_user_invitations_email_uindex; +-- ibexa:sql-statement-separator +CREATE UNIQUE INDEX ibexa_user_invitation_email_uindex ON ibexa_user_invitation (email); +-- ibexa:sql-statement-separator +DROP INDEX ibexa_user_invitations_hash_uindex; +-- ibexa:sql-statement-separator +CREATE UNIQUE INDEX ibexa_user_invitation_hash_uindex ON ibexa_user_invitation (hash); +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_invitations_assignments RENAME TO ibexa_user_invitation_assignment; +-- ibexa:sql-statement-separator +DROP INDEX IDX_DA5A7872A35D7AF0; +-- ibexa:sql-statement-separator +CREATE INDEX IDX_9E1E6F70A35D7AF0 ON ibexa_user_invitation_assignment (invitation_id); diff --git a/src/bundle/Resources/config/services/installer.yaml b/src/bundle/Resources/config/services/installer.yaml index fd15d75b..67eaa4d2 100644 --- a/src/bundle/Resources/config/services/installer.yaml +++ b/src/bundle/Resources/config/services/installer.yaml @@ -12,3 +12,11 @@ services: $connection: '@ibexa.persistence.connection' tags: - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } + + Ibexa\Bundle\User\Migration\RenameSchemaTo5_0Migration: + autowire: true + public: false + arguments: + $connection: '@ibexa.persistence.connection' + tags: + - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } From c0e5c99ff98c0b18a946902552e7efd55842f0b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Fri, 2 Oct 2026 14:27:38 +0200 Subject: [PATCH 2/2] IBX-11939: Added MariaDB to the platforms the 5.0 migrations support doctrine-migrations 5.0 takes SqlPlatform now, so the migrations that only exist on this branch list SqlPlatform::MARIADB and run their MySQL SQL there too, like the ones from 4.6. --- src/bundle/Migration/RenameSchemaTo5_0Migration.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bundle/Migration/RenameSchemaTo5_0Migration.php b/src/bundle/Migration/RenameSchemaTo5_0Migration.php index f99bc946..ec62cab8 100644 --- a/src/bundle/Migration/RenameSchemaTo5_0Migration.php +++ b/src/bundle/Migration/RenameSchemaTo5_0Migration.php @@ -12,7 +12,7 @@ use Doctrine\DBAL\Schema\Schema; use Ibexa\Contracts\DoctrineMigrations\Migrations\AbstractSqlMigration; use Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationInterface; -use Ibexa\Contracts\DoctrineSchema\Database\DatabasePlatformName; +use Ibexa\Contracts\DoctrineMigrations\Migrations\SqlPlatform; final class RenameSchemaTo5_0Migration extends AbstractSqlMigration implements IbexaMigrationInterface { @@ -33,13 +33,13 @@ public static function getCreationDate(): DateTimeImmutable public function up(Schema $schema): void { - $this->abortIfUnsupportedPlatform(DatabasePlatformName::MySQL, DatabasePlatformName::PostgreSQL, DatabasePlatformName::SQLite); + $this->abortIfUnsupportedPlatform(SqlPlatform::MYSQL, SqlPlatform::MARIADB, SqlPlatform::POSTGRESQL, SqlPlatform::SQLITE); if ($schema->hasTable('ibexa_user_invitation')) { return; } - if ($this->isMySQL()) { + if ($this->isMySQL() || $this->isMariaDB()) { $this->addSqlFile(__DIR__ . '/sql/rename-schema-to-5-0-mysql.sql'); } elseif ($this->isPostgreSQL()) { $this->addSqlFile(__DIR__ . '/sql/rename-schema-to-5-0-postgresql.sql');