migrations/File/Version20200227142406_File.php line 1
<?php
declare(strict_types=1);
namespace DoctrineMigrations\File;
use App\Doctrine\Type\File\FileType;
use App\Doctrine\Type\File\ParsableStatus;
use App\Doctrine\Type\File\ParsableType;
use App\Doctrine\Type\File\UploadableStatus;
use App\Doctrine\Type\File\UploadableType;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20200227142406_File extends AbstractMigration
{
public function getDescription(): string
{
return 'Create file table';
}
public function up(Schema $schema): void
{
$this->addSql(FileType::getRegistrationSQL());
$this->addSql(ParsableType::getRegistrationSQL());
$this->addSql(ParsableStatus::getRegistrationSQL());
$this->addSql(UploadableType::getRegistrationSQL());
$this->addSql(UploadableStatus::getRegistrationSQL());
$fileType = FileType::getName();
$parsableType = ParsableType::getName();
$parsableStatus = ParsableStatus::getName();
$uploadableType = UploadableType::getName(asArray: true);
$uploadableStatus = UploadableStatus::getName();
$this->addSql("CREATE TABLE public.file (
id SERIAL PRIMARY KEY,
slug CHARACTER VARYING NOT NULL,
file_type {$fileType} NOT NULL,
name CHARACTER VARYING NOT NULL,
original_name CHARACTER VARYING NOT NULL,
path CHARACTER VARYING NOT NULL,
description CHARACTER VARYING,
mime_type CHARACTER VARYING NOT NULL,
size INTEGER NOT NULL,
parsable_type {$parsableType},
parsable_status {$parsableStatus},
uploadable_types {$uploadableType},
uploadable_status {$uploadableStatus},
data JSONB,
errors JSONB,
created_by INTEGER 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 file_slug_key UNIQUE (slug),
CONSTRAINT file_path_key UNIQUE (path)
)");
$this->addSql("COMMENT ON COLUMN public.file.data IS '(DC2Type:json_document)'");
$this->addSql("CREATE INDEX file_created_by_idx ON public.file (created_by)");
$this->addSql("CREATE INDEX file_updated_by_idx ON public.file (updated_by)");
}
public function down(Schema $schema): void
{
$this->addSql("DROP TABLE IF EXISTS public.file");
$this->addSql(UploadableStatus::getDeletionSQL());
$this->addSql(UploadableType::getDeletionSQL());
$this->addSql(ParsableStatus::getDeletionSQL());
$this->addSql(ParsableType::getDeletionSQL());
$this->addSql(FileType::getDeletionSQL());
}
}