_comuns/src/consulta.ts
2025-12-11 14:53:24 -03:00

50 lines
773 B
TypeScript

import z from "zod"
export enum operadores {
"=" = "=",
"!=" = "!=",
">" = ">",
">=" = ">=",
"<" = "<",
"<=" = "<=",
like = "like",
in = "in",
isNull = "isnull",
}
export type tipoFiltro = {
coluna: string
valor: any
operador: keyof typeof operadores | operadores
ou?: boolean
}
export type interfaceConsulta = {
offset?: number
limit?: number
filtros?: tipoFiltro[]
ordem?: string
ordemTipo?: "asc" | "desc"
colunas?: string[]
apenasConsulta?: boolean
apenasContagem?: boolean
}
export const zOperadores = z.enum([
"=",
"!=",
">",
">=",
"<",
"<=",
"like",
"in",
"isNull",
])
export const zFiltro = z.object({
coluna: z.string(),
valor: z.any(),
operador: zOperadores,
ou: z.boolean().optional(),
})