|
from pydantic import BaseModel, EmailStr, Field |
|
from typing import Optional, List |
|
from datetime import datetime |
|
|
|
class UserBase(BaseModel): |
|
username: str = Field(..., min_length=3, max_length=50) |
|
first_name: str = Field(..., min_length=1, max_length=50) |
|
last_name: str = Field(..., min_length=1, max_length=50) |
|
email: EmailStr |
|
age: Optional[int] = Field(None, ge=0, le=120) |
|
preferences: Optional[List[str]] = None |
|
|
|
class UserCreate(UserBase): |
|
password: str = Field(..., min_length=8) |
|
|
|
class UserUpdate(BaseModel): |
|
username: Optional[str] = Field(None, min_length=3, max_length=50) |
|
first_name: Optional[str] = Field(None, min_length=1, max_length=50) |
|
last_name: Optional[str] = Field(None, min_length=1, max_length=50) |
|
email: Optional[EmailStr] = None |
|
age: Optional[int] = Field(None, ge=0, le=120) |
|
preferences: Optional[List[str]] = None |
|
password: Optional[str] = Field(None, min_length=8) |
|
|
|
class User(UserBase): |
|
id: int |
|
is_active: bool |
|
is_admin: bool |
|
created_at: datetime |
|
updated_at: datetime |
|
|
|
class Config: |
|
orm_mode = True |
|
|
|
class UserEmbeddingsBase(BaseModel): |
|
embeddings: List[float] |
|
|
|
class UserEmbeddingsCreate(UserEmbeddingsBase): |
|
pass |
|
|
|
class UserEmbeddings(UserEmbeddingsBase): |
|
id: int |
|
user_id: int |
|
|
|
class Config: |
|
orm_mode = True |
|
|