"""client to-dos and uploads

Revision ID: b7c8d9e0f1a2
Revises: 0a1b2c3d4e5f
Create Date: 2026-09-05

Schema-only (build plan §2): two tables, no data. Seeding is main/scripts/seed-todos.py.
Q's migration #2 must revise from this id.
"""

import sqlalchemy as sa
from alembic import op

revision = "b7c8d9e0f1a2"
down_revision = "0a1b2c3d4e5f"
branch_labels = None
depends_on = None


def upgrade() -> None:
    op.create_table(
        "client_todos",
        sa.Column("id", sa.Integer(), primary_key=True),
        sa.Column("owner", sa.String(16), nullable=False),
        sa.Column("title", sa.String(200), nullable=False),
        sa.Column("detail", sa.Text()),
        sa.Column("due", sa.String(40)),
        sa.Column("status", sa.String(12), nullable=False, server_default="open"),
        sa.Column("sort", sa.Integer(), nullable=False, server_default="0"),
        sa.Column("completed_by", sa.String(120)),
        sa.Column("completed_at", sa.DateTime(timezone=True)),
        sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False),
    )
    op.create_index("ix_client_todos_owner", "client_todos", ["owner"])
    op.create_table(
        "client_uploads",
        sa.Column("id", sa.Integer(), primary_key=True),
        sa.Column("todo_id", sa.Integer(), sa.ForeignKey("client_todos.id", ondelete="CASCADE"), nullable=False),
        sa.Column("original_name", sa.String(255), nullable=False),
        sa.Column("stored_name", sa.String(80), nullable=False, unique=True),
        sa.Column("content_type", sa.String(80), nullable=False),
        sa.Column("kind", sa.String(16), nullable=False),
        sa.Column("bytes", sa.Integer(), nullable=False),
        sa.Column("uploaded_by", sa.String(120), nullable=False),
        sa.Column("note", sa.Text()),
        sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False),
    )
    op.create_index("ix_client_uploads_todo_id", "client_uploads", ["todo_id"])


def downgrade() -> None:
    op.drop_index("ix_client_uploads_todo_id", table_name="client_uploads")
    op.drop_table("client_uploads")
    op.drop_index("ix_client_todos_owner", table_name="client_todos")
    op.drop_table("client_todos")
