update schema

This commit is contained in:
Nicola Malizia
2025-10-10 19:30:59 +02:00
parent 5fc75397e4
commit 7c4feddfa5
4 changed files with 245 additions and 33 deletions

View File

@@ -1,7 +1,83 @@
from pydantic import BaseModel
from typing import Optional
from typing import Optional, List
from datetime import date, datetime
from .models import GenderType, ShoeSystemType, BraSystemType
from .models import GenderType, ShoeSystemType, BraSystemType, SurgeryType
# =============================================================================
# SCHEMI PER I MODELLI CORRELATI (LOOKUP E SATELLITE)
# =============================================================================
# --- Profession ---
class ProfessionBase(BaseModel):
name: str
class ProfessionCreate(ProfessionBase):
pass
class Profession(ProfessionBase):
id: int
class Config: from_attributes = True
# --- Studio ---
class StudioBase(BaseModel):
name: str
class StudioCreate(StudioBase):
pass
class Studio(StudioBase):
id: int
class Config: from_attributes = True
# --- Tattoo ---
class TattooBase(BaseModel):
description: str
body_location: Optional[str] = None
class TattooCreate(TattooBase):
pass
class Tattoo(TattooBase):
id: int
celebrity_id: int
class Config: from_attributes = True
# --- Alias ---
class CelebrityAliasBase(BaseModel):
alias_name: str
class CelebrityAliasCreate(CelebrityAliasBase):
pass
class CelebrityAlias(CelebrityAliasBase):
id: int
celebrity_id: int
class Config: from_attributes = True
# --- Cosmetic Surgery ---
class CosmeticSurgeryBase(BaseModel):
surgery_type: SurgeryType
surgery_date: Optional[date] = None
new_bra_band_size: Optional[int] = None
new_bra_cup_size: Optional[str] = None
new_bra_size_system: Optional[BraSystemType] = None
notes: Optional[str] = None
class CosmeticSurgeryCreate(CosmeticSurgeryBase):
pass
class CosmeticSurgery(CosmeticSurgeryBase):
id: int
celebrity_id: int
created_at: datetime
class Config: from_attributes = True
# --- Image ---
class ImageBase(BaseModel):
file_path: str
caption: Optional[str] = None
class ImageCreate(ImageBase):
pass
class Image(ImageBase):
id: int
celebrity_id: int
uploaded_at: datetime
class Config: from_attributes = True
# =============================================================================
# SCHEMI PER CELEBRITY
# =============================================================================
# Schema di base con i campi comuni
class CelebrityBase(BaseModel):
@@ -63,11 +139,22 @@ class CelebrityUpdate(BaseModel):
official_website: Optional[str] = None
profile_image_id: Optional[int] = None
# Schema per la lettura dei dati (include campi generati dal DB)
# Schema per la lettura dei dati (include campi generati dal DB e le relazioni)
class Celebrity(CelebrityBase):
id: int
created_at: datetime
updated_at: datetime
# Campi relazionali che verranno popolati automaticamente da SQLAlchemy
images: List[Image] = []
tattoos: List[Tattoo] = []
aliases: List[CelebrityAlias] = []
# Per semplicità, possiamo usare qui gli schemi di base,
# ma in un'app reale potresti volere schemi specifici per la "lettura".
professions: List[Profession] = []
studios: List[Studio] = []
cosmetic_surgeries: List[CosmeticSurgery] = []
class Config:
from_attributes = True # Permette a Pydantic di leggere dati da un modello ORM