import uuid from datetime import datetime from sqlmodel import Field, Relationship, SQLModel from typing import TYPE_CHECKING if TYPE_CHECKING: from .message import Message class Chat(SQLModel, table=True): id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True, index=True) user_id: uuid.UUID = Field(index=True) title: str = Field(default="New Chat", max_length=100) created_at: datetime = Field(default_factory=datetime.utcnow, nullable=False) updated_at: datetime = Field( default_factory=datetime.utcnow, nullable=False, sa_column_kwargs={"onupdate": datetime.utcnow} ) messages: list["Message"] = Relationship( back_populates="chat", sa_relationship_kwargs={"cascade": "all, delete-orphan"} )