basic profile
This commit is contained in:
73
packages/backend/app/schemas.py
Normal file
73
packages/backend/app/schemas.py
Normal file
@@ -0,0 +1,73 @@
|
||||
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
|
||||
Reference in New Issue
Block a user