41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
"""preserve ordered gear evidence on catches
|
|
|
|
Revision ID: 0022
|
|
Revises: 0021
|
|
"""
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
|
|
revision = "0022"
|
|
down_revision = "0021"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.create_table(
|
|
"catch_tackle_component",
|
|
sa.Column("id", sa.Uuid(), primary_key=True),
|
|
sa.Column("catch_report_id", sa.Uuid(), sa.ForeignKey("catch_report.id"), nullable=False),
|
|
sa.Column("tackle_item_id", sa.Uuid(), sa.ForeignKey("tackle_item.id")),
|
|
sa.Column("rig_id", sa.Uuid(), sa.ForeignKey("rig.id")),
|
|
sa.Column("role", sa.String(50), nullable=False),
|
|
sa.Column("position", sa.Integer(), nullable=False),
|
|
sa.Column("raw_value", sa.String(200), nullable=False),
|
|
sa.Column("source_system", sa.String(50)),
|
|
sa.Column("source_external_id", sa.String(200)),
|
|
sa.Column("source_url", sa.Text()),
|
|
sa.Column("raw_payload", sa.JSON()),
|
|
sa.UniqueConstraint("catch_report_id", "position"),
|
|
sa.CheckConstraint(
|
|
"NOT (tackle_item_id IS NOT NULL AND rig_id IS NOT NULL)",
|
|
name="ck_catch_tackle_one_canonical_target",
|
|
),
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_table("catch_tackle_component")
|