.
This commit is contained in:
parent
fa8b8d6424
commit
edcc14d0ad
6 changed files with 72 additions and 42 deletions
|
|
@ -99,29 +99,35 @@ import { z } from "zod"
|
|||
|
||||
/* =============================================================================
|
||||
OPERADORES POSTGRESQL POR TIPO
|
||||
============================================================================= */
|
||||
============================================================================= */
|
||||
|
||||
export enum operadores26 {
|
||||
"=" = "=",
|
||||
"!=" = "!=",
|
||||
">" = ">",
|
||||
">=" = ">=",
|
||||
"<" = "<",
|
||||
"<=" = "<=",
|
||||
like = "like",
|
||||
in = "in",
|
||||
}
|
||||
|
||||
type PgOpsNumber = {
|
||||
"="?: number
|
||||
"!="?: number
|
||||
">"?: number
|
||||
">="?: number
|
||||
"<"?: number
|
||||
"<="?: number
|
||||
in?: number[]
|
||||
[K in Extract<operadores26, "=" | "!=" | ">" | ">=" | "<" | "<=">]?: number
|
||||
} & {
|
||||
[K in Extract<operadores26, "in">]?: number[]
|
||||
}
|
||||
|
||||
type PgOpsString = {
|
||||
"="?: string
|
||||
"!="?: string
|
||||
like?: string
|
||||
in?: string[]
|
||||
[K in Extract<operadores26, "=" | "!=" | "like">]?: string
|
||||
} & {
|
||||
[K in Extract<operadores26, "in">]?: string[]
|
||||
}
|
||||
|
||||
type PgOpsBoolean = {
|
||||
"="?: boolean
|
||||
"!="?: boolean
|
||||
in?: boolean[]
|
||||
[K in Extract<operadores26, "=" | "!=">]?: boolean
|
||||
} & {
|
||||
[K in Extract<operadores26, "in">]?: boolean[]
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
|
|
@ -180,7 +186,7 @@ export type tipoFiltro26<T> = FiltroCampos<T> & {
|
|||
VALIDAÇÃO ESTRUTURAL (ZOD)
|
||||
============================================================================= */
|
||||
|
||||
const zOperadores = z.enum(["=", "!=", ">", ">=", "<", "<=", "like", "in"])
|
||||
const zOperadores = z.nativeEnum(operadores26)
|
||||
const zValor = z.any()
|
||||
const zCondicao = z.record(zOperadores, zValor)
|
||||
|
||||
|
|
@ -208,15 +214,17 @@ type Pessoa = {
|
|||
}
|
||||
|
||||
const _filtro: tipoFiltro26<Pessoa> = {
|
||||
idade: { ">=": 18 },
|
||||
idade: { [operadores26[">="]]: 18 },
|
||||
|
||||
OU: [
|
||||
{ nome: { like: "%pa%" } },
|
||||
{ nome: { [operadores26.like]: "%pa%" } },
|
||||
{
|
||||
E: [
|
||||
{ carro: { ano: { "=": 2020 } } },
|
||||
{ carro: { modelo: { in: ["Civic", "Corolla"] } } },
|
||||
{ carro: { ano: { [operadores26["="]]: 2020 } } },
|
||||
{ carro: { modelo: { [operadores26.in]: ["Civic", "Corolla"] } } },
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
export const criarFiltro26 = <T>(filtro: tipoFiltro26<T>) => filtro
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue