"""add question insight message index

Revision ID: 0013_question_insight_indexes
Revises: 0012_knowledge_latest_only
"""

from alembic import context, op
import sqlalchemy as sa


revision = "0013_question_insight_indexes"
down_revision = "0012_knowledge_latest_only"
branch_labels = None
depends_on = None


def upgrade() -> None:
    _create_index_if_missing("sys_chat_message", "ix_chat_message_role_created", ["role", "created_at"])


def downgrade() -> None:
    indexes = {"ix_chat_message_role_created"} if context.is_offline_mode() else {
        item["name"] for item in sa.inspect(op.get_bind()).get_indexes("sys_chat_message")
    }
    if "ix_chat_message_role_created" in indexes:
        op.drop_index("ix_chat_message_role_created", table_name="sys_chat_message")


def _create_index_if_missing(table: str, name: str, columns: list[str]) -> None:
    indexes = set() if context.is_offline_mode() else {
        item["name"] for item in sa.inspect(op.get_bind()).get_indexes(table)
    }
    if name not in indexes:
        op.create_index(name, table, columns)
