<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20190817084149 extends AbstractMigration
{
public function getDescription(): string
{
return 'Project (and related) tables';
}
/**
* @throws \Doctrine\DBAL\DBALException
*/
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.');
$this->addSql('CREATE TABLE developer (
id UUID NOT NULL, user_id UUID DEFAULT NULL, PRIMARY KEY(id))'
);
$this->addSql('CREATE INDEX IDX_65FB8B9AA76ED395 ON developer (user_id)');
$this->addSql('COMMENT ON COLUMN developer.id IS \'(DC2Type:uuid)\'');
$this->addSql('COMMENT ON COLUMN developer.user_id IS \'(DC2Type:uuid)\'');
$this->addSql('CREATE TABLE developer_project (
developer_id UUID NOT NULL, project_id UUID NOT NULL, PRIMARY KEY(developer_id, project_id))'
);
$this->addSql('CREATE INDEX IDX_412D364564DD9267 ON developer_project (developer_id)');
$this->addSql('CREATE INDEX IDX_412D3645166D1F9C ON developer_project (project_id)');
$this->addSql('COMMENT ON COLUMN developer_project.developer_id IS \'(DC2Type:uuid)\'');
$this->addSql('COMMENT ON COLUMN developer_project.project_id IS \'(DC2Type:uuid)\'');
$this->addSql('CREATE TABLE project (
id UUID NOT NULL,
current_stage_id UUID DEFAULT NULL,
title VARCHAR(255) DEFAULT NULL,
description TEXT DEFAULT NULL,
contractor VARCHAR(255) DEFAULT NULL,
slug VARCHAR(255) NOT NULL,
created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL,
updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id))'
);
$this->addSql('CREATE UNIQUE INDEX UNIQ_2FB3D0EE989D9B62 ON project (slug)');
$this->addSql('CREATE INDEX IDX_2FB3D0EEBFE0ABB9 ON project (current_stage_id)');
$this->addSql('COMMENT ON COLUMN project.id IS \'(DC2Type:uuid)\'');
$this->addSql('COMMENT ON COLUMN project.current_stage_id IS \'(DC2Type:uuid)\'');
$this->addSql('CREATE TABLE manager (
id UUID NOT NULL, user_id UUID DEFAULT NULL, PRIMARY KEY(id))'
);
$this->addSql('CREATE INDEX IDX_FA2425B9A76ED395 ON manager (user_id)');
$this->addSql('COMMENT ON COLUMN manager.id IS \'(DC2Type:uuid)\'');
$this->addSql('COMMENT ON COLUMN manager.user_id IS \'(DC2Type:uuid)\'');
$this->addSql('CREATE TABLE manager_project (
manager_id UUID NOT NULL,
project_id UUID NOT NULL, PRIMARY KEY(manager_id, project_id))'
);
$this->addSql('CREATE INDEX IDX_917EE5F8783E3463 ON manager_project (manager_id)');
$this->addSql('CREATE INDEX IDX_917EE5F8166D1F9C ON manager_project (project_id)');
$this->addSql('COMMENT ON COLUMN manager_project.manager_id IS \'(DC2Type:uuid)\'');
$this->addSql('COMMENT ON COLUMN manager_project.project_id IS \'(DC2Type:uuid)\'');
$this->addSql('CREATE TABLE stage (
id UUID NOT NULL,
project_id UUID DEFAULT NULL,
title VARCHAR(255) DEFAULT NULL,
description VARCHAR(255) DEFAULT NULL,
slug VARCHAR(255) NOT NULL, PRIMARY KEY(id))'
);
$this->addSql('CREATE UNIQUE INDEX UNIQ_C27C9369989D9B62 ON stage (slug)');
$this->addSql('CREATE INDEX IDX_C27C9369166D1F9C ON stage (project_id)');
$this->addSql('COMMENT ON COLUMN stage.id IS \'(DC2Type:uuid)\'');
$this->addSql('COMMENT ON COLUMN stage.project_id IS \'(DC2Type:uuid)\'');
$this->addSql('ALTER TABLE developer ADD CONSTRAINT FK_65FB8B9AA76ED395 FOREIGN KEY (user_id) REFERENCES "hub_user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE developer_project ADD CONSTRAINT FK_412D364564DD9267 FOREIGN KEY (developer_id) REFERENCES developer (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE developer_project ADD CONSTRAINT FK_412D3645166D1F9C FOREIGN KEY (project_id) REFERENCES project (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE project ADD CONSTRAINT FK_2FB3D0EEBFE0ABB9 FOREIGN KEY (current_stage_id) REFERENCES stage (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE manager ADD CONSTRAINT FK_FA2425B9A76ED395 FOREIGN KEY (user_id) REFERENCES "hub_user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE manager_project ADD CONSTRAINT FK_917EE5F8783E3463 FOREIGN KEY (manager_id) REFERENCES manager (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE manager_project ADD CONSTRAINT FK_917EE5F8166D1F9C FOREIGN KEY (project_id) REFERENCES project (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE stage ADD CONSTRAINT FK_C27C9369166D1F9C FOREIGN KEY (project_id) REFERENCES project (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
}
/**
* @throws \Doctrine\DBAL\DBALException
*/
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.');
$this->addSql('ALTER TABLE developer_project DROP CONSTRAINT FK_412D364564DD9267');
$this->addSql('ALTER TABLE developer_project DROP CONSTRAINT FK_412D3645166D1F9C');
$this->addSql('ALTER TABLE manager_project DROP CONSTRAINT FK_917EE5F8166D1F9C');
$this->addSql('ALTER TABLE stage DROP CONSTRAINT FK_C27C9369166D1F9C');
$this->addSql('ALTER TABLE manager_project DROP CONSTRAINT FK_917EE5F8783E3463');
$this->addSql('ALTER TABLE project DROP CONSTRAINT FK_2FB3D0EEBFE0ABB9');
$this->addSql('DROP TABLE developer');
$this->addSql('DROP TABLE developer_project');
$this->addSql('DROP TABLE project');
$this->addSql('DROP TABLE manager');
$this->addSql('DROP TABLE manager_project');
$this->addSql('DROP TABLE stage');
}
}