migrations/Version20190817084149.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. /**
  7.  * Auto-generated Migration: Please modify to your needs!
  8.  */
  9. final class Version20190817084149 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return 'Project (and related) tables';
  14.     }
  15.     /**
  16.      * @throws \Doctrine\DBAL\DBALException
  17.      */
  18.     public function up(Schema $schema): void
  19.     {
  20.         // this up() migration is auto-generated, please modify it to your needs
  21.         $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql''Migration can only be executed safely on \'postgresql\'.');
  22.         $this->addSql('CREATE TABLE developer (
  23.             id UUID NOT NULL, user_id UUID DEFAULT NULL, PRIMARY KEY(id))'
  24.         );
  25.         $this->addSql('CREATE INDEX IDX_65FB8B9AA76ED395 ON developer (user_id)');
  26.         $this->addSql('COMMENT ON COLUMN developer.id IS \'(DC2Type:uuid)\'');
  27.         $this->addSql('COMMENT ON COLUMN developer.user_id IS \'(DC2Type:uuid)\'');
  28.         $this->addSql('CREATE TABLE developer_project (
  29.             developer_id UUID NOT NULL, project_id UUID NOT NULL, PRIMARY KEY(developer_id, project_id))'
  30.         );
  31.         $this->addSql('CREATE INDEX IDX_412D364564DD9267 ON developer_project (developer_id)');
  32.         $this->addSql('CREATE INDEX IDX_412D3645166D1F9C ON developer_project (project_id)');
  33.         $this->addSql('COMMENT ON COLUMN developer_project.developer_id IS \'(DC2Type:uuid)\'');
  34.         $this->addSql('COMMENT ON COLUMN developer_project.project_id IS \'(DC2Type:uuid)\'');
  35.         $this->addSql('CREATE TABLE project (
  36.             id UUID NOT NULL, 
  37.             current_stage_id UUID DEFAULT NULL, 
  38.             title VARCHAR(255) DEFAULT NULL, 
  39.             description TEXT DEFAULT NULL, 
  40.             contractor VARCHAR(255) DEFAULT NULL, 
  41.             slug VARCHAR(255) NOT NULL, 
  42.             created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, 
  43.             updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id))'
  44.         );
  45.         $this->addSql('CREATE UNIQUE INDEX UNIQ_2FB3D0EE989D9B62 ON project (slug)');
  46.         $this->addSql('CREATE INDEX IDX_2FB3D0EEBFE0ABB9 ON project (current_stage_id)');
  47.         $this->addSql('COMMENT ON COLUMN project.id IS \'(DC2Type:uuid)\'');
  48.         $this->addSql('COMMENT ON COLUMN project.current_stage_id IS \'(DC2Type:uuid)\'');
  49.         $this->addSql('CREATE TABLE manager (
  50.             id UUID NOT NULL, user_id UUID DEFAULT NULL, PRIMARY KEY(id))'
  51.         );
  52.         $this->addSql('CREATE INDEX IDX_FA2425B9A76ED395 ON manager (user_id)');
  53.         $this->addSql('COMMENT ON COLUMN manager.id IS \'(DC2Type:uuid)\'');
  54.         $this->addSql('COMMENT ON COLUMN manager.user_id IS \'(DC2Type:uuid)\'');
  55.         $this->addSql('CREATE TABLE manager_project (
  56.             manager_id UUID NOT NULL, 
  57.             project_id UUID NOT NULL, PRIMARY KEY(manager_id, project_id))'
  58.         );
  59.         $this->addSql('CREATE INDEX IDX_917EE5F8783E3463 ON manager_project (manager_id)');
  60.         $this->addSql('CREATE INDEX IDX_917EE5F8166D1F9C ON manager_project (project_id)');
  61.         $this->addSql('COMMENT ON COLUMN manager_project.manager_id IS \'(DC2Type:uuid)\'');
  62.         $this->addSql('COMMENT ON COLUMN manager_project.project_id IS \'(DC2Type:uuid)\'');
  63.         $this->addSql('CREATE TABLE stage (
  64.             id UUID NOT NULL, 
  65.             project_id UUID DEFAULT NULL, 
  66.             title VARCHAR(255) DEFAULT NULL, 
  67.             description VARCHAR(255) DEFAULT NULL, 
  68.             slug VARCHAR(255) NOT NULL, PRIMARY KEY(id))'
  69.         );
  70.         $this->addSql('CREATE UNIQUE INDEX UNIQ_C27C9369989D9B62 ON stage (slug)');
  71.         $this->addSql('CREATE INDEX IDX_C27C9369166D1F9C ON stage (project_id)');
  72.         $this->addSql('COMMENT ON COLUMN stage.id IS \'(DC2Type:uuid)\'');
  73.         $this->addSql('COMMENT ON COLUMN stage.project_id IS \'(DC2Type:uuid)\'');
  74.         $this->addSql('ALTER TABLE developer ADD CONSTRAINT FK_65FB8B9AA76ED395 FOREIGN KEY (user_id) REFERENCES "hub_user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  75.         $this->addSql('ALTER TABLE developer_project ADD CONSTRAINT FK_412D364564DD9267 FOREIGN KEY (developer_id) REFERENCES developer (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  76.         $this->addSql('ALTER TABLE developer_project ADD CONSTRAINT FK_412D3645166D1F9C FOREIGN KEY (project_id) REFERENCES project (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  77.         $this->addSql('ALTER TABLE project ADD CONSTRAINT FK_2FB3D0EEBFE0ABB9 FOREIGN KEY (current_stage_id) REFERENCES stage (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  78.         $this->addSql('ALTER TABLE manager ADD CONSTRAINT FK_FA2425B9A76ED395 FOREIGN KEY (user_id) REFERENCES "hub_user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  79.         $this->addSql('ALTER TABLE manager_project ADD CONSTRAINT FK_917EE5F8783E3463 FOREIGN KEY (manager_id) REFERENCES manager (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  80.         $this->addSql('ALTER TABLE manager_project ADD CONSTRAINT FK_917EE5F8166D1F9C FOREIGN KEY (project_id) REFERENCES project (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  81.         $this->addSql('ALTER TABLE stage ADD CONSTRAINT FK_C27C9369166D1F9C FOREIGN KEY (project_id) REFERENCES project (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  82.     }
  83.     /**
  84.      * @throws \Doctrine\DBAL\DBALException
  85.      */
  86.     public function down(Schema $schema): void
  87.     {
  88.         // this down() migration is auto-generated, please modify it to your needs
  89.         $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql''Migration can only be executed safely on \'postgresql\'.');
  90.         $this->addSql('ALTER TABLE developer_project DROP CONSTRAINT FK_412D364564DD9267');
  91.         $this->addSql('ALTER TABLE developer_project DROP CONSTRAINT FK_412D3645166D1F9C');
  92.         $this->addSql('ALTER TABLE manager_project DROP CONSTRAINT FK_917EE5F8166D1F9C');
  93.         $this->addSql('ALTER TABLE stage DROP CONSTRAINT FK_C27C9369166D1F9C');
  94.         $this->addSql('ALTER TABLE manager_project DROP CONSTRAINT FK_917EE5F8783E3463');
  95.         $this->addSql('ALTER TABLE project DROP CONSTRAINT FK_2FB3D0EEBFE0ABB9');
  96.         $this->addSql('DROP TABLE developer');
  97.         $this->addSql('DROP TABLE developer_project');
  98.         $this->addSql('DROP TABLE project');
  99.         $this->addSql('DROP TABLE manager');
  100.         $this->addSql('DROP TABLE manager_project');
  101.         $this->addSql('DROP TABLE stage');
  102.     }
  103. }