"""users Revision ID: 0004_users Revises: 0003_trending Create Date: 2026-09-06 Adds the users table (section 17, additive: accounts/ratings/watchlist) -- the first authenticated-user concept in Aurora Core. """ from __future__ import annotations from collections.abc import Sequence import sqlalchemy as sa from alembic import op revision: str = "0004_users" down_revision: str | None = "0003_trending" branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None def upgrade() -> None: op.create_table( "users", sa.Column("id", sa.Uuid(), primary_key=True), sa.Column( "created_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False, ), sa.Column( "updated_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False, ), sa.Column("email", sa.String(320), nullable=False, unique=True), sa.Column("hashed_password", sa.String(255), nullable=False), sa.Column("display_name", sa.String(100), nullable=True), sa.Column("is_active", sa.Boolean(), nullable=False, server_default=sa.true()), ) op.create_index("ix_users_email", "users", ["email"]) def downgrade() -> None: op.drop_index("ix_users_email", table_name="users") op.drop_table("users")