50 lines
773 B
TypeScript
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(),
|
|
})
|