|
from sqlmodel import SQLModel, Field, Relationship |
|
from typing import Optional, List, TYPE_CHECKING |
|
|
|
|
|
|
|
if TYPE_CHECKING: |
|
from .chat import ChatSession |
|
|
|
class UserBase(SQLModel): |
|
username: str = Field(index=True, unique=True) |
|
email: Optional[str] = Field(default=None, index=True, unique=True) |
|
full_name: Optional[str] = None |
|
disabled: bool = False |
|
|
|
class User(UserBase, table=True): |
|
id: Optional[int] = Field(default=None, primary_key=True) |
|
hashed_password: str |
|
|
|
|
|
|
|
|
|
|
|
chat_sessions: List["ChatSession"] = Relationship(back_populates="user") |
|
|
|
|
|
class UserCreate(UserBase): |
|
password: str |
|
|
|
class UserPublic(UserBase): |
|
id: int |