"""SQLModel ORM models for Supabase/PostgreSQL.""" from datetime import datetime from typing import Optional from sqlmodel import Field, SQLModel class User(SQLModel, table=True): __tablename__ = "users" id: Optional[int] = Field(default=None, primary_key=True) email: str = Field(index=True, sa_column_kwargs={"unique": True}) name: str password_hash: str is_active: bool = Field(default=True) created_at: datetime = Field(default_factory=datetime.utcnow, nullable=False) class UserSession(SQLModel, table=True): __tablename__ = "user_sessions" id: Optional[int] = Field(default=None, primary_key=True) user_id: int = Field(foreign_key="users.id") login_at: datetime = Field(default_factory=datetime.utcnow, nullable=False) logout_at: Optional[datetime] = Field(default=None) last_activity: datetime = Field(default_factory=datetime.utcnow, nullable=False) ip_address: Optional[str] = None user_agent: Optional[str] = None is_active: bool = Field(default=True) class Conversation(SQLModel, table=True): __tablename__ = "conversations" id: Optional[int] = Field(default=None, primary_key=True) user_id: int = Field(foreign_key="users.id", index=True) title: Optional[str] = None is_deleted: bool = Field(default=False, index=True) created_at: datetime = Field(default_factory=datetime.utcnow, nullable=False, index=True) last_message_at: datetime = Field(default_factory=datetime.utcnow, nullable=False, index=True) class Message(SQLModel, table=True): __tablename__ = "messages" id: Optional[int] = Field(default=None, primary_key=True) conversation_id: int = Field(foreign_key="conversations.id") sender_id: int = Field(foreign_key="users.id") content: str created_at: datetime = Field(default_factory=datetime.utcnow, nullable=False)