fixes
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-09-25 15:32:19 +09:00
parent bd7a481803
commit dd7349bb4c
9 changed files with 646 additions and 80 deletions

View File

@@ -7,11 +7,37 @@ from pydantic import BaseModel, EmailStr, Field, field_validator
class UserBase(BaseModel):
email: EmailStr
username: Optional[str] = None
phone: Optional[str] = None
first_name: str = Field(..., min_length=1, max_length=50)
last_name: str = Field(..., min_length=1, max_length=50)
phone_number: Optional[str] = None # Альтернативное поле для phone
first_name: Optional[str] = ""
last_name: Optional[str] = ""
full_name: Optional[str] = None # Будет разделено на first_name и last_name
date_of_birth: Optional[date] = None
bio: Optional[str] = Field(None, max_length=500)
@field_validator("full_name")
@classmethod
def split_full_name(cls, v, info):
"""Разделяет полное имя на first_name и last_name."""
if v:
values = info.data
parts = v.split(" ", 1)
if "first_name" in values and not values["first_name"]:
info.data["first_name"] = parts[0]
if "last_name" in values and not values["last_name"]:
info.data["last_name"] = parts[1] if len(parts) > 1 else ""
return v
@field_validator("phone_number")
@classmethod
def map_phone_number(cls, v, info):
"""Копирует phone_number в phone если phone не указан."""
if v:
values = info.data
if "phone" in values and not values["phone"]:
info.data["phone"] = v
return v
class UserCreate(UserBase):
@@ -65,7 +91,8 @@ class UserResponse(UserBase):
class UserLogin(BaseModel):
email: EmailStr
email: Optional[EmailStr] = None
username: Optional[str] = None
password: str