migrations/Common/Version20200301104321_Company.php line 1

  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations\Common;
  4. use App\Doctrine\Type\Common\CompanyStatus;
  5. use App\Doctrine\Type\Common\CompanyType;
  6. use Doctrine\DBAL\Schema\Schema;
  7. use Doctrine\Migrations\AbstractMigration;
  8. /**
  9.  * Auto-generated Migration: Please modify to your needs!
  10.  */
  11. final class Version20200301104321_Company extends AbstractMigration
  12. {
  13.     public function getDescription(): string
  14.     {
  15.         return 'Add company table';
  16.     }
  17.     public function up(Schema $schema): void
  18.     {
  19.         $this->addSql(CompanyType::getRegistrationSQL());
  20.         $this->addSql(CompanyStatus::getRegistrationSQL());
  21.         $companyTypesType CompanyType::getName(asArraytrue);
  22.         $companyStatusType CompanyStatus::getName();
  23.         $defaultStatus CompanyStatus::ACTIVE->value;
  24.         $this->addSql("CREATE TABLE company (
  25.             id                              SERIAL PRIMARY KEY,
  26.             parent_id                       INTEGER                              REFERENCES public.company (id),
  27.             slug                            CHARACTER VARYING           NOT NULL,
  28.             name                            CHARACTER VARYING           NOT NULL,
  29.             code                            CHARACTER VARYING           NOT NULL,
  30.             trade_register                  CHARACTER VARYING,
  31.             tax_identification_number       CHARACTER VARYING,
  32.             types                           {$companyTypesType},
  33.             served_continents               JSON,
  34.             served_countries                JSON,
  35.             status                          {$companyStatusType}        NOT NULL DEFAULT '{$defaultStatus}',
  36.             logo_id                         INTEGER                              REFERENCES public.file (id),
  37.             created_by                      INTEGER                     NOT NULL REFERENCES public.user (id),
  38.             updated_by                      INTEGER                              REFERENCES public.user (id),
  39.             created_at                      TIMESTAMP(0) WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  40.             updated_at                      TIMESTAMP(0) WITH TIME ZONE,
  41.             deleted_at                      TIMESTAMP(0) WITH TIME ZONE,
  42.             CONSTRAINT company_slug_key UNIQUE (slug),
  43.             CONSTRAINT company_name_key UNIQUE (name),
  44.             CONSTRAINT company_code_key UNIQUE (code)
  45.         )");
  46.         $this->addSql("CREATE INDEX company_logo_id_idx ON company (logo_id)");
  47.         $this->addSql("CREATE INDEX company_parent_id_idx ON company (parent_id)");
  48.         $this->addSql("CREATE INDEX company_created_by_idx ON company (created_by)");
  49.         $this->addSql("CREATE INDEX company_updated_by_idx ON company (updated_by)");
  50.     }
  51.     public function down(Schema $schema): void
  52.     {
  53.         $this->addSql("DROP TABLE IF EXISTS company");
  54.         $this->addSql(CompanyType::getDeletionSQL());
  55.         $this->addSql(CompanyStatus::getDeletionSQL());
  56.     }
  57. }