api-admim/app/schemas/endereco_schemas.py

65 lines
1.9 KiB
Python

# Importações de bibliotecas padrão
from typing import Annotated, Optional
from uuid import UUID
# Importações de bibliotecas de terceiros
from pydantic import BaseModel, Field, ConfigDict
from .utils import UuidMixinSchema, TimestampMixinSchema, UuidsMixinSchema
from app.schemas.tipo_endereco_schemas import Consulta as ConsultaSchema
class EnderecoCreate(BaseModel):
model_config = ConfigDict(from_attributes=True)
endereco_pessoa_status: bool
endereco_pessoa_descricao: str = Field(min_length=3, max_length=50)
endereco_pessoa_numero: str = Field(min_length=1, max_length=8)
endereco_pessoa_complemento: str = Field(min_length=3, max_length=50, default="S/N")
endereco_pessoa_cep: str = Field(min_length=8, max_length=8)
fk_tipo_endereco_uuid: UUID
class Create(EnderecoCreate):
fk_pessoa_uuid: UUID
class Request(TimestampMixinSchema, Create, UuidMixinSchema):
uuid: UUID | None = None
fk_pessoa_uuid: UUID | None = None
relacao_tipo_endereco: ConsultaSchema | None = None
# relacao_tipo_endereco: UUIDSchema
class EnderecoRequest(Request):
pass
class UpdateSchema(BaseModel):
model_config = ConfigDict(from_attributes=True)
uuid: UUID | None = None
endereco_pessoa_status: bool
endereco_pessoa_descricao: Optional[Annotated[str, Field(max_length=50)]] = None
endereco_pessoa_numero: Optional[Annotated[str, Field(max_length=8)]] = None
endereco_pessoa_complemento: Optional[Annotated[str, Field(max_length=50)]] = None
endereco_pessoa_cep: Optional[Annotated[str, Field(max_length=8)]] = None
fk_tipo_endereco_uuid: UUID | None = None
class EnderecoBaseUpdate(UpdateSchema):
pass
class IdRequest(UuidMixinSchema):
pass
class IdsRequest(UuidsMixinSchema):
pass
class UpdateRequest(UpdateSchema, IdRequest):
pass
class UpdateManyRequest(UpdateSchema, IdRequest):
pass