saveinmed/saveinmed-bff/src/modules/pedidos/schemas.py
Tiago Yamamoto b39caf0fd0 first commit
2025-12-17 13:58:26 -03:00

70 lines
3.1 KiB
Python

from __future__ import annotations
from typing import Any, Dict, Literal
from pydantic import BaseModel, ConfigDict, Field
class PedidoBase(BaseModel):
model_config = ConfigDict(populate_by_name=True, extra="forbid")
status: Literal["pendente", "aprovado", "entregue", "cancelado"] = Field(alias="status")
valor_total: float | None = Field(default=None, ge=0, alias="valor-total")
valor_produtos: float | None = Field(default=None, ge=0, alias="valor-produtos")
valor_frete: float | None = Field(default=None, ge=0, alias="valor-frete")
itens: list[str] = Field(default_factory=list, alias="itens")
quantidade: list[int] = Field(default_factory=list, alias="quantidade")
pagamentos: str | Dict[str, Any] | None = Field(
default=None, alias="pagamentos"
)
carrinhos: str | Dict[str, Any] | None = Field(default=None, alias="carrinhos")
usuarios: str | Dict[str, Any] | None = Field(default=None, alias="usuarios")
faturas: str | Dict[str, Any] | None = Field(default=None, alias="faturas")
class PedidoCreate(PedidoBase):
pass
class PedidoCreateRequest(BaseModel):
model_config = ConfigDict(populate_by_name=True, extra="forbid")
document_id: str | None = Field(default=None, alias="documentId", min_length=1, max_length=255)
data: PedidoCreate = Field(alias="data")
class PedidoUpdate(BaseModel):
model_config = ConfigDict(populate_by_name=True, extra="forbid")
status: Literal["pendente", "aprovado", "entregue", "cancelado"] | None = Field(default=None, alias="status")
valor_total: float | None = Field(default=None, ge=0, alias="valor-total")
valor_produtos: float | None = Field(default=None, ge=0, alias="valor-produtos")
valor_frete: float | None = Field(default=None, ge=0, alias="valor-frete")
itens: list[str] | None = Field(default=None, alias="itens")
quantidade: list[int] | None = Field(default=None, alias="quantidade")
pagamentos: str | Dict[str, Any] | None = Field(default=None, alias="pagamentos")
carrinhos: str | Dict[str, Any] | None = Field(default=None, alias="carrinhos")
usuarios: str | Dict[str, Any] | None = Field(default=None, alias="usuarios")
faturas: str | Dict[str, Any] | None = Field(default=None, alias="faturas")
class PedidoStatusUpdate(BaseModel):
status: Literal["pendente", "aprovado", "entregue", "cancelado"]
class PedidoOut(BaseModel):
model_config = ConfigDict(from_attributes=True, populate_by_name=True)
id: str = Field(alias="id")
status: Literal["pendente", "aprovado", "entregue", "cancelado"] = Field(alias="status")
valor_total: float | None = Field(alias="valor-total")
valor_produtos: float | None = Field(alias="valor-produtos")
valor_frete: float | None = Field(alias="valor-frete")
itens: list[str] = Field(alias="itens")
quantidade: list[int] = Field(alias="quantidade")
pagamentos: str | None = Field(alias="pagamentos")
carrinhos: str | None = Field(alias="carrinhos")
usuarios: str | None = Field(alias="usuarios")
faturas: str | None = Field(alias="faturas")
created_at: str = Field(alias="createdAt")
updated_at: str = Field(alias="updatedAt")