"""track per-resource sync state for IMPIC contract dumps

Revision ID: 0013
Revises: 0012
Create Date: 2026-04-20

Each yearly dump from dados.gov.pt (contratos2012.zip..contratos2026.zip) has
its own last_modified. We skip re-processing resources we've already synced.
"""
from alembic import op


revision = "0013"
down_revision = "0012"
branch_labels = None
depends_on = None


def upgrade() -> None:
    op.execute("""
        CREATE TABLE contract_sync_state (
          resource_id     TEXT PRIMARY KEY,
          resource_title  TEXT NOT NULL,
          resource_url    TEXT NOT NULL,
          last_modified   TIMESTAMPTZ NOT NULL,
          synced_at       TIMESTAMPTZ NOT NULL DEFAULT now(),
          rows_kept       INT NOT NULL DEFAULT 0,
          rows_inserted   INT NOT NULL DEFAULT 0
        )
    """)


def downgrade() -> None:
    op.execute("DROP TABLE IF EXISTS contract_sync_state")
