fix maigrations

This commit is contained in:
team2
2026-02-21 19:23:38 +01:00
parent 41fe7fa0d4
commit 61e6e61b8b
2 changed files with 74 additions and 52 deletions

View File

@@ -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) FOREIGN KEY (tag_id)
) REFERENCES knowledge_tag (id)
"); ON DELETE CASCADE
) ENGINE=InnoDB
$this->addSql(" DEFAULT CHARSET=utf8mb4
CREATE INDEX idx_dv_tag_version COLLATE=utf8mb4_unicode_ci
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
"); ");
} }
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");
} }
} }

View 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");
}
}