Files
anotherboobsdirectory/packages/backend/app/schemas.py
Nicola Malizia 41da3553aa basic profile
2025-10-10 19:22:01 +02:00

73 lines
2.6 KiB
Python

from pydantic import BaseModel
from typing import Optional
from datetime import date, datetime
from .models import GenderType, ShoeSystemType, BraSystemType
# Schema di base con i campi comuni
class CelebrityBase(BaseModel):
name: str
gender: GenderType
birth_date: Optional[date] = None
birth_place: Optional[str] = None
nationality: Optional[str] = None
ethnicity: Optional[str] = None
sexuality: Optional[str] = None
hair_color: Optional[str] = None
eye_color: Optional[str] = None
height_cm: Optional[int] = None
weight_kg: Optional[int] = None
body_type: Optional[str] = None
bust_cm: Optional[int] = None
waist_cm: Optional[int] = None
hips_cm: Optional[int] = None
chest_circumference_cm: Optional[int] = None
bra_band_size: Optional[int] = None
bra_cup_size: Optional[str] = None
bra_size_system: Optional[BraSystemType] = None
boobs_are_natural: Optional[bool] = None
shoe_size: Optional[float] = None
shoe_size_system: Optional[ShoeSystemType] = None
biography: Optional[str] = None
official_website: Optional[str] = None
profile_image_id: Optional[int] = None
# Schema per la creazione di una nuova celebrità (eredita da Base)
class CelebrityCreate(CelebrityBase):
pass
# Schema per l'aggiornamento (tutti i campi sono opzionali)
class CelebrityUpdate(BaseModel):
name: Optional[str] = None
gender: Optional[GenderType] = None
birth_date: Optional[date] = None
birth_place: Optional[str] = None
nationality: Optional[str] = None
ethnicity: Optional[str] = None
sexuality: Optional[str] = None
hair_color: Optional[str] = None
eye_color: Optional[str] = None
height_cm: Optional[int] = None
weight_kg: Optional[int] = None
body_type: Optional[str] = None
bust_cm: Optional[int] = None
waist_cm: Optional[int] = None
hips_cm: Optional[int] = None
chest_circumference_cm: Optional[int] = None
bra_band_size: Optional[int] = None
bra_cup_size: Optional[str] = None
bra_size_system: Optional[BraSystemType] = None
boobs_are_natural: Optional[bool] = None
shoe_size: Optional[float] = None
shoe_size_system: Optional[ShoeSystemType] = None
biography: Optional[str] = None
official_website: Optional[str] = None
profile_image_id: Optional[int] = None
# Schema per la lettura dei dati (include campi generati dal DB)
class Celebrity(CelebrityBase):
id: int
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True # Permette a Pydantic di leggere dati da un modello ORM