"""Add attribute set registry tables for baseline sync.

Revision ID: 0019_add_attribute_set_registry_tables
Revises: 0018_add_baseline_registry_tables
Create Date: 2026-03-04

"""

from alembic import op
import sqlalchemy as sa

revision = "0019_add_attribute_set_registry_tables"
down_revision = "0018_add_baseline_registry_tables"
branch_labels = None
depends_on = None


def upgrade() -> None:
    op.create_table(
        "magento_attribute_set_registry",
        sa.Column("id", sa.Integer(), primary_key=True, autoincrement=True),
        sa.Column("connection_id", sa.Integer(), sa.ForeignKey("magento_connections.id"), nullable=False),
        sa.Column("attribute_set_id", sa.Integer(), nullable=False),
        sa.Column("attribute_set_name", sa.Text(), nullable=False),
        sa.Column("fetched_at", sa.DateTime(timezone=True), nullable=False),
        sa.UniqueConstraint("connection_id", "attribute_set_id", name="uq_attr_set_registry_conn_setid"),
    )
    op.create_index("ix_attr_set_registry_conn_name", "magento_attribute_set_registry", ["connection_id", "attribute_set_name"])

    op.create_table(
        "magento_attribute_set_attributes",
        sa.Column("id", sa.Integer(), primary_key=True, autoincrement=True),
        sa.Column("connection_id", sa.Integer(), sa.ForeignKey("magento_connections.id"), nullable=False),
        sa.Column("attribute_set_id", sa.Integer(), nullable=False),
        sa.Column("attribute_id", sa.Integer(), nullable=False),
        sa.Column("attribute_code", sa.Text(), nullable=False),
        sa.Column("fetched_at", sa.DateTime(timezone=True), nullable=False),
        sa.UniqueConstraint("connection_id", "attribute_set_id", "attribute_code", name="uq_attr_set_attrs_conn_set_code"),
    )
    op.create_index("ix_attr_set_attrs_conn_setid", "magento_attribute_set_attributes", ["connection_id", "attribute_set_id"])


def downgrade() -> None:
    op.drop_table("magento_attribute_set_attributes")
    op.drop_table("magento_attribute_set_registry")
