Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"php": " >=8.3",
"ibexa/content-forms": "~5.0.x-dev",
"ibexa/core": "~5.0.x-dev",
"ibexa/doctrine-migrations": "dev-feat/doctrine-migrations-5.0",
"ibexa/notifications": "~5.0.x-dev",
"jms/translation-bundle": "^2.4",
"symfony/config": "^7.4",
Expand Down
2 changes: 1 addition & 1 deletion src/bundle/Migration/InstallSchemaMigration.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public function up(Schema $schema): void
{
$this->abortIfUnsupportedPlatform(SqlPlatform::MYSQL, SqlPlatform::POSTGRESQL, SqlPlatform::SQLITE);

if ($schema->hasTable('ibexa_user_invitations')) {
if ($schema->hasTable('ibexa_user_invitation')) {
return;
}

Expand Down
50 changes: 50 additions & 0 deletions src/bundle/Migration/RenameSchemaTo5_0Migration.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?php

/**
* @copyright Copyright (C) Ibexa AS. All rights reserved.
* @license For full copyright and license information view LICENSE file distributed with this source code.
*/
declare(strict_types=1);

namespace Ibexa\Bundle\User\Migration;

use DateTimeImmutable;
use Doctrine\DBAL\Schema\Schema;
use Ibexa\Contracts\DoctrineMigrations\Migrations\AbstractSqlMigration;
use Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationInterface;
use Ibexa\DoctrineMigrations\Migration\SqlPlatform;

final class RenameSchemaTo5_0Migration extends AbstractSqlMigration implements IbexaMigrationInterface

Check warning on line 17 in src/bundle/Migration/RenameSchemaTo5_0Migration.php

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Rename class "RenameSchemaTo5_0Migration" to match the regular expression ^[A-Z][a-zA-Z0-9]*$.

See more on https://sonarcloud.io/project/issues?id=ibexa_user&issues=AZ-Tv4IgHHX2sRS0Pfsl&open=AZ-Tv4IgHHX2sRS0Pfsl&pullRequest=129
{
public function getDescription(): string
{
return 'Renames the user-invitation database schema to singular table names (introduced in 5.0)';
}

public static function getTargetVersion(): string
{
return '5.0.0';
}

public static function getCreationDate(): DateTimeImmutable
{
return new DateTimeImmutable('2026-07-20 00:00:00');
}

public function up(Schema $schema): void
{
$this->abortIfUnsupportedPlatform(SqlPlatform::MYSQL, SqlPlatform::POSTGRESQL, SqlPlatform::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');
}
}
}
17 changes: 17 additions & 0 deletions src/bundle/Migration/sql/rename-schema-to-5-0-mysql.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
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;
21 changes: 21 additions & 0 deletions src/bundle/Migration/sql/rename-schema-to-5-0-postgresql.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
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;
23 changes: 23 additions & 0 deletions src/bundle/Migration/sql/rename-schema-to-5-0-sqlite.sql
Original file line number Diff line number Diff line change
@@ -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);
8 changes: 8 additions & 0 deletions src/bundle/Resources/config/services/installer.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Loading