56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class FasePaqueteInput(BaseModel):
|
|
nombre: str = Field(..., min_length=1)
|
|
orden: int = Field(0, ge=0)
|
|
|
|
|
|
class PaqueteCreate(BaseModel):
|
|
nombre: str = Field(..., min_length=1, description="Nombre del paquete")
|
|
descripcion: str | None = None
|
|
fases: list[FasePaqueteInput] = Field(default_factory=list)
|
|
|
|
|
|
class PaqueteUpdate(BaseModel):
|
|
nombre: str | None = Field(None, min_length=1)
|
|
descripcion: str | None = None
|
|
activo: bool | None = None
|
|
|
|
|
|
class ManageAction(BaseModel):
|
|
action: str = Field(..., description="Acción: addFase, updateFase, deleteFase, addServicio, removeServicio")
|
|
faseId: str | None = None
|
|
nombre: str | None = None
|
|
orden: int | None = None
|
|
servicioCatalogoId: str | None = None
|
|
fasePaqueteId: str | None = None
|
|
|
|
|
|
class FasePaqueteResponse(BaseModel):
|
|
id: str
|
|
paqueteId: str
|
|
nombre: str
|
|
orden: int
|
|
createdAt: datetime
|
|
updatedAt: datetime
|
|
servicios: list[dict] | None = None
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class PaqueteResponse(BaseModel):
|
|
id: str
|
|
nombre: str
|
|
descripcion: str | None
|
|
activo: bool
|
|
createdAt: datetime
|
|
updatedAt: datetime
|
|
fases: list[FasePaqueteResponse] | None = None
|
|
|
|
model_config = {"from_attributes": True}
|