"""tokens for bookmarklet-based publicacoes.mj.pt imports

Revision ID: 0015
Revises: 0014
Create Date: 2026-04-20

Short-lived (24h) tokens used by the browser bookmarklet to POST scraped
HTML back to the server. Replaces a session cookie because the POST comes
from publicacoes.mj.pt origin (cross-origin, CORS-scoped), where our
session cookie isn't available.
"""
from alembic import op


revision = "0015"
down_revision = "0014"
branch_labels = None
depends_on = None


def upgrade() -> None:
    op.execute("""
        CREATE TABLE mj_import_tokens (
          token       TEXT PRIMARY KEY,
          user_id     UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
          created_at  TIMESTAMPTZ NOT NULL DEFAULT now(),
          expires_at  TIMESTAMPTZ NOT NULL,
          last_used_at TIMESTAMPTZ,
          uses        INT NOT NULL DEFAULT 0
        )
    """)
    op.execute("CREATE INDEX ix_mj_tokens_user ON mj_import_tokens(user_id)")


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