mirror of
https://github.com/R0m1k3/Reviflow.git
synced 2026-10-22 14:38:09 +02:00
Sauvegarde de l'état (réparation)
This commit is contained in:
commit
7c04fffe77
434 files changed
+83923
No files matched your search
@@ -0,0 +1,69 @@
|
||||
import uuid
|
||||
from typing import Optional, List
|
||||
from datetime import datetime
|
||||
from fastapi_users import schemas
|
||||
from pydantic import BaseModel, Field
|
||||
from .models import UserRole
|
||||
|
||||
# Learner Profile Schemas
|
||||
class LearnerProfileBase(BaseModel):
|
||||
first_name: str = Field(..., min_length=1)
|
||||
avatar_url: Optional[str] = None
|
||||
|
||||
class LearnerProfileCreate(LearnerProfileBase):
|
||||
pass
|
||||
|
||||
class LearnerProfileUpdate(BaseModel):
|
||||
first_name: Optional[str] = None
|
||||
avatar_url: Optional[str] = None
|
||||
|
||||
|
||||
class BadgeRead(BaseModel):
|
||||
id: uuid.UUID
|
||||
badge_code: str
|
||||
earned_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
class LearnerProfileRead(LearnerProfileBase):
|
||||
id: uuid.UUID
|
||||
user_id: uuid.UUID
|
||||
streak_current: int = 0
|
||||
streak_max: int = 0
|
||||
xp: int = 0
|
||||
level: int = 1
|
||||
badges: List[BadgeRead] = []
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
# User Schemas
|
||||
class UserRead(schemas.BaseUser[uuid.UUID]):
|
||||
first_name: Optional[str] = None
|
||||
username: Optional[str] = None
|
||||
role: UserRole
|
||||
openrouter_api_key: Optional[str] = None
|
||||
total_tokens_used: int = 0
|
||||
total_cost_usd: float = 0.0
|
||||
learner_profile: Optional[LearnerProfileRead] = None
|
||||
parent_id: Optional[uuid.UUID] = None
|
||||
parental_pin: Optional[str] = None
|
||||
|
||||
@property
|
||||
def has_parental_pin(self) -> bool:
|
||||
return self.parental_pin is not None
|
||||
|
||||
class UserCreate(schemas.BaseUserCreate):
|
||||
first_name: Optional[str] = None
|
||||
username: Optional[str] = None
|
||||
role: UserRole = UserRole.PARENT
|
||||
parent_id: Optional[uuid.UUID] = None
|
||||
|
||||
class UserUpdate(schemas.BaseUserUpdate):
|
||||
first_name: Optional[str] = None
|
||||
username: Optional[str] = None
|
||||
openrouter_api_key: Optional[str] = None
|
||||
role: Optional[UserRole] = None
|
||||
parent_id: Optional[uuid.UUID] = None
|
||||
parental_pin: Optional[str] = None
|
||||
Reference in new issue
Block a user