migrations/Expediting/Version20200309105319_ExpeditingPackage.php line 1
<?php
declare(strict_types=1);
namespace DoctrineMigrations\Expediting;
use App\Doctrine\Type\Expediting\CasingMaterial;
use App\Doctrine\Type\Expediting\CasingType;
use App\Doctrine\Type\Expediting\DeliveryPriority;
use App\Doctrine\Type\Expediting\ExpeditableStatus;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20200309105319_ExpeditingPackage extends AbstractMigration
{
public function getDescription(): string
{
return 'Add package table';
}
public function up(Schema $schema): void
{
$casingTypeType = CasingType::getName();
$casingMaterialType = CasingMaterial::getName();
$expeditableStatusType = ExpeditableStatus::getName();
$deliveryPriorityType = DeliveryPriority::getName();
$defaultPriority = DeliveryPriority::NORMAL->value;
$this->addSql("CREATE TABLE expediting_package (
id SERIAL PRIMARY KEY,
identifier UUID NOT NULL,
destination_repacking_id INTEGER REFERENCES public.expediting_repacking (id),
source_repacking_id INTEGER REFERENCES public.expediting_repacking (id),
slug CHARACTER VARYING NOT NULL,
reference CHARACTER VARYING NOT NULL,
package_number CHARACTER VARYING NOT NULL,
status {$expeditableStatusType} NOT NULL,
-- Aspect
length DECIMAL(18, 3),
width DECIMAL(18, 3),
height DECIMAL(18, 3),
weight DECIMAL(18, 3),
shipping_weight DECIMAL(18, 3),
casing_type {$casingTypeType},
casing_material {$casingMaterialType},
-- shipping
priority {$deliveryPriorityType} DEFAULT '{$defaultPriority}',
high_value BOOLEAN DEFAULT false,
high_volume BOOLEAN DEFAULT false,
high_risk BOOLEAN DEFAULT false,
expeditable BOOLEAN DEFAULT false,
prohibited BOOLEAN DEFAULT false,
dangerous BOOLEAN DEFAULT false,
-- QA/QC
openable BOOLEAN NOT NULL DEFAULT false,
destroyed BOOLEAN NOT NULL DEFAULT false,
created_by INTEGER NOT NULL REFERENCES public.user (id),
updated_by INTEGER REFERENCES public.user (id),
created_at TIMESTAMP(0) WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP(0) WITH TIME ZONE,
deleted_at TIMESTAMP(0) WITH TIME ZONE,
CONSTRAINT expediting_package_slug_key UNIQUE (slug),
CONSTRAINT expediting_package_reference_key UNIQUE (reference),
CONSTRAINT expediting_package_identifier_key UNIQUE (identifier)
)");
$this->addSql("COMMENT ON COLUMN expediting_package.identifier IS '(DC2Type:ulid)'");
$this->addSql("CREATE INDEX expediting_package_destination_repacking_id_idx ON expediting_package (destination_repacking_id)");
$this->addSql("CREATE INDEX expediting_package_source_repacking_id_idx ON expediting_package (source_repacking_id)");
$this->addSql("CREATE INDEX expediting_package_created_by_idx ON expediting_package (created_by)");
$this->addSql("CREATE INDEX expediting_package_updated_by_idx ON expediting_package (updated_by)");
}
public function down(Schema $schema): void
{
$this->addSql("DROP TABLE IF EXISTS expediting_package");
}
}