fix maigrations
This commit is contained in:
@@ -11,71 +11,53 @@ final class Version20260221000100 extends AbstractMigration
|
||||
{
|
||||
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
|
||||
{
|
||||
// --------------------------------------------------
|
||||
// TAG TABLE
|
||||
// --------------------------------------------------
|
||||
|
||||
// KNOWLEDGE_TAG TABLE (matches Tag entity)
|
||||
$this->addSql("
|
||||
CREATE TABLE tag (
|
||||
id UUID NOT NULL,
|
||||
name VARCHAR(120) NOT NULL,
|
||||
CREATE TABLE knowledge_tag (
|
||||
id BINARY(16) NOT NULL,
|
||||
slug VARCHAR(120) NOT NULL,
|
||||
created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL,
|
||||
PRIMARY KEY(id)
|
||||
)
|
||||
label VARCHAR(180) NOT NULL,
|
||||
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("
|
||||
CREATE UNIQUE INDEX uniq_tag_slug ON tag (slug)
|
||||
");
|
||||
|
||||
// --------------------------------------------------
|
||||
// DOCUMENT_VERSION_TAG (ManyToMany)
|
||||
// --------------------------------------------------
|
||||
|
||||
$this->addSql("
|
||||
CREATE TABLE document_version_tag (
|
||||
document_version_id UUID NOT NULL,
|
||||
tag_id UUID NOT NULL,
|
||||
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)
|
||||
REFERENCES tag (id)
|
||||
ON DELETE CASCADE
|
||||
CREATE TABLE document_tag (
|
||||
document_id BINARY(16) NOT NULL,
|
||||
tag_id BINARY(16) NOT NULL,
|
||||
PRIMARY KEY(document_id, tag_id),
|
||||
KEY IDX_DOCUMENT_TAG_DOCUMENT (document_id),
|
||||
KEY IDX_DOCUMENT_TAG_TAG (tag_id),
|
||||
CONSTRAINT FK_DOCUMENT_TAG_DOCUMENT
|
||||
FOREIGN KEY (document_id)
|
||||
REFERENCES document (id)
|
||||
ON DELETE CASCADE,
|
||||
CONSTRAINT FK_DOCUMENT_TAG_TAG
|
||||
FOREIGN KEY (tag_id)
|
||||
REFERENCES knowledge_tag (id)
|
||||
ON DELETE CASCADE
|
||||
) ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8mb4
|
||||
COLLATE=utf8mb4_unicode_ci
|
||||
");
|
||||
}
|
||||
|
||||
public function down(Schema $schema): void
|
||||
{
|
||||
$this->addSql("DROP TABLE document_version_tag");
|
||||
$this->addSql("DROP TABLE tag");
|
||||
$this->addSql("DROP TABLE document_tag");
|
||||
$this->addSql("DROP TABLE knowledge_tag");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user