Pipeline/backend/migrations/versions/a1b2c3d4e5f7_add_board_repo...

64 lines
2.0 KiB
Python

"""Add board_repository_links table for board-to-repository associations.
Revision ID: a1b2c3d4e5f7
Revises: f5a2b3c4d5e6
Create Date: 2026-05-19 01:00:00.000000
"""
from __future__ import annotations
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision = "a1b2c3d4e5f7"
down_revision = "f5a2b3c4d5e6"
branch_labels = None
depends_on = None
def upgrade() -> None:
"""Create board_repository_links table."""
bind = op.get_bind()
inspector = sa.inspect(bind)
if not inspector.has_table("board_repository_links"):
op.create_table(
"board_repository_links",
sa.Column("id", sa.Uuid(), nullable=False),
sa.Column("board_id", sa.Uuid(), nullable=False),
sa.Column("repository_id", sa.Uuid(), nullable=False),
sa.Column("organization_id", sa.Uuid(), nullable=False),
sa.Column("created_at", sa.DateTime(), nullable=False),
sa.PrimaryKeyConstraint("id"),
sa.ForeignKeyConstraint(["board_id"], ["boards.id"]),
sa.ForeignKeyConstraint(["repository_id"], ["forgejo_repositories.id"]),
sa.ForeignKeyConstraint(["organization_id"], ["organizations.id"]),
)
op.create_index(
"ix_board_repository_links_board_id",
"board_repository_links",
["board_id"],
)
op.create_index(
"ix_board_repository_links_repository_id",
"board_repository_links",
["repository_id"],
)
op.create_index(
"ix_board_repository_links_org_id",
"board_repository_links",
["organization_id"],
)
op.create_unique_constraint(
"uq_board_repository_links_board_repository",
"board_repository_links",
["board_id", "repository_id"],
)
def downgrade() -> None:
"""Drop board_repository_links table."""
op.drop_table("board_repository_links")