UNPKG

@horizon-domains/property-model

Version:

Modelo de propriedades imobiliárias v3 - Sistema de atributos dinâmicos

78 lines (72 loc) 4.52 kB
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) }