chatbot / src /db /models.py
jawadsaghir12's picture
new update
8c77cd6
"""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)