update schema
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user