from pydantic import BaseModel from typing import Optional from datetime import datetime from ipaddress import IPv4Address, IPv6Address from decimal import Decimal # ---------------------------------------------------- # Schema base - campos principais e comuns # ---------------------------------------------------- class AtoPrincipalBaseSchema(BaseModel): origem_ato_principal_id: Optional[int] = None identificacao_pedido_cgj: int tipo_ato: int codigo_selo: str codigo_ato: str nome_civil_ato: str nome_serventuario_praticou_ato: str data_solicitacao: datetime ip_maquina: Optional[IPv4Address | IPv6Address] = None inteiro_teor: str valor_entrada: Optional[Decimal] = None emolumento: Decimal taxa_judiciaria: Decimal fundos_estaduais: Decimal protocolo_protesto: Optional[str] = None protocolo_imovel: Optional[str] = None class Config: from_attributes = True # ---------------------------------------------------- # Schema de resposta (GET) — inclui metadata # ---------------------------------------------------- class AtoPrincipalResponseSchema(AtoPrincipalBaseSchema): ato_principal_id: int created_at: datetime updated_at: datetime class Config: from_attributes = True # ---------------------------------------------------- # Schema de criação (POST) # ---------------------------------------------------- class AtoPrincipalCreateSchema(AtoPrincipalBaseSchema): pass # ---------------------------------------------------- # Schema de atualização (PUT) # ---------------------------------------------------- class AtoPrincipalUpdateSchema(AtoPrincipalBaseSchema): ato_principal_id: int