Clawith/backend/alembic/versions/add_chat_sessions.py

33 lines
1.1 KiB
Python

"""Add chat_sessions table and update existing chat_messages conversation_ids."""
import uuid
import sqlalchemy as sa
from alembic import op
revision = "add_chat_sessions"
down_revision = "add_agent_tool_source"
branch_labels = None
depends_on = None
def upgrade() -> None:
# 1. Create chat_sessions table (idempotent)
op.execute("""
CREATE TABLE IF NOT EXISTS chat_sessions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
agent_id UUID NOT NULL REFERENCES agents(id),
user_id UUID NOT NULL REFERENCES users(id),
title VARCHAR(200) NOT NULL DEFAULT 'New Session',
source_channel VARCHAR(20) NOT NULL DEFAULT 'web',
created_at TIMESTAMPTZ DEFAULT NOW(),
last_message_at TIMESTAMPTZ
)
""")
op.execute("CREATE INDEX IF NOT EXISTS ix_chat_sessions_agent_id ON chat_sessions (agent_id)")
op.execute("CREATE INDEX IF NOT EXISTS ix_chat_sessions_user_id ON chat_sessions (user_id)")
op.execute("CREATE INDEX IF NOT EXISTS ix_chat_sessions_created_at ON chat_sessions (created_at)")
def downgrade() -> None:
op.execute("DROP TABLE IF EXISTS chat_sessions")