"""AI Mode threads and their turns. Revision ID: a5b6c7d8e9f0 Revises: f4a5b6c7d8e9 """ import sqlalchemy as sa from alembic import op revision = "a5b6c7d8e9f0" down_revision = "f4a5b6c7d8e9" branch_labels = None depends_on = None def upgrade(): op.create_table( "conversations", sa.Column("id", sa.Integer, primary_key=True), sa.Column("user_id", sa.Integer, sa.ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True), sa.Column("title", sa.String(200), nullable=False, server_default="New chat"), sa.Column("created_at", sa.DateTime, server_default=sa.func.now()), sa.Column("updated_at", sa.DateTime, server_default=sa.func.now()), ) op.create_table( "conversation_messages", sa.Column("id", sa.Integer, primary_key=True), sa.Column("conversation_id", sa.Integer, sa.ForeignKey("conversations.id", ondelete="CASCADE"), nullable=False, index=True), sa.Column("role", sa.String(16), nullable=False), sa.Column("content", sa.Text, nullable=False), # What the answer was allowed to cite after filtering, so reopening a # thread shows the links it showed at the time. sa.Column("citations", sa.JSON, nullable=False, server_default="[]"), sa.Column("created_at", sa.DateTime, server_default=sa.func.now()), ) def downgrade(): op.drop_table("conversation_messages") op.drop_table("conversations")