@horizon-domains/property-model
Version:
Modelo de propriedades imobiliárias v3 - Sistema de atributos dinâmicos
78 lines (72 loc) • 4.52 kB
text/typescript
import { z } from "zod"
// Schema Horizon v2.2.0 para HorizonPropertySchemaBase
// Gerado automaticamente com inferência inteligente
export const HorizonPropertySchemaBaseZod = z.object({
reference: z.string().describe("Referência"),
updated_at: z.string().describe("Última atualização").optional(),
title: z.string().max(200).describe("Título"),
description: z.string().describe("Descrição"),
seo_slug: z.string().describe("Slug SEO").optional(),
seo_title: z.string().max(60).describe("Título SEO").optional(),
seo_description: z.string().max(160).describe("Descrição SEO").optional(),
seo_keywords: z.string().max(200).describe("Palavras-chave SEO").optional(),
main_image: z.any().describe("Imagem principal").optional(),
images: z.array(z.any()).describe("Imagens"),
videos: z.array(z.any()).describe("Vídeos"),
virtual_tours: z.array(z.any()).describe("Tours virtuais"),
documents: z.array(z.any()).describe("Documentos"),
currency: z.string().describe("Moeda").optional(),
unit_area: z.string().describe("Unidade de área").optional(),
unit_distance: z.enum(["meters", "km"]).describe("Unidade de distância").optional(),
map_show_proximity: z.boolean().describe("Exibir aproximado no mapa").optional(),
operacao: z.array(z.enum(["venda", "locacao", "temporada"])).describe("Operação").optional(),
valor_venda: z.number().multipleOf(0.01).describe("Valor de venda").optional(),
valor_locacao: z.number().multipleOf(0.01).describe("Valor de locação").optional(),
valor_diaria: z.number().multipleOf(0.01).describe("Valor da diária").optional(),
valor_condominio: z.number().multipleOf(0.01).describe("Valor do condomínio").optional(),
valor_iptu: z.number().multipleOf(0.01).describe("Valor do IPTU").optional(),
area_total: z.number().min(0).describe("Área total").optional(),
area_privativa: z.number().min(0).describe("Área privativa").optional(),
area_util: z.number().min(0).describe("Área útil").optional(),
dormitorios: z.number().min(0).describe("Dormitórios").optional(),
suites: z.number().min(0).describe("Suítes").optional(),
banheiros: z.number().min(0).describe("Banheiros").optional(),
vagas_garagem: z.number().min(0).describe("Vagas de garagem").optional(),
finalidade: z.string().describe("Finalidade").optional(),
tipo: z.string().describe("Tipo do imóvel").optional(),
subtipo: z.string().describe("Sub-tipo do imóvel").optional(),
endereco_cep: z.string().max(9).describe("CEP").optional(),
endereco_estado: z.string().describe("Estado").optional(),
endereco_cidade: z.string().describe("Cidade").optional(),
endereco_bairro: z.string().describe("Bairro").optional(),
endereco_logradouro: z.string().describe("Logradouro").optional(),
endereco_numero: z.string().describe("Número").optional(),
endereco_complemento: z.string().describe("Complemento").optional(),
endereco_referencia: z.string().describe("Referência").optional(),
endereco_zona: z.string().describe("Zona").optional(),
latitude: z.number().min(-90).max(90).multipleOf(1e-8).describe("Latitude").optional(),
longitude: z.number().min(-180).max(180).multipleOf(1e-8).describe("Longitude").optional(),
mobiliado: z.boolean().describe("Mobiliado").optional(),
caracteristicas: z.array(z.string()).describe("Características").optional(),
destaque: z.boolean().describe("Imóvel em destaque").optional(),
corretor_key: z.string().describe("ID do corretor").optional(),
corretor_nome: z.string().describe("Nome do corretor").optional(),
condominio_key: z.string().describe("ID do condomínio").optional(),
condominio_nome: z.string().describe("Nome do condomínio").optional(),
tags: z.array(z.string()).describe("Tags do Imóvel").optional(),
numero_pessoas: z.number().min(0).describe("Número de pessoas").optional(),
})
// Tipo inferido a partir do schema
export type HorizonPropertySchemaBaseType = z.infer<typeof HorizonPropertySchemaBaseZod>
// Função helper para validação
export const validateHorizonPropertySchemaBase = (data: unknown): HorizonPropertySchemaBaseType => {
return HorizonPropertySchemaBaseZod.parse(data)
}
// Função helper para validação safe
export const safeValidateHorizonPropertySchemaBase = (data: unknown) => {
return HorizonPropertySchemaBaseZod.safeParse(data)
}
// Função helper para validação parcial
export const validatePartialHorizonPropertySchemaBase = (data: unknown) => {
return HorizonPropertySchemaBaseZod.partial().parse(data)
}