Skip to content

schemas.py

Define as validações e serializações de dados com Pydantic.

Classes

ProductBase

  • nome: Nome do produto.
  • descricao: Descrição opcional.
  • preço: Preço do produto.
  • categoria: Categoria do produto.
  • email_fornecedor: E-mail do fornecedor.

Bases: BaseModel

Source code in backend\schemas.py
 7
 8
 9
10
11
12
13
14
15
16
17
18
class ProductBase(BaseModel):
    nome: str
    descricao: Optional[str] = None
    preço: PositiveFloat
    categoria: str
    email_fornecedor: EmailStr

    @field_validator("categoria")
    def check_categoria(cls, v):
        if v in [item.value for item in CategoriaBase]:
            return v
        raise ValueError("Categoria inválida")

productCreate

Herdado de ProductBase. Usado para criação de produtos.

Bases: ProductBase

Source code in backend\schemas.py
21
22
class productCreate(ProductBase):
    pass

productResponse

Herdado de ProductBase. Inclui o ID e a data de criação.

Bases: ProductBase

Source code in backend\schemas.py
24
25
26
27
28
29
class productResponse(ProductBase):
    id: int
    dt_criado: datetime

    class Config:
        from_attributes = True

productUpdate

Herdado de ProductBase. Todos os campos são opcionais para atualização parcial.

Bases: ProductBase

Source code in backend\schemas.py
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class productUpdate(ProductBase):
    nome: Optional[str] = None
    descricao: Optional[str] = None
    preço: Optional[PositiveFloat] = None
    categoria: Optional[str] = None
    email_fornecedor: Optional[EmailStr] = None

    @field_validator("categoria")
    def check_categoria(cls, v):
        if v is None:
            return v
        if v in [item.value for item in CategoriaBase]:
            return v
        raise ValueError("Categoria inválida")

CategoriaBase

Bases: Enum

Source code in backend\schemas.py
46
47
48
49
50
51
class CategoriaBase(Enum):
    categoria1 = "Eletrônico"
    categoria2 = "Eletrodoméstico"
    categoria3 = "Móveis"
    categoria4 = "Roupas"
    categoria5 = "Calçados"