73 lines
2.6 KiB
Python
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 |