mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
64 lines
3.0 KiB
PHP
64 lines
3.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Chill\Migrations\Person;
|
|
|
|
use Doctrine\DBAL\Schema\Schema;
|
|
use Doctrine\Migrations\AbstractMigration;
|
|
|
|
/**
|
|
* prefix table concerning household with 'chill_person' and add constraints
|
|
*/
|
|
final class Version20210528092625 extends AbstractMigration
|
|
{
|
|
public function getDescription(): string
|
|
{
|
|
return 'prefix table concerning household with \'chill_person\' and add constraints';
|
|
}
|
|
|
|
public function up(Schema $schema): void
|
|
{
|
|
// we need to rename constraint, drop them first, recreate them after
|
|
$this->addSql('ALTER TABLE householdmembers DROP CONSTRAINT fk_4d1fb288e79ff843');
|
|
$this->addSql('ALTER TABLE householdmembers DROP CONSTRAINT fk_4d1fb288217bbb47');
|
|
|
|
// rename tables
|
|
$this->addSql('ALTER TABLE householdmembers RENAME TO chill_person_household_members');
|
|
$this->addSql('ALTER TABLE household RENAME TO chill_person_household');
|
|
|
|
// rename sequences
|
|
$this->addSql('ALTER SEQUENCE household_id_seq RENAME TO chill_person_household_id_seq');
|
|
$this->addSql('ALTER SEQUENCE householdmembers_id_seq RENAME TO chill_person_household_members_id_seq');
|
|
|
|
// recreate constraints
|
|
$this->addSql('ALTER TABLE chill_person_household_members ADD CONSTRAINT FK_EEF5DED7217BBB47 FOREIGN KEY (person_id) REFERENCES chill_person_person (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
$this->addSql('ALTER TABLE chill_person_household_members ADD CONSTRAINT FK_EEF5DED7E79FF843 FOREIGN KEY (household_id) REFERENCES chill_person_household (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
|
|
// create constraint 'householdmembers not overlaps'
|
|
$this->addSql('ALTER TABLE chill_person_household_members ADD CHECK (startdate < enddate)');
|
|
$this->addSql('ALTER TABLE chill_person_household_members ADD CONSTRAINT '.
|
|
"household_members_not_overlaps EXCLUDE USING GIST(
|
|
-- extension btree_gist required to include comparaison with integer
|
|
person_id WITH =,
|
|
daterange(startdate, enddate) WITH &&
|
|
) WHERE (sharedhousehold IS TRUE)
|
|
INITIALLY DEFERRED");
|
|
|
|
// rename constraints
|
|
$this->addSql('ALTER TABLE public.chill_person_household_to_addresses DROP CONSTRAINT fk_7109483e79ff843');
|
|
$this->addSql('ALTER TABLE chill_person_household_to_addresses ADD CONSTRAINT FK_C28AF063E79FF843 FOREIGN KEY (household_id) REFERENCES chill_person_household (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
|
|
// rename indexes
|
|
$this->addSql('ALTER INDEX idx_7109483e79ff843 RENAME TO IDX_C28AF063E79FF843');
|
|
$this->addSql('ALTER INDEX idx_7109483f5b7af75 RENAME TO IDX_C28AF063F5B7AF75');
|
|
$this->addSql('ALTER INDEX idx_4d1fb288e79ff843 RENAME TO IDX_EEF5DED7E79FF843');
|
|
$this->addSql('ALTER INDEX idx_4d1fb288217bbb47 RENAME TO IDX_EEF5DED7217BBB47');
|
|
}
|
|
|
|
public function down(Schema $schema): void
|
|
{
|
|
$this->throwIrreversibleMigrationException("the down method is not implemented");
|
|
}
|
|
}
|