"""initial schema Revision ID: 0001 Revises: Create Date: 2026-05-07 """ from __future__ import annotations from typing import Sequence, Union import sqlalchemy as sa from alembic import op revision: str = "0001" down_revision: Union[str, None] = None branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.create_table( "preferences", sa.Column("id", sa.Integer, primary_key=True), sa.Column("user_email", sa.String(320), nullable=False), sa.Column("text", sa.Text, nullable=False), sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), ) op.create_index("ix_preferences_user_email", "preferences", ["user_email"]) op.create_table( "chat_messages", sa.Column("id", sa.Integer, primary_key=True), sa.Column("user_email", sa.String(320), nullable=False), sa.Column("role", sa.String(16), nullable=False), sa.Column("content", sa.Text, nullable=False), sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), ) op.create_index("ix_chat_user_created", "chat_messages", ["user_email", "created_at"]) op.create_table( "reports", sa.Column("id", sa.Integer, primary_key=True), sa.Column("user_email", sa.String(320), nullable=False), sa.Column("summary_md", sa.Text, nullable=False), sa.Column("summary_doc_path", sa.String(512), nullable=False), sa.Column("full_doc_path", sa.String(512), nullable=False), sa.Column("generated_at", sa.DateTime(timezone=True), nullable=False), ) op.create_index("ix_reports_user_email", "reports", ["user_email"]) op.create_table( "feedback_events", sa.Column("id", sa.Integer, primary_key=True), sa.Column("user_email", sa.String(320), nullable=False), sa.Column("rating", sa.String(8), nullable=False), sa.Column("message_text", sa.Text, nullable=False), sa.Column("extracted_insight", sa.Text, nullable=False), sa.Column("preference_id", sa.Integer, sa.ForeignKey("preferences.id"), nullable=True), sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), ) op.create_index("ix_feedback_user_email", "feedback_events", ["user_email"]) def downgrade() -> None: op.drop_table("feedback_events") op.drop_table("reports") op.drop_table("chat_messages") op.drop_table("preferences")