from datetime import datetime from core_db import AuditMixin, Base, EntityMixin from sqlalchemy import DateTime, String from sqlalchemy.orm import Mapped, mapped_column class Session(EntityMixin, AuditMixin, Base): __tablename__ = "session" app_id: Mapped[str] = mapped_column(String(36), index=True) user_id: Mapped[str] = mapped_column(String(36), index=True) channel_type: Mapped[str] = mapped_column(String(32)) session_status: Mapped[str] = mapped_column(String(32), default="active") title: Mapped[str | None] = mapped_column(String(256), nullable=True) runtime_target_type: Mapped[str | None] = mapped_column(String(32), nullable=True) runtime_target_id: Mapped[str | None] = mapped_column(String(36), nullable=True) runtime_target_config_id: Mapped[str | None] = mapped_column(String(36), nullable=True) started_time: Mapped[datetime | None] = mapped_column(DateTime, nullable=True) last_active_time: Mapped[datetime | None] = mapped_column(DateTime, nullable=True) closed_time: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)