"""会话模型"""
from typing import Optional

from sqlalchemy import JSON, String
from sqlalchemy.orm import Mapped, mapped_column

from src.models.base import BaseModel


class Conversation(BaseModel):
    """会话模型"""
    __tablename__ = "conversations"

    PLATFORM_WEB = "web"
    PLATFORM_WECHAT_WORK = "wechat_work"
    VALID_PLATFORMS = (PLATFORM_WEB, PLATFORM_WECHAT_WORK)

    platform: Mapped[str] = mapped_column(String(20), nullable=False)
    user_id: Mapped[str] = mapped_column(String(64), nullable=False, index=True)
    context: Mapped[Optional[dict]] = mapped_column(JSON, default=dict, nullable=True)
    tenant_id: Mapped[Optional[str]] = mapped_column(String(64), index=True)

