# 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