migrations/Expediting/Version20200309105319_ExpeditingPackage.php line 1

  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations\Expediting;
  4. use App\Doctrine\Type\Expediting\CasingMaterial;
  5. use App\Doctrine\Type\Expediting\CasingType;
  6. use App\Doctrine\Type\Expediting\DeliveryPriority;
  7. use App\Doctrine\Type\Expediting\ExpeditableStatus;
  8. use Doctrine\DBAL\Schema\Schema;
  9. use Doctrine\Migrations\AbstractMigration;
  10. /**
  11.  * Auto-generated Migration: Please modify to your needs!
  12.  */
  13. final class Version20200309105319_ExpeditingPackage extends AbstractMigration
  14. {
  15.     public function getDescription(): string
  16.     {
  17.         return 'Add package table';
  18.     }
  19.     public function up(Schema $schema): void
  20.     {
  21.         $casingTypeType CasingType::getName();
  22.         $casingMaterialType CasingMaterial::getName();
  23.         $expeditableStatusType ExpeditableStatus::getName();
  24.         $deliveryPriorityType DeliveryPriority::getName();
  25.         $defaultPriority DeliveryPriority::NORMAL->value;
  26.         $this->addSql("CREATE TABLE expediting_package (
  27.             id                              SERIAL PRIMARY KEY,
  28.             identifier                      UUID                        NOT NULL,
  29.             destination_repacking_id        INTEGER                              REFERENCES public.expediting_repacking (id),
  30.             source_repacking_id             INTEGER                              REFERENCES public.expediting_repacking (id),
  31.             slug                            CHARACTER VARYING           NOT NULL,
  32.             reference                       CHARACTER VARYING           NOT NULL,
  33.             package_number                  CHARACTER VARYING           NOT NULL,
  34.             status                          {$expeditableStatusType}    NOT NULL,
  35.             -- Aspect
  36.             length                          DECIMAL(18, 3),
  37.             width                           DECIMAL(18, 3),
  38.             height                          DECIMAL(18, 3),
  39.             weight                          DECIMAL(18, 3),
  40.             shipping_weight                 DECIMAL(18, 3),
  41.             casing_type                     {$casingTypeType},
  42.             casing_material                 {$casingMaterialType},
  43.             -- shipping
  44.             priority                        {$deliveryPriorityType}              DEFAULT '{$defaultPriority}',
  45.             high_value                      BOOLEAN                              DEFAULT false,
  46.             high_volume                     BOOLEAN                              DEFAULT false,
  47.             high_risk                       BOOLEAN                              DEFAULT false,
  48.             expeditable                     BOOLEAN                              DEFAULT false,
  49.             prohibited                      BOOLEAN                              DEFAULT false,
  50.             dangerous                       BOOLEAN                              DEFAULT false,
  51.             -- QA/QC
  52.             openable                        BOOLEAN                     NOT NULL DEFAULT false,
  53.             destroyed                       BOOLEAN                     NOT NULL DEFAULT false,
  54.             created_by                      INTEGER                     NOT NULL REFERENCES public.user (id),
  55.             updated_by                      INTEGER                              REFERENCES public.user (id),
  56.             created_at                      TIMESTAMP(0) WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  57.             updated_at                      TIMESTAMP(0) WITH TIME ZONE,
  58.             deleted_at                      TIMESTAMP(0) WITH TIME ZONE,
  59.             CONSTRAINT expediting_package_slug_key UNIQUE (slug),
  60.             CONSTRAINT expediting_package_reference_key UNIQUE (reference),
  61.             CONSTRAINT expediting_package_identifier_key UNIQUE (identifier)
  62.         )");
  63.         $this->addSql("COMMENT ON COLUMN expediting_package.identifier IS '(DC2Type:ulid)'");
  64.         $this->addSql("CREATE INDEX expediting_package_destination_repacking_id_idx ON expediting_package (destination_repacking_id)");
  65.         $this->addSql("CREATE INDEX expediting_package_source_repacking_id_idx ON expediting_package (source_repacking_id)");
  66.         $this->addSql("CREATE INDEX expediting_package_created_by_idx ON expediting_package (created_by)");
  67.         $this->addSql("CREATE INDEX expediting_package_updated_by_idx ON expediting_package (updated_by)");
  68.     }
  69.     public function down(Schema $schema): void
  70.     {
  71.         $this->addSql("DROP TABLE IF EXISTS expediting_package");
  72.     }
  73. }