fix maigrations
This commit is contained in:
@@ -11,71 +11,53 @@ final class Version20260221000100 extends AbstractMigration
|
|||||||
{
|
{
|
||||||
public function getDescription(): string
|
public function getDescription(): string
|
||||||
{
|
{
|
||||||
return 'Adds tagging system for DocumentVersion (Tag + document_version_tag)';
|
return 'Creates knowledge_tag and document_tag tables (MariaDB compatible)';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function up(Schema $schema): void
|
public function up(Schema $schema): void
|
||||||
{
|
{
|
||||||
// --------------------------------------------------
|
// KNOWLEDGE_TAG TABLE (matches Tag entity)
|
||||||
// TAG TABLE
|
|
||||||
// --------------------------------------------------
|
|
||||||
|
|
||||||
$this->addSql("
|
$this->addSql("
|
||||||
CREATE TABLE tag (
|
CREATE TABLE knowledge_tag (
|
||||||
id UUID NOT NULL,
|
id BINARY(16) NOT NULL,
|
||||||
name VARCHAR(120) NOT NULL,
|
|
||||||
slug VARCHAR(120) NOT NULL,
|
slug VARCHAR(120) NOT NULL,
|
||||||
created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL,
|
label VARCHAR(180) NOT NULL,
|
||||||
PRIMARY KEY(id)
|
description TEXT DEFAULT NULL,
|
||||||
)
|
created_at DATETIME NOT NULL,
|
||||||
|
PRIMARY KEY(id),
|
||||||
|
UNIQUE INDEX uniq_knowledge_tag_slug (slug),
|
||||||
|
INDEX idx_knowledge_tag_slug (slug),
|
||||||
|
INDEX idx_knowledge_tag_label (label)
|
||||||
|
) ENGINE=InnoDB
|
||||||
|
DEFAULT CHARSET=utf8mb4
|
||||||
|
COLLATE=utf8mb4_unicode_ci
|
||||||
");
|
");
|
||||||
|
|
||||||
|
// DOCUMENT_TAG TABLE
|
||||||
$this->addSql("
|
$this->addSql("
|
||||||
CREATE UNIQUE INDEX uniq_tag_slug ON tag (slug)
|
CREATE TABLE document_tag (
|
||||||
");
|
document_id BINARY(16) NOT NULL,
|
||||||
|
tag_id BINARY(16) NOT NULL,
|
||||||
// --------------------------------------------------
|
PRIMARY KEY(document_id, tag_id),
|
||||||
// DOCUMENT_VERSION_TAG (ManyToMany)
|
KEY IDX_DOCUMENT_TAG_DOCUMENT (document_id),
|
||||||
// --------------------------------------------------
|
KEY IDX_DOCUMENT_TAG_TAG (tag_id),
|
||||||
|
CONSTRAINT FK_DOCUMENT_TAG_DOCUMENT
|
||||||
$this->addSql("
|
FOREIGN KEY (document_id)
|
||||||
CREATE TABLE document_version_tag (
|
REFERENCES document (id)
|
||||||
document_version_id UUID NOT NULL,
|
ON DELETE CASCADE,
|
||||||
tag_id UUID NOT NULL,
|
CONSTRAINT FK_DOCUMENT_TAG_TAG
|
||||||
PRIMARY KEY(document_version_id, tag_id)
|
|
||||||
)
|
|
||||||
");
|
|
||||||
|
|
||||||
$this->addSql("
|
|
||||||
CREATE INDEX idx_dv_tag_version
|
|
||||||
ON document_version_tag (document_version_id)
|
|
||||||
");
|
|
||||||
|
|
||||||
$this->addSql("
|
|
||||||
CREATE INDEX idx_dv_tag_tag
|
|
||||||
ON document_version_tag (tag_id)
|
|
||||||
");
|
|
||||||
|
|
||||||
$this->addSql("
|
|
||||||
ALTER TABLE document_version_tag
|
|
||||||
ADD CONSTRAINT fk_dv_tag_version
|
|
||||||
FOREIGN KEY (document_version_id)
|
|
||||||
REFERENCES document_version (id)
|
|
||||||
ON DELETE CASCADE
|
|
||||||
");
|
|
||||||
|
|
||||||
$this->addSql("
|
|
||||||
ALTER TABLE document_version_tag
|
|
||||||
ADD CONSTRAINT fk_dv_tag_tag
|
|
||||||
FOREIGN KEY (tag_id)
|
FOREIGN KEY (tag_id)
|
||||||
REFERENCES tag (id)
|
REFERENCES knowledge_tag (id)
|
||||||
ON DELETE CASCADE
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB
|
||||||
|
DEFAULT CHARSET=utf8mb4
|
||||||
|
COLLATE=utf8mb4_unicode_ci
|
||||||
");
|
");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function down(Schema $schema): void
|
public function down(Schema $schema): void
|
||||||
{
|
{
|
||||||
$this->addSql("DROP TABLE document_version_tag");
|
$this->addSql("DROP TABLE document_tag");
|
||||||
$this->addSql("DROP TABLE tag");
|
$this->addSql("DROP TABLE knowledge_tag");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
40
migrations/Version20260221000300.php
Normal file
40
migrations/Version20260221000300.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
final class Version20260221000300 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return 'Creates tag_rebuild_job table (MariaDB compatible, binary UUID)';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql("
|
||||||
|
CREATE TABLE tag_rebuild_job (
|
||||||
|
id BINARY(16) NOT NULL,
|
||||||
|
status VARCHAR(16) NOT NULL,
|
||||||
|
created_at DATETIME NOT NULL,
|
||||||
|
started_at DATETIME DEFAULT NULL,
|
||||||
|
finished_at DATETIME DEFAULT NULL,
|
||||||
|
error_message TEXT DEFAULT NULL,
|
||||||
|
PRIMARY KEY(id),
|
||||||
|
INDEX idx_tag_rebuild_job_status (status),
|
||||||
|
INDEX idx_tag_rebuild_job_created_at (created_at)
|
||||||
|
) ENGINE=InnoDB
|
||||||
|
DEFAULT CHARSET=utf8mb4
|
||||||
|
COLLATE=utf8mb4_unicode_ci
|
||||||
|
");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql("DROP TABLE tag_rebuild_job");
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user