70 lines
3.1 KiB
Python
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")
|