migrations/Sales/Version20200303105229_CompanyAsset.php line 1

  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations\Sales;
  4. use App\Doctrine\Type\Sales\AssetStatus;
  5. use Doctrine\DBAL\Schema\Schema;
  6. use Doctrine\Migrations\AbstractMigration;
  7. /**
  8.  * Auto-generated Migration: Please modify to your needs!
  9.  */
  10. final class Version20200303105229_CompanyAsset extends AbstractMigration
  11. {
  12.     public function getDescription(): string
  13.     {
  14.         return 'Add asset table';
  15.     }
  16.     public function up(Schema $schema): void
  17.     {
  18.         $this->addSql(AssetStatus::getRegistrationSQL());
  19.         $assetStatusType AssetStatus::getName();
  20.         $defaultStatus AssetStatus::ACTIVE->value;
  21.         $this->addSql("CREATE TABLE company_asset (
  22.             id                              SERIAL PRIMARY KEY,
  23.             slug                            CHARACTER VARYING           NOT NULL,
  24.             name                            CHARACTER VARYING           NOT NULL,
  25.             code                            CHARACTER VARYING           NOT NULL,
  26.             client_id                       INTEGER                     NOT NULL REFERENCES public.company (id),
  27.             place_id                        INTEGER                              REFERENCES public.place (id),
  28.             logo_id                         INTEGER                              REFERENCES public.file (id),
  29.             status                          {$assetStatusType}          NOT NULL DEFAULT '{$defaultStatus}',
  30.             created_by                      INTEGER                     NOT NULL REFERENCES public.user (id),
  31.             updated_by                      INTEGER                              REFERENCES public.user (id),
  32.             created_at                      TIMESTAMP(0) WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  33.             updated_at                      TIMESTAMP(0) WITH TIME ZONE,
  34.             deleted_at                      TIMESTAMP(0) WITH TIME ZONE,
  35.             CONSTRAINT company_asset_slug_key UNIQUE (slug),
  36.             CONSTRAINT company_asset_code_key UNIQUE (code)
  37.         )");
  38.         $this->addSql("CREATE INDEX company_asset_client_id_idx ON company_asset (client_id)");
  39.         $this->addSql("CREATE INDEX company_asset_place_id_idx ON company_asset (place_id)");
  40.         $this->addSql("CREATE INDEX company_asset_logo_id_idx ON company_asset (logo_id)");
  41.         $this->addSql("CREATE INDEX company_asset_created_by_idx ON company_asset (created_by)");
  42.         $this->addSql("CREATE INDEX company_asset_updated_by_idx ON company_asset (updated_by)");
  43.     }
  44.     public function down(Schema $schema): void
  45.     {
  46.         $this->addSql("DROP TABLE IF EXISTS company_asset");
  47.         $this->addSql(AssetStatus::getDeletionSQL());
  48.     }
  49. }