"""Add missing created_at and updated_at columns to tributes table

Revision ID: 0018
Revises: 0017
Create Date: 2026-06-25 00:00:00.000000

Changes:
  1. ADD created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() to tributes
  2. ADD updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() to tributes

Root cause: migration 0003 created the tributes table without the standard
TimestampMixin columns (created_at, updated_at) that the Tribute ORM model
inherits from BaseModel via TimestampMixin. The ORM maps these columns at
SELECT time, causing psycopg to raise UndefinedColumn on any query that
involves the tributes relation (including INSERT via the memorial endpoint).
"""
from typing import Sequence, Union

import sqlalchemy as sa
from alembic import op

revision: str = "0018"
down_revision: Union[str, None] = "0017"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    # Add created_at with a server default so existing rows get a value
    op.add_column(
        "tributes",
        sa.Column(
            "created_at",
            sa.DateTime(timezone=True),
            nullable=False,
            server_default=sa.text("NOW()"),
        ),
    )
    # Add updated_at with a server default so existing rows get a value
    op.add_column(
        "tributes",
        sa.Column(
            "updated_at",
            sa.DateTime(timezone=True),
            nullable=False,
            server_default=sa.text("NOW()"),
        ),
    )


def downgrade() -> None:
    op.drop_column("tributes", "updated_at")
    op.drop_column("tributes", "created_at")
