33 lines
1.1 KiB
Python
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")
|