diff --git a/dist-import/pilao-de-dados/Pilao/index.d.ts b/dist-import/pilao-de-dados/Pilao/index.d.ts new file mode 100644 index 0000000..c788ccf --- /dev/null +++ b/dist-import/pilao-de-dados/Pilao/index.d.ts @@ -0,0 +1,56 @@ +/** Drive completo do piilão de dados */ +import { type tipoResposta } from "p-respostas"; +import type { z } from "zod"; +import type { zp_enviar_registros } from "../_enviar_registros"; +import { type zp_deletar_registros } from "../variaveis"; +import type { visoes_pilao } from "../visoes/listaDeVisoes"; +import type { tipo_pilao_api } from "./pilao-api.ts"; +import type { tipoConstrutorPilao, tipoRetornoSerieconsulta } from "./tipagem"; +declare class ClassPilao { + #private; + constructor({ conta, produto, emDesenvolvimento, ver_log, }: tipoConstrutorPilao & { + ver_log?: boolean; + emDesenvolvimento?: boolean; + }); + rotaEnviarRegistros(): { + rota: string; + url: string; + }; + rotaDeletarRegistro(): { + rota: string; + url: string; + }; + rotaConsultarSerie(tipoVisao: keyof typeof visoes_pilao | ":tipoVisao"): { + rota: string; + url: string; + }; + rotaIframeSerie(tipoVisao: keyof typeof visoes_pilao | ":tipoVisao"): { + rota: string; + url: string; + }; + rotaFuncaoApi(funcao: keyof tipo_pilao_api | ":funcao"): { + rota: string; + url: string; + }; + consultarApi(funcao: T, parametros: tipo_pilao_api[T]["pr"]): Promise>; + get baseUrlApi(): "https://carro-de-boi.idz.one" | "http://localhost:5080"; + get baseUrlSite(): "https://carro-de-boi.idz.one" | "http://localhost:5081"; + validarCliente(_: any): tipoResposta; + adicionarRegistroParaEnviar(tabela: string, ...registros: z.infer["registros"]): this; + adicionarCodigoParaDeletar(tabela: string, ...codigos: z.infer["codigos"]): this; + private processarRegistros; + salvarRegistros(): Promise>; + serieConsultar(tipoVisao: T, parametros: z.infer<(typeof visoes_pilao)[T]>): { + dados: () => Promise>>; + url: () => string; + }; + urlLaboratorio(): { + rota: string; + url: string; + }; +} +export declare const Pilao: (_: tipoConstrutorPilao & { + ver_log?: boolean; + emDesenvolvimento?: boolean; +}) => ClassPilao; +export {}; diff --git a/dist-import/pilao-de-dados/Pilao/index.js b/dist-import/pilao-de-dados/Pilao/index.js new file mode 100644 index 0000000..38c14d6 --- /dev/null +++ b/dist-import/pilao-de-dados/Pilao/index.js @@ -0,0 +1,211 @@ +/** Drive completo do piilão de dados */ +var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +}; +var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var _ClassPilao_instances, _ClassPilao_produto, _ClassPilao_conta, _ClassPilao_emDesenvolvimento, _ClassPilao_ver_log, _ClassPilao_registrosParaEnvio, _ClassPilao_codigosParaDeletar, _ClassPilao_gerarUrl, _ClassPilao_salvarEnviarRegistros, _ClassPilao_salvarDeletarRegistros; +import crossFetch from "cross-fetch"; +import { nomeVariavel } from "p-comuns"; +import { respostaComuns } from "p-respostas"; +import { PREFIXO_PILAO } from "../variaveis"; +class ClassPilao { + constructor({ conta, produto, emDesenvolvimento = false, ver_log = false, }) { + _ClassPilao_instances.add(this); + _ClassPilao_produto.set(this, void 0); + _ClassPilao_conta.set(this, void 0); + _ClassPilao_emDesenvolvimento.set(this, void 0); + _ClassPilao_ver_log.set(this, void 0); + _ClassPilao_registrosParaEnvio.set(this, {}); + _ClassPilao_codigosParaDeletar.set(this, {}); + __classPrivateFieldSet(this, _ClassPilao_produto, produto, "f"); + __classPrivateFieldSet(this, _ClassPilao_conta, conta, "f"); + __classPrivateFieldSet(this, _ClassPilao_emDesenvolvimento, emDesenvolvimento, "f"); + __classPrivateFieldSet(this, _ClassPilao_ver_log, ver_log, "f"); + } + rotaEnviarRegistros() { + return __classPrivateFieldGet(this, _ClassPilao_instances, "m", _ClassPilao_gerarUrl).call(this, "enviar-registros"); + } + rotaDeletarRegistro() { + return __classPrivateFieldGet(this, _ClassPilao_instances, "m", _ClassPilao_gerarUrl).call(this, "deletar-registros"); + } + rotaConsultarSerie(tipoVisao) { + return __classPrivateFieldGet(this, _ClassPilao_instances, "m", _ClassPilao_gerarUrl).call(this, "consultar-serie", tipoVisao); + } + rotaIframeSerie(tipoVisao) { + const rota = `${PREFIXO_PILAO}/consultar-serie/${__classPrivateFieldGet(this, _ClassPilao_produto, "f")}/${__classPrivateFieldGet(this, _ClassPilao_conta, "f")}/${tipoVisao}`; + const url = `${this.baseUrlSite}${rota}`; + return { rota, url }; + } + rotaFuncaoApi(funcao) { + return __classPrivateFieldGet(this, _ClassPilao_instances, "m", _ClassPilao_gerarUrl).call(this, "API", funcao); + } + async consultarApi(funcao, parametros) { + try { + const response = await crossFetch(this.rotaFuncaoApi(funcao).url, { + body: JSON.stringify(parametros), + method: "POST", + headers: { "Content-Type": "application/json" }, + }); + const texto = await response.text(); + try { + const json = JSON.parse(texto); + return json; + } + catch { + return respostaComuns.erro("Consulta não retornou json válido", [texto]); + } + } + catch (erro) { + console.error(erro); + return respostaComuns.erroInterno({ + erro, + local: nomeVariavel({ ClassPilao }), + }); + } + } + get baseUrlApi() { + return __classPrivateFieldGet(this, _ClassPilao_emDesenvolvimento, "f") + ? "http://localhost:5080" + : "https://carro-de-boi.idz.one"; + } + get baseUrlSite() { + return __classPrivateFieldGet(this, _ClassPilao_emDesenvolvimento, "f") + ? "http://localhost:5081" + : "https://carro-de-boi.idz.one"; + } + validarCliente(_) { + if (!_?.conta) + return respostaComuns.erro("Conta não informada"); + if (!_?.produto) + return respostaComuns.erro("Produto não informado"); + return respostaComuns.valor(_); + } + adicionarRegistroParaEnviar(tabela, ...registros) { + __classPrivateFieldGet(this, _ClassPilao_registrosParaEnvio, "f")[tabela] = [ + ...(__classPrivateFieldGet(this, _ClassPilao_registrosParaEnvio, "f")[tabela] || []), + ...registros, + ]; + return this; + } + adicionarCodigoParaDeletar(tabela, ...codigos) { + __classPrivateFieldGet(this, _ClassPilao_codigosParaDeletar, "f")[tabela] = [ + ...(__classPrivateFieldGet(this, _ClassPilao_codigosParaDeletar, "f")[tabela] || []), + ...codigos, + ]; + return this; + } + async processarRegistros(url, registros, tabela, acao) { + const tamanhoBlocos = 1000; + while (registros.length > 0) { + const bloco = registros + .splice(0, tamanhoBlocos) + .map((r) => Object.fromEntries(Object.entries(r).map(([k, v]) => [k, v === undefined ? null : v]))); + const resp = await crossFetch(url, { + method: "POST", + body: JSON.stringify({ tabela, registros: bloco }), + headers: { "Content-Type": "application/json" }, + }) + .then(async (r) => { + const texto = await r.text(); + try { + const json = JSON.parse(texto); + return json; + } + catch { + return respostaComuns.erro("Consulta não retornou json válido", [ + texto, + ]); + } + }) + .catch((e) => respostaComuns.erro(`Erro ao ${acao} registros`, [e.message])); + if (resp.eErro) + return resp; + } + return respostaComuns.valor(true); + } + async salvarRegistros() { + const re = await __classPrivateFieldGet(this, _ClassPilao_instances, "m", _ClassPilao_salvarEnviarRegistros).call(this); + if (re.eErro) + return re; + const rd = await __classPrivateFieldGet(this, _ClassPilao_instances, "m", _ClassPilao_salvarDeletarRegistros).call(this); + if (rd.eErro) + return rd; + return respostaComuns.valor(true); + } + serieConsultar(tipoVisao, parametros) { + const dados = async () => { + const url = this.rotaConsultarSerie(tipoVisao).url; + const resp = await crossFetch(url.toString(), { + method: "POST", + body: JSON.stringify(parametros), + headers: { "Content-Type": "application/json" }, + }) + .then(async (r) => { + const texto = await r.text(); + try { + const json = JSON.parse(texto); + return json; + } + catch { + return respostaComuns.erro("Consulta não retornou json válido", [ + texto, + ]); + } + }) + .catch((e) => respostaComuns.erro("Erro ao enviar registros", [e.message])); + if (__classPrivateFieldGet(this, _ClassPilao_ver_log, "f")) + console.log(`[PILÃO]: buscar dados de "${JSON.stringify(parametros)}" para "${url}".`); + return resp; + }; + const url = () => { + const vUrl = this.rotaIframeSerie(tipoVisao).url; + const serie = encodeURIComponent(JSON.stringify(parametros, null, 2)); + if (__classPrivateFieldGet(this, _ClassPilao_ver_log, "f")) + console.log(`[PILÃO]: Serie Consultar url de "${JSON.stringify(serie)}" para "${vUrl}".`); + return `${vUrl}?serie=${serie}`; + }; + return { + dados, + url, + }; + } + urlLaboratorio() { + const rota = `${PREFIXO_PILAO}/laboratório/${__classPrivateFieldGet(this, _ClassPilao_produto, "f")}/${__classPrivateFieldGet(this, _ClassPilao_conta, "f")}`; + const url = `${this.baseUrlSite}${rota}`; + return { rota, url }; + } +} +_ClassPilao_produto = new WeakMap(), _ClassPilao_conta = new WeakMap(), _ClassPilao_emDesenvolvimento = new WeakMap(), _ClassPilao_ver_log = new WeakMap(), _ClassPilao_registrosParaEnvio = new WeakMap(), _ClassPilao_codigosParaDeletar = new WeakMap(), _ClassPilao_instances = new WeakSet(), _ClassPilao_gerarUrl = function _ClassPilao_gerarUrl(acao, extraPath) { + const rota = `${PREFIXO_PILAO}/api/${acao}/${__classPrivateFieldGet(this, _ClassPilao_produto, "f")}/${__classPrivateFieldGet(this, _ClassPilao_conta, "f")}${extraPath ? `/${extraPath}` : ""}`; + const url = `${this.baseUrlApi}${rota}`; + return { rota, url }; +}, _ClassPilao_salvarEnviarRegistros = async function _ClassPilao_salvarEnviarRegistros() { + for (const tabela of Object.keys(__classPrivateFieldGet(this, _ClassPilao_registrosParaEnvio, "f"))) { + const registros = __classPrivateFieldGet(this, _ClassPilao_registrosParaEnvio, "f")[tabela] || []; + const url = this.rotaEnviarRegistros().url; + if (__classPrivateFieldGet(this, _ClassPilao_ver_log, "f")) + console.log(`[PILÃO]: Enviando ${registros.length} registros na tabela "${tabela}" para "${url}".`); + const resp = await this.processarRegistros(url, registros, tabela, "enviar"); + if (resp.eErro) + return resp; + __classPrivateFieldGet(this, _ClassPilao_registrosParaEnvio, "f")[tabela] = []; + } + return respostaComuns.valor(true); +}, _ClassPilao_salvarDeletarRegistros = async function _ClassPilao_salvarDeletarRegistros() { + for (const tabela of Object.keys(__classPrivateFieldGet(this, _ClassPilao_codigosParaDeletar, "f"))) { + const codigos = [...(__classPrivateFieldGet(this, _ClassPilao_codigosParaDeletar, "f")[tabela] || [])]; + const url = this.rotaDeletarRegistro().url; + const resp = await this.processarRegistros(url, codigos, tabela, "deletar"); + if (resp.eErro) + return resp; + } + return respostaComuns.valor(true); +}; +export const Pilao = (_) => new ClassPilao(_); diff --git a/dist-import/pilao-de-dados/Pilao/pilao-api.d.ts b/dist-import/pilao-de-dados/Pilao/pilao-api.d.ts new file mode 100644 index 0000000..e2c4c75 --- /dev/null +++ b/dist-import/pilao-de-dados/Pilao/pilao-api.d.ts @@ -0,0 +1,30 @@ +import type { z } from "zod"; +import type { zp_registrar_base_dados } from "../_enviar_registros"; +/** + * { + * 'rota':{ + * pr:{}// paramentros de entrada + * rs:{}// resposta + * } + * } + */ +export type tipo_pilao_api = { + /** retorna da data e hora do servido em formato iso */ + estado_servidor: { + pr: {}; + rs: { + data_hora: string; + }; + }; + tabelas: { + pr: {}; + rs: z.infer[]; + }; + unicos: { + pr: { + tabela: string; + coluna: string; + }; + rs: any[]; + }; +}; diff --git a/dist-import/pilao-de-dados/Pilao/pilao-api.js b/dist-import/pilao-de-dados/Pilao/pilao-api.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/dist-import/pilao-de-dados/Pilao/pilao-api.js @@ -0,0 +1 @@ +export {}; diff --git a/dist-import/pilao-de-dados/Pilao/tipagem.d.ts b/dist-import/pilao-de-dados/Pilao/tipagem.d.ts new file mode 100644 index 0000000..2b2a32c --- /dev/null +++ b/dist-import/pilao-de-dados/Pilao/tipagem.d.ts @@ -0,0 +1,11 @@ +import type { z } from "zod"; +import type { visoes_pilao } from "../visoes/listaDeVisoes"; +export type tipoConstrutorPilao = { + produto: string; + conta: string; +}; +export type tipoRetornoSerieconsulta = { + registros: any[]; + legenda: string; + serie: z.infer<(typeof visoes_pilao)[T]>; +}; diff --git a/dist-import/pilao-de-dados/Pilao/tipagem.js b/dist-import/pilao-de-dados/Pilao/tipagem.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/dist-import/pilao-de-dados/Pilao/tipagem.js @@ -0,0 +1 @@ +export {}; diff --git a/dist-import/pilao-de-dados/_deletar_registros.d.ts b/dist-import/pilao-de-dados/_deletar_registros.d.ts deleted file mode 100644 index ef3fa21..0000000 --- a/dist-import/pilao-de-dados/_deletar_registros.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { tipoResposta } from "p-respostas"; -import { z } from "zod"; -import { type zp_produto_conta } from "./variaveis"; -export declare const zp_deletar_registros: z.ZodObject<{ - tabela: z.ZodString; - codigos: z.ZodArray; -}, "strip", z.ZodTypeAny, { - tabela: string; - codigos: string[]; -}, { - tabela: string; - codigos: string[]; -}>; -export declare const deletar_registros: ({ conta, produto, emDesenvolvimento }: z.infer) => ({ codigos: codigos_entrada, tabela, }: z.infer) => Promise>; diff --git a/dist-import/pilao-de-dados/_deletar_registros.js b/dist-import/pilao-de-dados/_deletar_registros.js deleted file mode 100644 index 7a0ca13..0000000 --- a/dist-import/pilao-de-dados/_deletar_registros.js +++ /dev/null @@ -1,29 +0,0 @@ -import node_fetch from "cross-fetch"; -import { respostaComuns } from "p-respostas"; -import { z } from "zod"; -import { urlPilao } from "./variaveis"; -//enviar registros para base de dados -export const zp_deletar_registros = z.object({ - tabela: z.string(), - codigos: z.array(z.string()), -}); -export const deletar_registros = ({ conta, produto, emDesenvolvimento }) => async ({ codigos: codigos_entrada, tabela, }) => { - const codigos = [...codigos_entrada]; - const url = new URL(`${urlPilao(emDesenvolvimento).api}/${Object.keys({ deletar_registros })[0]}/${produto}/${conta}`); - const tamanhoBlocos = 1000; - while (codigos.length > 0) { - const bloco = codigos.splice(0, tamanhoBlocos); - const resp = await node_fetch(url.toString(), { - method: "POST", - body: JSON.stringify({ tabela, codigos: bloco }), - headers: { "Content-Type": "application/json" }, - }) - .then((r) => r.json()) - .catch((e) => respostaComuns.erro("Erro ao enviar registros", [e.message])) - .then((r) => r); - if (resp.eErro) { - return resp; - } - } - return respostaComuns.valor(true); -}; diff --git a/dist-import/pilao-de-dados/_enviar_registros.d.ts b/dist-import/pilao-de-dados/_enviar_registros.d.ts index 88a9f95..e96f97f 100644 --- a/dist-import/pilao-de-dados/_enviar_registros.d.ts +++ b/dist-import/pilao-de-dados/_enviar_registros.d.ts @@ -1,6 +1,4 @@ -import type { tipoResposta } from "p-respostas"; import { z } from "zod"; -import { type zp_produto_conta } from "./variaveis"; export declare const zp_registrar_base_dados: z.ZodObject<{ tabela: z.ZodString; colunas: z.ZodArray[]; }>; -export declare const enviar_registros: ({ conta, produto, emDesenvolvimento, ver_log, }: z.infer) => ({ registros: registros_entrada, tabela, }: z.infer) => Promise>; diff --git a/dist-import/pilao-de-dados/_enviar_registros.js b/dist-import/pilao-de-dados/_enviar_registros.js index 2e567eb..688f1a6 100644 --- a/dist-import/pilao-de-dados/_enviar_registros.js +++ b/dist-import/pilao-de-dados/_enviar_registros.js @@ -1,12 +1,10 @@ -import node_fetch from "cross-fetch"; -import { respostaComuns } from "p-respostas"; import { z } from "zod"; -import { urlPilao, z_tipo_coluna_base_dados, } from "./variaveis"; +import { z_tipos_dados_registro } from "./variaveis"; export const zp_registrar_base_dados = z.object({ tabela: z.string(), colunas: z.array(z.object({ coluna: z.string(), - tipo: z_tipo_coluna_base_dados, + tipo: z_tipos_dados_registro, })), }); //enviar registros para base de dados @@ -14,30 +12,6 @@ export const zp_enviar_registros = z.object({ tabela: z.string(), registros: z.array(z.record(z.string(), z.object({ valor: z.any(), - tipo: z_tipo_coluna_base_dados.optional().nullable(), + tipo: z_tipos_dados_registro.optional().nullable(), }))), }); -export const enviar_registros = ({ conta, produto, emDesenvolvimento, ver_log, }) => async ({ registros: registros_entrada, tabela, }) => { - const registros = [...registros_entrada]; - const url = new URL(`${urlPilao(emDesenvolvimento).api}/${Object.keys({ enviar_registros })[0]}/${produto}/${conta}`); - if (ver_log) - console.log(`[PILÃO]: Enviando "${registros.length}" registros na tabela "${tabela}" para "${url}".`); - const tamanhoBlocos = 1000; - while (registros.length > 0) { - const bloco = registros - .splice(0, tamanhoBlocos) - .map((r) => Object.fromEntries(Object.entries(r).map(([k, v]) => [k, v === undefined ? null : v]))); - const resp = await node_fetch(url.toString(), { - method: "POST", - body: JSON.stringify({ tabela, registros: bloco }), - headers: { "Content-Type": "application/json" }, - }) - .then((r) => r.json()) - .catch((e) => respostaComuns.erro("Erro ao enviar registros", [e.message])) - .then((r) => r); - if (resp.eErro) { - return resp; - } - } - return respostaComuns.valor(true); -}; diff --git a/dist-import/pilao-de-dados/_serie_consultar.d.ts b/dist-import/pilao-de-dados/_serie_consultar.d.ts index 3e5c048..24c591f 100644 --- a/dist-import/pilao-de-dados/_serie_consultar.d.ts +++ b/dist-import/pilao-de-dados/_serie_consultar.d.ts @@ -1,7 +1,4 @@ -import type { tipoResposta } from "p-respostas"; import { z } from "zod"; -import { type zp_produto_conta } from "./variaveis"; -import type { visoes } from "./visoes"; export declare const z_filtro: z.ZodObject<{ coluna: z.ZodString; valor: z.ZodAny; @@ -15,11 +12,3 @@ export declare const z_filtro: z.ZodObject<{ operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; valor?: any; }>; -export declare const serie_consultar: (cliente: z.infer) => (tipoVisao: T, parametros: z.infer<(typeof visoes)[T]>) => { - dados: () => Promise; - }>>; - url: () => string; -}; diff --git a/dist-import/pilao-de-dados/_serie_consultar.js b/dist-import/pilao-de-dados/_serie_consultar.js index c3b70bd..a6c4d2d 100644 --- a/dist-import/pilao-de-dados/_serie_consultar.js +++ b/dist-import/pilao-de-dados/_serie_consultar.js @@ -1,36 +1,7 @@ -import node_fetch from "cross-fetch"; -import { respostaComuns } from "p-respostas"; import { z } from "zod"; -import { operadores_pilao, urlPilao } from "./variaveis"; +import { operadores_pilao } from "./variaveis"; export const z_filtro = z.object({ coluna: z.string(), valor: z.any(), operador: operadores_pilao, }); -export const serie_consultar = (cliente) => (tipoVisao, parametros) => { - const dados = async () => { - const url = new URL(`${urlPilao(cliente.emDesenvolvimento).api}/${tipoVisao}/${cliente.produto}/${cliente.conta}`); - const resp = await node_fetch(url.toString(), { - method: "POST", - body: JSON.stringify(parametros), - headers: { "Content-Type": "application/json" }, - }) - .then((r) => r.json()) - .catch((e) => respostaComuns.erro("Erro ao enviar registros", [e.message])) - .then((r) => r); - if (cliente.ver_log) - console.log(`[PILÃO]: buscar dados de "${JSON.stringify(parametros)}" para "${url.href}".`); - return resp; - }; - const url = () => { - const vUrl = new URL(`${urlPilao(cliente.emDesenvolvimento).site}/${tipoVisao}/${cliente.produto}/${cliente.conta}`); - const serie = encodeURIComponent(JSON.stringify(parametros, null, 2)); - if (cliente.ver_log) - console.log(`[PILÃO]: Serie Consultar url de "${JSON.stringify(serie)}" para "${vUrl.href}".`); - return `${vUrl.href}?serie=${serie}`; - }; - return { - dados, - url, - }; -}; diff --git a/dist-import/pilao-de-dados/index.d.ts b/dist-import/pilao-de-dados/index.d.ts index e4ab599..398076e 100644 --- a/dist-import/pilao-de-dados/index.d.ts +++ b/dist-import/pilao-de-dados/index.d.ts @@ -1,169 +1,13 @@ -import { zp_deletar_registros } from "./_deletar_registros"; export { PREFIXO_PILAO, urlPilao } from "./variaveis"; -import { zp_enviar_registros } from "./_enviar_registros"; -import { zp_produto_conta } from "./variaveis"; -import { visoes } from "./visoes"; +export * from "./Pilao"; +export * from "./Pilao/pilao-api"; +export * from "./Pilao/tipagem"; export declare const pPilao: { extruturas_de_campos: { - z_contagem_em_barra_vertical: { - visao: "z_contagem_em_barra_vertical"; - rotulo: string; - tabela: (_: { - tabela: string; - colanuEixoX: string; - colunaAgrupamento?: string[] | undefined; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }) => string; - descricao: (_: { - tabela: string; - colanuEixoX: string; - colunaAgrupamento?: string[] | undefined; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }) => string; - campos: { - tabela: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - colanuEixoX: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - colunaAgrupamento: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - filtros: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - descricao_pelo_usuario: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - }; - }; - z_contagem_em_pizza: { - visao: "z_contagem_em_pizza"; - rotulo: string; - tabela: (_: { - tabela: string; - classes: string; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }) => string; - descricao: (_: { - tabela: string; - classes: string; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }) => string; - campos: { - tabela: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - classes: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - filtros: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - descricao_pelo_usuario: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - }; - }; - z_tabela: { - visao: "z_tabela"; - rotulo: string; - tabela: (_: { - tabela: string; - colunas: string[]; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - coluna_ordem?: string | undefined; - direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; - }) => string; - descricao: (_: { - tabela: string; - colunas: string[]; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - coluna_ordem?: string | undefined; - direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; - }) => string; - campos: { - tabela: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - colunas: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - filtros: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - descricao_pelo_usuario: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - coluna_ordem: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - direcao_ordem: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - }; - }; + z_contagem_em_barra_vertical: import("./visoes/tipagem").tipo_estrutura_visao_grafico<"z_contagem_em_barra_vertical">; + z_contagem_em_pizza: import("./visoes/tipagem").tipo_estrutura_visao_grafico<"z_contagem_em_pizza">; + z_tabela: import("./visoes/tipagem").tipo_estrutura_visao_grafico<"z_tabela">; + z_soma_em_barra_vertical: import("./visoes/tipagem").tipo_estrutura_visao_grafico<"z_soma_em_barra_vertical">; }; z_contagem_em_barra_vertical: import("zod").ZodObject<{ tabela: import("zod").ZodString; @@ -282,6 +126,61 @@ export declare const pPilao: { coluna_ordem?: string | undefined; direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; }>; + z_soma_em_barra_vertical: import("zod").ZodObject<{ + tabela: import("zod").ZodString; + colanuEixoX: import("zod").ZodString; + colunaSoma: import("zod").ZodString; + unidadeSoma: import("zod").ZodOptional; + colunaAgrupamento: import("zod").ZodOptional>; + filtros: import("zod").ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", import("zod").ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: import("zod").ZodOptional; + }, "strip", import("zod").ZodTypeAny, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; + }, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; + }>; + zp_deletar_registros: import("zod").ZodObject<{ + tabela: import("zod").ZodString; + codigos: import("zod").ZodArray; + }, "strip", import("zod").ZodTypeAny, { + tabela: string; + codigos: string[]; + }, { + tabela: string; + codigos: string[]; + }>; zp_registrar_base_dados: import("zod").ZodObject<{ tabela: import("zod").ZodString; colunas: import("zod").ZodArray; - enviar_registros: ({ conta, produto, emDesenvolvimento, ver_log, }: import("zod").TypeOf) => ({ registros: registros_entrada, tabela, }: import("zod").TypeOf) => Promise>; + z_tipos_dados_registro: import("zod").ZodEnum<["texto", "numero", "confirmacao", "lista_texto", "lista_numero", "lista_mes", "lista_data", "mes", "data"]>; zp_enviar_registros: import("zod").ZodObject<{ tabela: import("zod").ZodString; registros: import("zod").ZodArray[]; }>; - serie_consultar: (cliente: import("zod").TypeOf) => (tipoVisao: T, parametros: import("zod").TypeOf<(typeof visoes)[T]>) => { - dados: () => Promise; - }>>; - url: () => string; - }; zp_produto_conta: import("zod").ZodObject<{ produto: import("zod").ZodString; conta: import("zod").ZodString; @@ -358,17 +249,6 @@ export declare const pPilao: { ver_log?: boolean | undefined; }>; validarZ: (zodType: import("zod").ZodType, objeto: any, mensagem: string) => import("p-respostas").tipoRespostaErro | import("p-respostas").tipoRespostaSucesso; - deletar_registros: ({ conta, produto, emDesenvolvimento }: import("zod").TypeOf) => ({ codigos: codigos_entrada, tabela, }: import("zod").TypeOf) => Promise>; - zp_deletar_registros: import("zod").ZodObject<{ - tabela: import("zod").ZodString; - codigos: import("zod").ZodArray; - }, "strip", import("zod").ZodTypeAny, { - tabela: string; - codigos: string[]; - }, { - tabela: string; - codigos: string[]; - }>; operadores_pilao: import("zod").ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>; operadores_permitidos_por_tipo: { texto: ("=" | "!=" | ">" | "<" | ">=" | "<=" | "∩")[]; @@ -394,7 +274,7 @@ export declare const pPilao: { operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; valor?: any; }>; - visoes: { + visoes_pilao: { z_contagem_em_barra_vertical: import("zod").ZodObject<{ tabela: import("zod").ZodString; colanuEixoX: import("zod").ZodString; @@ -512,5 +392,50 @@ export declare const pPilao: { coluna_ordem?: string | undefined; direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; }>; + z_soma_em_barra_vertical: import("zod").ZodObject<{ + tabela: import("zod").ZodString; + colanuEixoX: import("zod").ZodString; + colunaSoma: import("zod").ZodString; + unidadeSoma: import("zod").ZodOptional; + colunaAgrupamento: import("zod").ZodOptional>; + filtros: import("zod").ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", import("zod").ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: import("zod").ZodOptional; + }, "strip", import("zod").ZodTypeAny, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; + }, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; + }>; }; }; diff --git a/dist-import/pilao-de-dados/index.js b/dist-import/pilao-de-dados/index.js index 4db66d1..7652c37 100644 --- a/dist-import/pilao-de-dados/index.js +++ b/dist-import/pilao-de-dados/index.js @@ -1,22 +1,23 @@ -import { deletar_registros, zp_deletar_registros } from "./_deletar_registros"; export { PREFIXO_PILAO, urlPilao } from "./variaveis"; -import { enviar_registros, zp_enviar_registros, zp_registrar_base_dados, } from "./_enviar_registros"; -import { operadores_permitidos_por_tipo, operadores_pilao, validarZ, zp_produto_conta, } from "./variaveis"; -import { serie_consultar, z_filtro } from "./_serie_consultar"; -import { extruturas_de_campos, visoes } from "./visoes"; +import { zp_enviar_registros, zp_registrar_base_dados, } from "./_enviar_registros"; +import { operadores_permitidos_por_tipo, operadores_pilao, validarZ, z_tipos_dados_registro, zp_deletar_registros, zp_produto_conta, } from "./variaveis"; +export * from "./Pilao"; +export * from "./Pilao/pilao-api"; +export * from "./Pilao/tipagem"; +import { z_filtro } from "./_serie_consultar"; +import { extruturas_de_campos } from "./visoes"; +import { visoes_pilao } from "./visoes/listaDeVisoes"; export const pPilao = { + zp_deletar_registros, zp_registrar_base_dados, - enviar_registros, + z_tipos_dados_registro, zp_enviar_registros, - serie_consultar, zp_produto_conta, validarZ, - deletar_registros, - zp_deletar_registros, operadores_pilao, operadores_permitidos_por_tipo, z_filtro, - visoes, - ...visoes, + visoes_pilao, + ...visoes_pilao, extruturas_de_campos, }; diff --git a/dist-import/pilao-de-dados/variaveis.d.ts b/dist-import/pilao-de-dados/variaveis.d.ts index 3183c96..2f36979 100644 --- a/dist-import/pilao-de-dados/variaveis.d.ts +++ b/dist-import/pilao-de-dados/variaveis.d.ts @@ -1,4 +1,14 @@ import { z } from "zod"; +export declare const zp_deletar_registros: z.ZodObject<{ + tabela: z.ZodString; + codigos: z.ZodArray; +}, "strip", z.ZodTypeAny, { + tabela: string; + codigos: string[]; +}, { + tabela: string; + codigos: string[]; +}>; export declare const zAmbiente: z.ZodEnum<["desenvolvimento", "producao"]>; export declare const PREFIXO_PILAO = "/pilao-de-dados"; export declare const validarZ: (zodType: z.ZodType, objeto: any, mensagem: string) => import("p-respostas").tipoRespostaErro | import("p-respostas").tipoRespostaSucesso; @@ -18,10 +28,10 @@ export declare const zp_produto_conta: z.ZodObject<{ emDesenvolvimento?: boolean | undefined; ver_log?: boolean | undefined; }>; -export declare const z_tipo_coluna_base_dados: z.ZodEnum<["texto", "numero", "confirmacao", "lista_texto", "lista_numero", "lista_mes", "lista_data", "mes", "data"]>; +export declare const z_tipos_dados_registro: z.ZodEnum<["texto", "numero", "confirmacao", "lista_texto", "lista_numero", "lista_mes", "lista_data", "mes", "data"]>; export declare const operadores_pilao: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>; export declare const operadores_permitidos_por_tipo: { - [key in z.infer]: z.infer[]; + [key in z.infer]: z.infer[]; }; export declare const z_validar_colunna_base_dados: { texto: z.ZodNullable; diff --git a/dist-import/pilao-de-dados/variaveis.js b/dist-import/pilao-de-dados/variaveis.js index 044b39f..d7fd163 100644 --- a/dist-import/pilao-de-dados/variaveis.js +++ b/dist-import/pilao-de-dados/variaveis.js @@ -1,5 +1,9 @@ import { respostaComuns } from "p-respostas"; import { z } from "zod"; +export const zp_deletar_registros = z.object({ + tabela: z.string(), + codigos: z.array(z.string()), +}); export const zAmbiente = z.enum(["desenvolvimento", "producao"]); export const PREFIXO_PILAO = "/pilao-de-dados"; export const validarZ = (zodType, objeto, mensagem) => { @@ -15,7 +19,7 @@ export const zp_produto_conta = z.object({ emDesenvolvimento: z.boolean().optional(), ver_log: z.boolean().optional(), }); -export const z_tipo_coluna_base_dados = z.enum([ +export const z_tipos_dados_registro = z.enum([ "texto", "numero", "confirmacao", diff --git a/dist-import/pilao-de-dados/visoes/estrutura_de_campos/index.d.ts b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/index.d.ts new file mode 100644 index 0000000..5528f6c --- /dev/null +++ b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/index.d.ts @@ -0,0 +1,6 @@ +import type { visoes_pilao } from "../listaDeVisoes"; +import type { tipo_estrutura_visao_grafico } from "../tipagem"; +/** Cria a estrutura de campos para insersão de dados */ +export declare const extruturas_de_campos: { + [T in keyof typeof visoes_pilao]: tipo_estrutura_visao_grafico; +}; diff --git a/dist-import/pilao-de-dados/visoes/estrutura_de_campos/index.js b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/index.js new file mode 100644 index 0000000..26830b4 --- /dev/null +++ b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/index.js @@ -0,0 +1,11 @@ +import { z_contagem_em_barra_vertical } from "./z_contagem_em_barra_vertical"; +import { z_contagem_em_pizza } from "./z_contagem_em_pizza"; +import { z_soma_em_barra_vertical } from "./z_soma_em_barra_vertical"; +import { z_tabela } from "./z_tabela"; +/** Cria a estrutura de campos para insersão de dados */ +export const extruturas_de_campos = { + z_contagem_em_barra_vertical, + z_contagem_em_pizza, + z_soma_em_barra_vertical, + z_tabela, +}; diff --git a/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.d.ts b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.d.ts new file mode 100644 index 0000000..245eb35 --- /dev/null +++ b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.d.ts @@ -0,0 +1,3 @@ +import type { tipo_estrutura_visao_grafico } from "../tipagem"; +/** Cria a estrutura de campos para insersão de dados */ +export declare const z_contagem_em_barra_vertical: tipo_estrutura_visao_grafico<"z_contagem_em_barra_vertical">; diff --git a/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.js b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.js new file mode 100644 index 0000000..a9d9658 --- /dev/null +++ b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.js @@ -0,0 +1,37 @@ +// usar describe para definir o tipo de campo para render do componente +/** Cria a estrutura de campos para insersão de dados */ +export const z_contagem_em_barra_vertical = { + visao: "z_contagem_em_barra_vertical", + rotulo: "Contagem em Barra Vertical", + tabela: ({ tabela }) => tabela, + descricao: ({ tabela, descricao_pelo_usuario, colanuEixoX, filtros, colunaAgrupamento, }) => { + if (String(descricao_pelo_usuario || "").trim()) + return String(descricao_pelo_usuario || "").trim(); + return `Contagem de ${tabela} por ${colanuEixoX}${!filtros?.length + ? "" + : `, quando ${filtros + .map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`) + .join(", ")}`}${!colunaAgrupamento?.length + ? "" + : `, agrupado por ${colunaAgrupamento.join(", ")}`}.`; + }, + campos: { + tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, + colanuEixoX: { + rotulo: "Coluna do Eixo X", + tipo_campo: "coluna", + order: 2, + }, + colunaAgrupamento: { + rotulo: "Colunas de Agrupamento", + tipo_campo: "lista_colunas", + order: 3, + }, + descricao_pelo_usuario: { + rotulo: "Descrição (opcional)", + tipo_campo: "texto", + order: 4, + }, + filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 5 }, + }, +}; diff --git a/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.d.ts b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.d.ts new file mode 100644 index 0000000..206a144 --- /dev/null +++ b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.d.ts @@ -0,0 +1,3 @@ +import type { tipo_estrutura_visao_grafico } from "../tipagem"; +/** Cria a estrutura de campos para insersão de dados */ +export declare const z_contagem_em_pizza: tipo_estrutura_visao_grafico<"z_contagem_em_pizza">; diff --git a/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.js b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.js new file mode 100644 index 0000000..21d07ad --- /dev/null +++ b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.js @@ -0,0 +1,26 @@ +// usar describe para definir o tipo de campo para render do componente +/** Cria a estrutura de campos para insersão de dados */ +export const z_contagem_em_pizza = { + visao: "z_contagem_em_pizza", + rotulo: "Contagem em Pizza", + tabela: ({ tabela }) => tabela, + descricao: ({ tabela, descricao_pelo_usuario, classes, filtros }) => { + if (String(descricao_pelo_usuario || "").trim()) + return String(descricao_pelo_usuario || "").trim(); + return `Contagem de ${tabela} por ${classes}${!filtros?.length + ? "" + : `, quando ${filtros + .map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`) + .join(", ")}`}.`; + }, + campos: { + tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, + classes: { rotulo: "Classes", tipo_campo: "coluna", order: 2 }, + descricao_pelo_usuario: { + rotulo: "Descrição (opcional)", + tipo_campo: "texto", + order: 3, + }, + filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 4 }, + }, +}; diff --git a/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.d.ts b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.d.ts new file mode 100644 index 0000000..7049fd1 --- /dev/null +++ b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.d.ts @@ -0,0 +1,3 @@ +import type { tipo_estrutura_visao_grafico } from "../tipagem"; +/** Cria a estrutura de campos para insersão de dados */ +export declare const z_soma_em_barra_vertical: tipo_estrutura_visao_grafico<"z_soma_em_barra_vertical">; diff --git a/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.js b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.js new file mode 100644 index 0000000..9ec4907 --- /dev/null +++ b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.js @@ -0,0 +1,47 @@ +// usar describe para definir o tipo de campo para render do componente +/** Cria a estrutura de campos para insersão de dados */ +export const z_soma_em_barra_vertical = { + visao: "z_soma_em_barra_vertical", + rotulo: "Soma em Barra Vertical", + tabela: ({ tabela }) => tabela, + descricao: ({ descricao_pelo_usuario, colanuEixoX, filtros, colunaAgrupamento, colunaSoma, }) => { + if (String(descricao_pelo_usuario || "").trim()) + return String(descricao_pelo_usuario || "").trim(); + return `Soma de ${colunaSoma} por ${colanuEixoX}${!filtros?.length + ? "" + : `, quando ${filtros + .map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`) + .join(", ")}`}${!colunaAgrupamento?.length + ? "" + : `, agrupado por ${colunaAgrupamento.join(", ")}`}.`; + }, + campos: { + tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, + colunaSoma: { + rotulo: "Coluna de Somatória", + tipo_campo: "coluna", + order: 2, + }, + unidadeSoma: { + rotulo: "Unidade de Somatória", + tipo_campo: "texto", + order: 3, + }, + colanuEixoX: { + rotulo: "Coluna do Eixo X", + tipo_campo: "coluna", + order: 4, + }, + colunaAgrupamento: { + rotulo: "Colunas de Agrupamento", + tipo_campo: "lista_colunas", + order: 5, + }, + descricao_pelo_usuario: { + rotulo: "Descrição (opcional)", + tipo_campo: "texto", + order: 6, + }, + filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 5 }, + }, +}; diff --git a/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.d.ts b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.d.ts new file mode 100644 index 0000000..66bead7 --- /dev/null +++ b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.d.ts @@ -0,0 +1,3 @@ +import type { tipo_estrutura_visao_grafico } from "../tipagem"; +/** Cria a estrutura de campos para insersão de dados */ +export declare const z_tabela: tipo_estrutura_visao_grafico<"z_tabela">; diff --git a/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.js b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.js new file mode 100644 index 0000000..7b23797 --- /dev/null +++ b/dist-import/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.js @@ -0,0 +1,36 @@ +// usar describe para definir o tipo de campo para render do componente +/** Cria a estrutura de campos para insersão de dados */ +export const z_tabela = { + visao: "z_tabela", + rotulo: "Tabela", + tabela: ({ tabela }) => tabela, + descricao: ({ tabela, descricao_pelo_usuario, filtros }) => { + if (String(descricao_pelo_usuario || "").trim()) + return String(descricao_pelo_usuario || "").trim(); + return `Consulta na ${tabela} ${!filtros?.length + ? "" + : `, quando ${filtros + .map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`) + .join(", ")}`}.`; + }, + campos: { + tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, + colunas: { rotulo: "Colunas", tipo_campo: "lista_colunas", order: 2 }, + descricao_pelo_usuario: { + rotulo: "Descrição (opcional)", + tipo_campo: "texto", + order: 3, + }, + coluna_ordem: { + rotulo: "Coluna de Ordem", + tipo_campo: "coluna", + order: 4, + }, + direcao_ordem: { + rotulo: "Direção de Ordem", + tipo_campo: "ordem", + order: 5, + }, + filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 6 }, + }, +}; diff --git a/dist-import/pilao-de-dados/visoes/index.d.ts b/dist-import/pilao-de-dados/visoes/index.d.ts index 7ff03ea..4070a97 100644 --- a/dist-import/pilao-de-dados/visoes/index.d.ts +++ b/dist-import/pilao-de-dados/visoes/index.d.ts @@ -1,260 +1 @@ -import { z } from "zod"; -declare const z_tipos_campos: z.ZodEnum<["tabela", "coluna", "texto", "lista_colunas", "lista_filtros", "ordem"]>; -export declare const z_contagem_em_barra_vertical: z.ZodObject<{ - tabela: z.ZodString; - colanuEixoX: z.ZodString; - colunaAgrupamento: z.ZodOptional>; - filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; - }, "strip", z.ZodTypeAny, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }>, "many">>; - descricao_pelo_usuario: z.ZodOptional; -}, "strip", z.ZodTypeAny, { - tabela: string; - colanuEixoX: string; - colunaAgrupamento?: string[] | undefined; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; -}, { - tabela: string; - colanuEixoX: string; - colunaAgrupamento?: string[] | undefined; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; -}>; -export declare const z_contagem_em_pizza: z.ZodObject<{ - tabela: z.ZodString; - classes: z.ZodString; - filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; - }, "strip", z.ZodTypeAny, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }>, "many">>; - descricao_pelo_usuario: z.ZodOptional; -}, "strip", z.ZodTypeAny, { - tabela: string; - classes: string; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; -}, { - tabela: string; - classes: string; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; -}>; -export declare const z_tabela: z.ZodObject<{ - tabela: z.ZodString; - colunas: z.ZodArray; - coluna_ordem: z.ZodOptional; - direcao_ordem: z.ZodOptional>; - filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; - }, "strip", z.ZodTypeAny, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }>, "many">>; - descricao_pelo_usuario: z.ZodOptional; -}, "strip", z.ZodTypeAny, { - tabela: string; - colunas: string[]; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - coluna_ordem?: string | undefined; - direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; -}, { - tabela: string; - colunas: string[]; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - coluna_ordem?: string | undefined; - direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; -}>; -export declare const visoes: { - z_contagem_em_barra_vertical: z.ZodObject<{ - tabela: z.ZodString; - colanuEixoX: z.ZodString; - colunaAgrupamento: z.ZodOptional>; - filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; - }, "strip", z.ZodTypeAny, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }>, "many">>; - descricao_pelo_usuario: z.ZodOptional; - }, "strip", z.ZodTypeAny, { - tabela: string; - colanuEixoX: string; - colunaAgrupamento?: string[] | undefined; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }, { - tabela: string; - colanuEixoX: string; - colunaAgrupamento?: string[] | undefined; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }>; - z_contagem_em_pizza: z.ZodObject<{ - tabela: z.ZodString; - classes: z.ZodString; - filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; - }, "strip", z.ZodTypeAny, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }>, "many">>; - descricao_pelo_usuario: z.ZodOptional; - }, "strip", z.ZodTypeAny, { - tabela: string; - classes: string; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }, { - tabela: string; - classes: string; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }>; - z_tabela: z.ZodObject<{ - tabela: z.ZodString; - colunas: z.ZodArray; - coluna_ordem: z.ZodOptional; - direcao_ordem: z.ZodOptional>; - filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; - }, "strip", z.ZodTypeAny, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }>, "many">>; - descricao_pelo_usuario: z.ZodOptional; - }, "strip", z.ZodTypeAny, { - tabela: string; - colunas: string[]; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - coluna_ordem?: string | undefined; - direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; - }, { - tabela: string; - colunas: string[]; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - coluna_ordem?: string | undefined; - direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; - }>; -}; -/** Cria a estrutura de campos para insersão de dados */ -export declare const extruturas_de_campos: { - [z in keyof typeof visoes]: { - /** Nome da Visão */ - visao: z; - /** Rotulo */ - rotulo: string; - /** Retorna a tabela Referente ao Registro */ - tabela: (_: z.infer<(typeof visoes)[z]>) => string; - /** Descrição */ - descricao: (_: z.infer<(typeof visoes)[z]>) => string; - /** Lista os campos e suas configurações */ - campos: { - [c in keyof Required>]: { - rotulo: string; - tipo_campo: z.infer; - order: number; - }; - }; - }; -}; -export {}; +export * from "./estrutura_de_campos"; diff --git a/dist-import/pilao-de-dados/visoes/index.js b/dist-import/pilao-de-dados/visoes/index.js index ca35eaa..4070a97 100644 --- a/dist-import/pilao-de-dados/visoes/index.js +++ b/dist-import/pilao-de-dados/visoes/index.js @@ -1,133 +1 @@ -import { z } from "zod"; -import { z_filtro } from "../_serie_consultar"; -// usar describe para definir o tipo de campo para render do componente -const z_tipos_campos = z.enum([ - "tabela", - "coluna", - "texto", - "lista_colunas", - "lista_filtros", - "ordem", -]); -export const z_contagem_em_barra_vertical = z.object({ - tabela: z.string(), - colanuEixoX: z.string(), - colunaAgrupamento: z.string().array().optional(), - filtros: z_filtro.array().optional(), - descricao_pelo_usuario: z.string().optional(), -}); -export const z_contagem_em_pizza = z.object({ - tabela: z.string(), - classes: z.string(), - filtros: z_filtro.array().optional(), - descricao_pelo_usuario: z.string().optional(), -}); -export const z_tabela = z.object({ - tabela: z.string(), - colunas: z.string().array(), - coluna_ordem: z.string().optional(), - direcao_ordem: z.enum(["asc", "desc", "1", "-1"]).optional(), - filtros: z_filtro.array().optional(), - descricao_pelo_usuario: z.string().optional(), -}); -export const visoes = { - z_contagem_em_barra_vertical, - z_contagem_em_pizza, - z_tabela, -}; -/** Cria a estrutura de campos para insersão de dados */ -export const extruturas_de_campos = { - z_contagem_em_barra_vertical: { - visao: "z_contagem_em_barra_vertical", - rotulo: "Contagem em Barra Vertical", - tabela: ({ tabela }) => tabela, - descricao: ({ tabela, descricao_pelo_usuario, colanuEixoX, filtros, colunaAgrupamento, }) => { - if (String(descricao_pelo_usuario || "").trim()) - return String(descricao_pelo_usuario || "").trim(); - return `Contagem de ${tabela} por ${colanuEixoX}${!filtros?.length - ? "" - : `, quando ${filtros - .map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`) - .join(", ")}`}${!colunaAgrupamento?.length - ? "" - : `, agrupado por ${colunaAgrupamento.join(", ")}`}.`; - }, - campos: { - tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, - colanuEixoX: { - rotulo: "Coluna do Eixo X", - tipo_campo: "coluna", - order: 2, - }, - colunaAgrupamento: { - rotulo: "Colunas de Agrupamento", - tipo_campo: "lista_colunas", - order: 3, - }, - descricao_pelo_usuario: { - rotulo: "Descrição (opcional)", - tipo_campo: "texto", - order: 4, - }, - filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 5 }, - }, - }, - z_contagem_em_pizza: { - visao: "z_contagem_em_pizza", - rotulo: "Contagem em Pizza", - tabela: ({ tabela }) => tabela, - descricao: ({ tabela, descricao_pelo_usuario, classes, filtros }) => { - if (String(descricao_pelo_usuario || "").trim()) - return String(descricao_pelo_usuario || "").trim(); - return `Contagem de ${tabela} por ${classes}${!filtros?.length - ? "" - : `, quando ${filtros - .map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`) - .join(", ")}`}.`; - }, - campos: { - tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, - classes: { rotulo: "Classes", tipo_campo: "coluna", order: 2 }, - descricao_pelo_usuario: { - rotulo: "Descrição (opcional)", - tipo_campo: "texto", - order: 3, - }, - filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 4 }, - }, - }, - z_tabela: { - visao: "z_tabela", - rotulo: "Tabela", - tabela: ({ tabela }) => tabela, - descricao: ({ tabela, descricao_pelo_usuario, filtros }) => { - if (String(descricao_pelo_usuario || "").trim()) - return String(descricao_pelo_usuario || "").trim(); - return `Consulta na ${tabela} ${!filtros?.length - ? "" - : `, quando ${filtros - .map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`) - .join(", ")}`}.`; - }, - campos: { - tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, - colunas: { rotulo: "Colunas", tipo_campo: "lista_colunas", order: 2 }, - descricao_pelo_usuario: { - rotulo: "Descrição (opcional)", - tipo_campo: "texto", - order: 3, - }, - coluna_ordem: { - rotulo: "Coluna de Ordem", - tipo_campo: "coluna", - order: 4, - }, - direcao_ordem: { - rotulo: "Direção de Ordem", - tipo_campo: "ordem", - order: 5, - }, - filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 6 }, - }, - }, -}; +export * from "./estrutura_de_campos"; diff --git a/dist-import/pilao-de-dados/visoes/listaDeVisoes.d.ts b/dist-import/pilao-de-dados/visoes/listaDeVisoes.d.ts new file mode 100644 index 0000000..5419ff9 --- /dev/null +++ b/dist-import/pilao-de-dados/visoes/listaDeVisoes.d.ts @@ -0,0 +1,327 @@ +import { z } from "zod"; +export declare const z_contagem_em_barra_vertical: z.ZodObject<{ + tabela: z.ZodString; + colanuEixoX: z.ZodString; + colunaAgrupamento: z.ZodOptional>; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; +}, "strip", z.ZodTypeAny, { + tabela: string; + colanuEixoX: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; +}, { + tabela: string; + colanuEixoX: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; +}>; +export declare const z_soma_em_barra_vertical: z.ZodObject<{ + tabela: z.ZodString; + colanuEixoX: z.ZodString; + colunaSoma: z.ZodString; + unidadeSoma: z.ZodOptional; + colunaAgrupamento: z.ZodOptional>; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; +}, "strip", z.ZodTypeAny, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; +}, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; +}>; +export declare const z_contagem_em_pizza: z.ZodObject<{ + tabela: z.ZodString; + classes: z.ZodString; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; +}, "strip", z.ZodTypeAny, { + tabela: string; + classes: string; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; +}, { + tabela: string; + classes: string; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; +}>; +export declare const z_tabela: z.ZodObject<{ + tabela: z.ZodString; + colunas: z.ZodArray; + coluna_ordem: z.ZodOptional; + direcao_ordem: z.ZodOptional>; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; +}, "strip", z.ZodTypeAny, { + tabela: string; + colunas: string[]; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + coluna_ordem?: string | undefined; + direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; +}, { + tabela: string; + colunas: string[]; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + coluna_ordem?: string | undefined; + direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; +}>; +export declare const visoes_pilao: { + z_contagem_em_barra_vertical: z.ZodObject<{ + tabela: z.ZodString; + colanuEixoX: z.ZodString; + colunaAgrupamento: z.ZodOptional>; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; + }, "strip", z.ZodTypeAny, { + tabela: string; + colanuEixoX: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + }, { + tabela: string; + colanuEixoX: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + }>; + z_contagem_em_pizza: z.ZodObject<{ + tabela: z.ZodString; + classes: z.ZodString; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; + }, "strip", z.ZodTypeAny, { + tabela: string; + classes: string; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + }, { + tabela: string; + classes: string; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + }>; + z_tabela: z.ZodObject<{ + tabela: z.ZodString; + colunas: z.ZodArray; + coluna_ordem: z.ZodOptional; + direcao_ordem: z.ZodOptional>; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; + }, "strip", z.ZodTypeAny, { + tabela: string; + colunas: string[]; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + coluna_ordem?: string | undefined; + direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; + }, { + tabela: string; + colunas: string[]; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + coluna_ordem?: string | undefined; + direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; + }>; + z_soma_em_barra_vertical: z.ZodObject<{ + tabela: z.ZodString; + colanuEixoX: z.ZodString; + colunaSoma: z.ZodString; + unidadeSoma: z.ZodOptional; + colunaAgrupamento: z.ZodOptional>; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; + }, "strip", z.ZodTypeAny, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; + }, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; + }>; +}; diff --git a/dist-import/pilao-de-dados/visoes/listaDeVisoes.js b/dist-import/pilao-de-dados/visoes/listaDeVisoes.js new file mode 100644 index 0000000..84130a5 --- /dev/null +++ b/dist-import/pilao-de-dados/visoes/listaDeVisoes.js @@ -0,0 +1,38 @@ +import { z } from "zod"; +import { z_filtro } from "../_serie_consultar"; +export const z_contagem_em_barra_vertical = z.object({ + tabela: z.string(), + colanuEixoX: z.string(), + colunaAgrupamento: z.string().array().optional(), + filtros: z_filtro.array().optional(), + descricao_pelo_usuario: z.string().optional(), +}); +export const z_soma_em_barra_vertical = z.object({ + tabela: z.string(), + colanuEixoX: z.string(), + colunaSoma: z.string(), + unidadeSoma: z.string().optional(), + colunaAgrupamento: z.string().array().optional(), + filtros: z_filtro.array().optional(), + descricao_pelo_usuario: z.string().optional(), +}); +export const z_contagem_em_pizza = z.object({ + tabela: z.string(), + classes: z.string(), + filtros: z_filtro.array().optional(), + descricao_pelo_usuario: z.string().optional(), +}); +export const z_tabela = z.object({ + tabela: z.string(), + colunas: z.string().array(), + coluna_ordem: z.string().optional(), + direcao_ordem: z.enum(["asc", "desc", "1", "-1"]).optional(), + filtros: z_filtro.array().optional(), + descricao_pelo_usuario: z.string().optional(), +}); +export const visoes_pilao = { + z_contagem_em_barra_vertical, + z_contagem_em_pizza, + z_tabela, + z_soma_em_barra_vertical, +}; diff --git a/dist-import/pilao-de-dados/visoes/tipagem.d.ts b/dist-import/pilao-de-dados/visoes/tipagem.d.ts new file mode 100644 index 0000000..0f9c98d --- /dev/null +++ b/dist-import/pilao-de-dados/visoes/tipagem.d.ts @@ -0,0 +1,21 @@ +import { z } from "zod"; +import type { visoes_pilao } from "./listaDeVisoes"; +export declare const z_tipos_campos_reg_grafico: z.ZodEnum<["tabela", "coluna", "texto", "lista_colunas", "lista_filtros", "ordem"]>; +export type tipo_estrutura_visao_grafico = { + /** Nome da Visão */ + visao: T; + /** Rotulo */ + rotulo: string; + /** Retorna a tabela Referente ao Registro */ + tabela: (_: z.infer<(typeof visoes_pilao)[T]>) => string; + /** Descrição */ + descricao: (_: z.infer<(typeof visoes_pilao)[T]>) => string; + /** Lista os campos e suas configurações */ + campos: { + [c in keyof Required>]: { + rotulo: string; + tipo_campo: z.infer; + order: number; + }; + }; +}; diff --git a/dist-import/pilao-de-dados/visoes/tipagem.js b/dist-import/pilao-de-dados/visoes/tipagem.js new file mode 100644 index 0000000..26adb50 --- /dev/null +++ b/dist-import/pilao-de-dados/visoes/tipagem.js @@ -0,0 +1,9 @@ +import { z } from "zod"; +export const z_tipos_campos_reg_grafico = z.enum([ + "tabela", + "coluna", + "texto", + "lista_colunas", + "lista_filtros", + "ordem", +]); diff --git a/dist-require/pilao-de-dados/Pilao/index.d.ts b/dist-require/pilao-de-dados/Pilao/index.d.ts new file mode 100644 index 0000000..c788ccf --- /dev/null +++ b/dist-require/pilao-de-dados/Pilao/index.d.ts @@ -0,0 +1,56 @@ +/** Drive completo do piilão de dados */ +import { type tipoResposta } from "p-respostas"; +import type { z } from "zod"; +import type { zp_enviar_registros } from "../_enviar_registros"; +import { type zp_deletar_registros } from "../variaveis"; +import type { visoes_pilao } from "../visoes/listaDeVisoes"; +import type { tipo_pilao_api } from "./pilao-api.ts"; +import type { tipoConstrutorPilao, tipoRetornoSerieconsulta } from "./tipagem"; +declare class ClassPilao { + #private; + constructor({ conta, produto, emDesenvolvimento, ver_log, }: tipoConstrutorPilao & { + ver_log?: boolean; + emDesenvolvimento?: boolean; + }); + rotaEnviarRegistros(): { + rota: string; + url: string; + }; + rotaDeletarRegistro(): { + rota: string; + url: string; + }; + rotaConsultarSerie(tipoVisao: keyof typeof visoes_pilao | ":tipoVisao"): { + rota: string; + url: string; + }; + rotaIframeSerie(tipoVisao: keyof typeof visoes_pilao | ":tipoVisao"): { + rota: string; + url: string; + }; + rotaFuncaoApi(funcao: keyof tipo_pilao_api | ":funcao"): { + rota: string; + url: string; + }; + consultarApi(funcao: T, parametros: tipo_pilao_api[T]["pr"]): Promise>; + get baseUrlApi(): "https://carro-de-boi.idz.one" | "http://localhost:5080"; + get baseUrlSite(): "https://carro-de-boi.idz.one" | "http://localhost:5081"; + validarCliente(_: any): tipoResposta; + adicionarRegistroParaEnviar(tabela: string, ...registros: z.infer["registros"]): this; + adicionarCodigoParaDeletar(tabela: string, ...codigos: z.infer["codigos"]): this; + private processarRegistros; + salvarRegistros(): Promise>; + serieConsultar(tipoVisao: T, parametros: z.infer<(typeof visoes_pilao)[T]>): { + dados: () => Promise>>; + url: () => string; + }; + urlLaboratorio(): { + rota: string; + url: string; + }; +} +export declare const Pilao: (_: tipoConstrutorPilao & { + ver_log?: boolean; + emDesenvolvimento?: boolean; +}) => ClassPilao; +export {}; diff --git a/dist-require/pilao-de-dados/Pilao/index.js b/dist-require/pilao-de-dados/Pilao/index.js new file mode 100644 index 0000000..9bad062 --- /dev/null +++ b/dist-require/pilao-de-dados/Pilao/index.js @@ -0,0 +1,218 @@ +"use strict"; +/** Drive completo do piilão de dados */ +var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +}; +var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var _ClassPilao_instances, _ClassPilao_produto, _ClassPilao_conta, _ClassPilao_emDesenvolvimento, _ClassPilao_ver_log, _ClassPilao_registrosParaEnvio, _ClassPilao_codigosParaDeletar, _ClassPilao_gerarUrl, _ClassPilao_salvarEnviarRegistros, _ClassPilao_salvarDeletarRegistros; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Pilao = void 0; +const cross_fetch_1 = __importDefault(require("cross-fetch")); +const p_comuns_1 = require("p-comuns"); +const p_respostas_1 = require("p-respostas"); +const variaveis_1 = require("../variaveis"); +class ClassPilao { + constructor({ conta, produto, emDesenvolvimento = false, ver_log = false, }) { + _ClassPilao_instances.add(this); + _ClassPilao_produto.set(this, void 0); + _ClassPilao_conta.set(this, void 0); + _ClassPilao_emDesenvolvimento.set(this, void 0); + _ClassPilao_ver_log.set(this, void 0); + _ClassPilao_registrosParaEnvio.set(this, {}); + _ClassPilao_codigosParaDeletar.set(this, {}); + __classPrivateFieldSet(this, _ClassPilao_produto, produto, "f"); + __classPrivateFieldSet(this, _ClassPilao_conta, conta, "f"); + __classPrivateFieldSet(this, _ClassPilao_emDesenvolvimento, emDesenvolvimento, "f"); + __classPrivateFieldSet(this, _ClassPilao_ver_log, ver_log, "f"); + } + rotaEnviarRegistros() { + return __classPrivateFieldGet(this, _ClassPilao_instances, "m", _ClassPilao_gerarUrl).call(this, "enviar-registros"); + } + rotaDeletarRegistro() { + return __classPrivateFieldGet(this, _ClassPilao_instances, "m", _ClassPilao_gerarUrl).call(this, "deletar-registros"); + } + rotaConsultarSerie(tipoVisao) { + return __classPrivateFieldGet(this, _ClassPilao_instances, "m", _ClassPilao_gerarUrl).call(this, "consultar-serie", tipoVisao); + } + rotaIframeSerie(tipoVisao) { + const rota = `${variaveis_1.PREFIXO_PILAO}/consultar-serie/${__classPrivateFieldGet(this, _ClassPilao_produto, "f")}/${__classPrivateFieldGet(this, _ClassPilao_conta, "f")}/${tipoVisao}`; + const url = `${this.baseUrlSite}${rota}`; + return { rota, url }; + } + rotaFuncaoApi(funcao) { + return __classPrivateFieldGet(this, _ClassPilao_instances, "m", _ClassPilao_gerarUrl).call(this, "API", funcao); + } + async consultarApi(funcao, parametros) { + try { + const response = await (0, cross_fetch_1.default)(this.rotaFuncaoApi(funcao).url, { + body: JSON.stringify(parametros), + method: "POST", + headers: { "Content-Type": "application/json" }, + }); + const texto = await response.text(); + try { + const json = JSON.parse(texto); + return json; + } + catch { + return p_respostas_1.respostaComuns.erro("Consulta não retornou json válido", [texto]); + } + } + catch (erro) { + console.error(erro); + return p_respostas_1.respostaComuns.erroInterno({ + erro, + local: (0, p_comuns_1.nomeVariavel)({ ClassPilao }), + }); + } + } + get baseUrlApi() { + return __classPrivateFieldGet(this, _ClassPilao_emDesenvolvimento, "f") + ? "http://localhost:5080" + : "https://carro-de-boi.idz.one"; + } + get baseUrlSite() { + return __classPrivateFieldGet(this, _ClassPilao_emDesenvolvimento, "f") + ? "http://localhost:5081" + : "https://carro-de-boi.idz.one"; + } + validarCliente(_) { + if (!_?.conta) + return p_respostas_1.respostaComuns.erro("Conta não informada"); + if (!_?.produto) + return p_respostas_1.respostaComuns.erro("Produto não informado"); + return p_respostas_1.respostaComuns.valor(_); + } + adicionarRegistroParaEnviar(tabela, ...registros) { + __classPrivateFieldGet(this, _ClassPilao_registrosParaEnvio, "f")[tabela] = [ + ...(__classPrivateFieldGet(this, _ClassPilao_registrosParaEnvio, "f")[tabela] || []), + ...registros, + ]; + return this; + } + adicionarCodigoParaDeletar(tabela, ...codigos) { + __classPrivateFieldGet(this, _ClassPilao_codigosParaDeletar, "f")[tabela] = [ + ...(__classPrivateFieldGet(this, _ClassPilao_codigosParaDeletar, "f")[tabela] || []), + ...codigos, + ]; + return this; + } + async processarRegistros(url, registros, tabela, acao) { + const tamanhoBlocos = 1000; + while (registros.length > 0) { + const bloco = registros + .splice(0, tamanhoBlocos) + .map((r) => Object.fromEntries(Object.entries(r).map(([k, v]) => [k, v === undefined ? null : v]))); + const resp = await (0, cross_fetch_1.default)(url, { + method: "POST", + body: JSON.stringify({ tabela, registros: bloco }), + headers: { "Content-Type": "application/json" }, + }) + .then(async (r) => { + const texto = await r.text(); + try { + const json = JSON.parse(texto); + return json; + } + catch { + return p_respostas_1.respostaComuns.erro("Consulta não retornou json válido", [ + texto, + ]); + } + }) + .catch((e) => p_respostas_1.respostaComuns.erro(`Erro ao ${acao} registros`, [e.message])); + if (resp.eErro) + return resp; + } + return p_respostas_1.respostaComuns.valor(true); + } + async salvarRegistros() { + const re = await __classPrivateFieldGet(this, _ClassPilao_instances, "m", _ClassPilao_salvarEnviarRegistros).call(this); + if (re.eErro) + return re; + const rd = await __classPrivateFieldGet(this, _ClassPilao_instances, "m", _ClassPilao_salvarDeletarRegistros).call(this); + if (rd.eErro) + return rd; + return p_respostas_1.respostaComuns.valor(true); + } + serieConsultar(tipoVisao, parametros) { + const dados = async () => { + const url = this.rotaConsultarSerie(tipoVisao).url; + const resp = await (0, cross_fetch_1.default)(url.toString(), { + method: "POST", + body: JSON.stringify(parametros), + headers: { "Content-Type": "application/json" }, + }) + .then(async (r) => { + const texto = await r.text(); + try { + const json = JSON.parse(texto); + return json; + } + catch { + return p_respostas_1.respostaComuns.erro("Consulta não retornou json válido", [ + texto, + ]); + } + }) + .catch((e) => p_respostas_1.respostaComuns.erro("Erro ao enviar registros", [e.message])); + if (__classPrivateFieldGet(this, _ClassPilao_ver_log, "f")) + console.log(`[PILÃO]: buscar dados de "${JSON.stringify(parametros)}" para "${url}".`); + return resp; + }; + const url = () => { + const vUrl = this.rotaIframeSerie(tipoVisao).url; + const serie = encodeURIComponent(JSON.stringify(parametros, null, 2)); + if (__classPrivateFieldGet(this, _ClassPilao_ver_log, "f")) + console.log(`[PILÃO]: Serie Consultar url de "${JSON.stringify(serie)}" para "${vUrl}".`); + return `${vUrl}?serie=${serie}`; + }; + return { + dados, + url, + }; + } + urlLaboratorio() { + const rota = `${variaveis_1.PREFIXO_PILAO}/laboratório/${__classPrivateFieldGet(this, _ClassPilao_produto, "f")}/${__classPrivateFieldGet(this, _ClassPilao_conta, "f")}`; + const url = `${this.baseUrlSite}${rota}`; + return { rota, url }; + } +} +_ClassPilao_produto = new WeakMap(), _ClassPilao_conta = new WeakMap(), _ClassPilao_emDesenvolvimento = new WeakMap(), _ClassPilao_ver_log = new WeakMap(), _ClassPilao_registrosParaEnvio = new WeakMap(), _ClassPilao_codigosParaDeletar = new WeakMap(), _ClassPilao_instances = new WeakSet(), _ClassPilao_gerarUrl = function _ClassPilao_gerarUrl(acao, extraPath) { + const rota = `${variaveis_1.PREFIXO_PILAO}/api/${acao}/${__classPrivateFieldGet(this, _ClassPilao_produto, "f")}/${__classPrivateFieldGet(this, _ClassPilao_conta, "f")}${extraPath ? `/${extraPath}` : ""}`; + const url = `${this.baseUrlApi}${rota}`; + return { rota, url }; +}, _ClassPilao_salvarEnviarRegistros = async function _ClassPilao_salvarEnviarRegistros() { + for (const tabela of Object.keys(__classPrivateFieldGet(this, _ClassPilao_registrosParaEnvio, "f"))) { + const registros = __classPrivateFieldGet(this, _ClassPilao_registrosParaEnvio, "f")[tabela] || []; + const url = this.rotaEnviarRegistros().url; + if (__classPrivateFieldGet(this, _ClassPilao_ver_log, "f")) + console.log(`[PILÃO]: Enviando ${registros.length} registros na tabela "${tabela}" para "${url}".`); + const resp = await this.processarRegistros(url, registros, tabela, "enviar"); + if (resp.eErro) + return resp; + __classPrivateFieldGet(this, _ClassPilao_registrosParaEnvio, "f")[tabela] = []; + } + return p_respostas_1.respostaComuns.valor(true); +}, _ClassPilao_salvarDeletarRegistros = async function _ClassPilao_salvarDeletarRegistros() { + for (const tabela of Object.keys(__classPrivateFieldGet(this, _ClassPilao_codigosParaDeletar, "f"))) { + const codigos = [...(__classPrivateFieldGet(this, _ClassPilao_codigosParaDeletar, "f")[tabela] || [])]; + const url = this.rotaDeletarRegistro().url; + const resp = await this.processarRegistros(url, codigos, tabela, "deletar"); + if (resp.eErro) + return resp; + } + return p_respostas_1.respostaComuns.valor(true); +}; +const Pilao = (_) => new ClassPilao(_); +exports.Pilao = Pilao; diff --git a/dist-require/pilao-de-dados/Pilao/pilao-api.d.ts b/dist-require/pilao-de-dados/Pilao/pilao-api.d.ts new file mode 100644 index 0000000..e2c4c75 --- /dev/null +++ b/dist-require/pilao-de-dados/Pilao/pilao-api.d.ts @@ -0,0 +1,30 @@ +import type { z } from "zod"; +import type { zp_registrar_base_dados } from "../_enviar_registros"; +/** + * { + * 'rota':{ + * pr:{}// paramentros de entrada + * rs:{}// resposta + * } + * } + */ +export type tipo_pilao_api = { + /** retorna da data e hora do servido em formato iso */ + estado_servidor: { + pr: {}; + rs: { + data_hora: string; + }; + }; + tabelas: { + pr: {}; + rs: z.infer[]; + }; + unicos: { + pr: { + tabela: string; + coluna: string; + }; + rs: any[]; + }; +}; diff --git a/dist-require/pilao-de-dados/Pilao/pilao-api.js b/dist-require/pilao-de-dados/Pilao/pilao-api.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/dist-require/pilao-de-dados/Pilao/pilao-api.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/dist-require/pilao-de-dados/Pilao/tipagem.d.ts b/dist-require/pilao-de-dados/Pilao/tipagem.d.ts new file mode 100644 index 0000000..2b2a32c --- /dev/null +++ b/dist-require/pilao-de-dados/Pilao/tipagem.d.ts @@ -0,0 +1,11 @@ +import type { z } from "zod"; +import type { visoes_pilao } from "../visoes/listaDeVisoes"; +export type tipoConstrutorPilao = { + produto: string; + conta: string; +}; +export type tipoRetornoSerieconsulta = { + registros: any[]; + legenda: string; + serie: z.infer<(typeof visoes_pilao)[T]>; +}; diff --git a/dist-require/pilao-de-dados/Pilao/tipagem.js b/dist-require/pilao-de-dados/Pilao/tipagem.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/dist-require/pilao-de-dados/Pilao/tipagem.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/dist-require/pilao-de-dados/_deletar_registros.d.ts b/dist-require/pilao-de-dados/_deletar_registros.d.ts deleted file mode 100644 index ef3fa21..0000000 --- a/dist-require/pilao-de-dados/_deletar_registros.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { tipoResposta } from "p-respostas"; -import { z } from "zod"; -import { type zp_produto_conta } from "./variaveis"; -export declare const zp_deletar_registros: z.ZodObject<{ - tabela: z.ZodString; - codigos: z.ZodArray; -}, "strip", z.ZodTypeAny, { - tabela: string; - codigos: string[]; -}, { - tabela: string; - codigos: string[]; -}>; -export declare const deletar_registros: ({ conta, produto, emDesenvolvimento }: z.infer) => ({ codigos: codigos_entrada, tabela, }: z.infer) => Promise>; diff --git a/dist-require/pilao-de-dados/_deletar_registros.js b/dist-require/pilao-de-dados/_deletar_registros.js deleted file mode 100644 index 7dae1b6..0000000 --- a/dist-require/pilao-de-dados/_deletar_registros.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.deletar_registros = exports.zp_deletar_registros = void 0; -const cross_fetch_1 = __importDefault(require("cross-fetch")); -const p_respostas_1 = require("p-respostas"); -const zod_1 = require("zod"); -const variaveis_1 = require("./variaveis"); -//enviar registros para base de dados -exports.zp_deletar_registros = zod_1.z.object({ - tabela: zod_1.z.string(), - codigos: zod_1.z.array(zod_1.z.string()), -}); -const deletar_registros = ({ conta, produto, emDesenvolvimento }) => async ({ codigos: codigos_entrada, tabela, }) => { - const codigos = [...codigos_entrada]; - const url = new URL(`${(0, variaveis_1.urlPilao)(emDesenvolvimento).api}/${Object.keys({ deletar_registros: exports.deletar_registros })[0]}/${produto}/${conta}`); - const tamanhoBlocos = 1000; - while (codigos.length > 0) { - const bloco = codigos.splice(0, tamanhoBlocos); - const resp = await (0, cross_fetch_1.default)(url.toString(), { - method: "POST", - body: JSON.stringify({ tabela, codigos: bloco }), - headers: { "Content-Type": "application/json" }, - }) - .then((r) => r.json()) - .catch((e) => p_respostas_1.respostaComuns.erro("Erro ao enviar registros", [e.message])) - .then((r) => r); - if (resp.eErro) { - return resp; - } - } - return p_respostas_1.respostaComuns.valor(true); -}; -exports.deletar_registros = deletar_registros; diff --git a/dist-require/pilao-de-dados/_enviar_registros.d.ts b/dist-require/pilao-de-dados/_enviar_registros.d.ts index 88a9f95..e96f97f 100644 --- a/dist-require/pilao-de-dados/_enviar_registros.d.ts +++ b/dist-require/pilao-de-dados/_enviar_registros.d.ts @@ -1,6 +1,4 @@ -import type { tipoResposta } from "p-respostas"; import { z } from "zod"; -import { type zp_produto_conta } from "./variaveis"; export declare const zp_registrar_base_dados: z.ZodObject<{ tabela: z.ZodString; colunas: z.ZodArray[]; }>; -export declare const enviar_registros: ({ conta, produto, emDesenvolvimento, ver_log, }: z.infer) => ({ registros: registros_entrada, tabela, }: z.infer) => Promise>; diff --git a/dist-require/pilao-de-dados/_enviar_registros.js b/dist-require/pilao-de-dados/_enviar_registros.js index 037344c..20b8e8d 100644 --- a/dist-require/pilao-de-dados/_enviar_registros.js +++ b/dist-require/pilao-de-dados/_enviar_registros.js @@ -1,18 +1,13 @@ "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; Object.defineProperty(exports, "__esModule", { value: true }); -exports.enviar_registros = exports.zp_enviar_registros = exports.zp_registrar_base_dados = void 0; -const cross_fetch_1 = __importDefault(require("cross-fetch")); -const p_respostas_1 = require("p-respostas"); +exports.zp_enviar_registros = exports.zp_registrar_base_dados = void 0; const zod_1 = require("zod"); const variaveis_1 = require("./variaveis"); exports.zp_registrar_base_dados = zod_1.z.object({ tabela: zod_1.z.string(), colunas: zod_1.z.array(zod_1.z.object({ coluna: zod_1.z.string(), - tipo: variaveis_1.z_tipo_coluna_base_dados, + tipo: variaveis_1.z_tipos_dados_registro, })), }); //enviar registros para base de dados @@ -20,31 +15,6 @@ exports.zp_enviar_registros = zod_1.z.object({ tabela: zod_1.z.string(), registros: zod_1.z.array(zod_1.z.record(zod_1.z.string(), zod_1.z.object({ valor: zod_1.z.any(), - tipo: variaveis_1.z_tipo_coluna_base_dados.optional().nullable(), + tipo: variaveis_1.z_tipos_dados_registro.optional().nullable(), }))), }); -const enviar_registros = ({ conta, produto, emDesenvolvimento, ver_log, }) => async ({ registros: registros_entrada, tabela, }) => { - const registros = [...registros_entrada]; - const url = new URL(`${(0, variaveis_1.urlPilao)(emDesenvolvimento).api}/${Object.keys({ enviar_registros: exports.enviar_registros })[0]}/${produto}/${conta}`); - if (ver_log) - console.log(`[PILÃO]: Enviando "${registros.length}" registros na tabela "${tabela}" para "${url}".`); - const tamanhoBlocos = 1000; - while (registros.length > 0) { - const bloco = registros - .splice(0, tamanhoBlocos) - .map((r) => Object.fromEntries(Object.entries(r).map(([k, v]) => [k, v === undefined ? null : v]))); - const resp = await (0, cross_fetch_1.default)(url.toString(), { - method: "POST", - body: JSON.stringify({ tabela, registros: bloco }), - headers: { "Content-Type": "application/json" }, - }) - .then((r) => r.json()) - .catch((e) => p_respostas_1.respostaComuns.erro("Erro ao enviar registros", [e.message])) - .then((r) => r); - if (resp.eErro) { - return resp; - } - } - return p_respostas_1.respostaComuns.valor(true); -}; -exports.enviar_registros = enviar_registros; diff --git a/dist-require/pilao-de-dados/_serie_consultar.d.ts b/dist-require/pilao-de-dados/_serie_consultar.d.ts index 3e5c048..24c591f 100644 --- a/dist-require/pilao-de-dados/_serie_consultar.d.ts +++ b/dist-require/pilao-de-dados/_serie_consultar.d.ts @@ -1,7 +1,4 @@ -import type { tipoResposta } from "p-respostas"; import { z } from "zod"; -import { type zp_produto_conta } from "./variaveis"; -import type { visoes } from "./visoes"; export declare const z_filtro: z.ZodObject<{ coluna: z.ZodString; valor: z.ZodAny; @@ -15,11 +12,3 @@ export declare const z_filtro: z.ZodObject<{ operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; valor?: any; }>; -export declare const serie_consultar: (cliente: z.infer) => (tipoVisao: T, parametros: z.infer<(typeof visoes)[T]>) => { - dados: () => Promise; - }>>; - url: () => string; -}; diff --git a/dist-require/pilao-de-dados/_serie_consultar.js b/dist-require/pilao-de-dados/_serie_consultar.js index afcf53e..388b2e8 100644 --- a/dist-require/pilao-de-dados/_serie_consultar.js +++ b/dist-require/pilao-de-dados/_serie_consultar.js @@ -1,11 +1,6 @@ "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; Object.defineProperty(exports, "__esModule", { value: true }); -exports.serie_consultar = exports.z_filtro = void 0; -const cross_fetch_1 = __importDefault(require("cross-fetch")); -const p_respostas_1 = require("p-respostas"); +exports.z_filtro = void 0; const zod_1 = require("zod"); const variaveis_1 = require("./variaveis"); exports.z_filtro = zod_1.z.object({ @@ -13,31 +8,3 @@ exports.z_filtro = zod_1.z.object({ valor: zod_1.z.any(), operador: variaveis_1.operadores_pilao, }); -const serie_consultar = (cliente) => (tipoVisao, parametros) => { - const dados = async () => { - const url = new URL(`${(0, variaveis_1.urlPilao)(cliente.emDesenvolvimento).api}/${tipoVisao}/${cliente.produto}/${cliente.conta}`); - const resp = await (0, cross_fetch_1.default)(url.toString(), { - method: "POST", - body: JSON.stringify(parametros), - headers: { "Content-Type": "application/json" }, - }) - .then((r) => r.json()) - .catch((e) => p_respostas_1.respostaComuns.erro("Erro ao enviar registros", [e.message])) - .then((r) => r); - if (cliente.ver_log) - console.log(`[PILÃO]: buscar dados de "${JSON.stringify(parametros)}" para "${url.href}".`); - return resp; - }; - const url = () => { - const vUrl = new URL(`${(0, variaveis_1.urlPilao)(cliente.emDesenvolvimento).site}/${tipoVisao}/${cliente.produto}/${cliente.conta}`); - const serie = encodeURIComponent(JSON.stringify(parametros, null, 2)); - if (cliente.ver_log) - console.log(`[PILÃO]: Serie Consultar url de "${JSON.stringify(serie)}" para "${vUrl.href}".`); - return `${vUrl.href}?serie=${serie}`; - }; - return { - dados, - url, - }; -}; -exports.serie_consultar = serie_consultar; diff --git a/dist-require/pilao-de-dados/index.d.ts b/dist-require/pilao-de-dados/index.d.ts index e4ab599..398076e 100644 --- a/dist-require/pilao-de-dados/index.d.ts +++ b/dist-require/pilao-de-dados/index.d.ts @@ -1,169 +1,13 @@ -import { zp_deletar_registros } from "./_deletar_registros"; export { PREFIXO_PILAO, urlPilao } from "./variaveis"; -import { zp_enviar_registros } from "./_enviar_registros"; -import { zp_produto_conta } from "./variaveis"; -import { visoes } from "./visoes"; +export * from "./Pilao"; +export * from "./Pilao/pilao-api"; +export * from "./Pilao/tipagem"; export declare const pPilao: { extruturas_de_campos: { - z_contagem_em_barra_vertical: { - visao: "z_contagem_em_barra_vertical"; - rotulo: string; - tabela: (_: { - tabela: string; - colanuEixoX: string; - colunaAgrupamento?: string[] | undefined; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }) => string; - descricao: (_: { - tabela: string; - colanuEixoX: string; - colunaAgrupamento?: string[] | undefined; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }) => string; - campos: { - tabela: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - colanuEixoX: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - colunaAgrupamento: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - filtros: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - descricao_pelo_usuario: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - }; - }; - z_contagem_em_pizza: { - visao: "z_contagem_em_pizza"; - rotulo: string; - tabela: (_: { - tabela: string; - classes: string; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }) => string; - descricao: (_: { - tabela: string; - classes: string; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }) => string; - campos: { - tabela: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - classes: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - filtros: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - descricao_pelo_usuario: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - }; - }; - z_tabela: { - visao: "z_tabela"; - rotulo: string; - tabela: (_: { - tabela: string; - colunas: string[]; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - coluna_ordem?: string | undefined; - direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; - }) => string; - descricao: (_: { - tabela: string; - colunas: string[]; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - coluna_ordem?: string | undefined; - direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; - }) => string; - campos: { - tabela: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - colunas: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - filtros: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - descricao_pelo_usuario: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - coluna_ordem: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - direcao_ordem: { - rotulo: string; - tipo_campo: import("zod").TypeOf>; - order: number; - }; - }; - }; + z_contagem_em_barra_vertical: import("./visoes/tipagem").tipo_estrutura_visao_grafico<"z_contagem_em_barra_vertical">; + z_contagem_em_pizza: import("./visoes/tipagem").tipo_estrutura_visao_grafico<"z_contagem_em_pizza">; + z_tabela: import("./visoes/tipagem").tipo_estrutura_visao_grafico<"z_tabela">; + z_soma_em_barra_vertical: import("./visoes/tipagem").tipo_estrutura_visao_grafico<"z_soma_em_barra_vertical">; }; z_contagem_em_barra_vertical: import("zod").ZodObject<{ tabela: import("zod").ZodString; @@ -282,6 +126,61 @@ export declare const pPilao: { coluna_ordem?: string | undefined; direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; }>; + z_soma_em_barra_vertical: import("zod").ZodObject<{ + tabela: import("zod").ZodString; + colanuEixoX: import("zod").ZodString; + colunaSoma: import("zod").ZodString; + unidadeSoma: import("zod").ZodOptional; + colunaAgrupamento: import("zod").ZodOptional>; + filtros: import("zod").ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", import("zod").ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: import("zod").ZodOptional; + }, "strip", import("zod").ZodTypeAny, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; + }, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; + }>; + zp_deletar_registros: import("zod").ZodObject<{ + tabela: import("zod").ZodString; + codigos: import("zod").ZodArray; + }, "strip", import("zod").ZodTypeAny, { + tabela: string; + codigos: string[]; + }, { + tabela: string; + codigos: string[]; + }>; zp_registrar_base_dados: import("zod").ZodObject<{ tabela: import("zod").ZodString; colunas: import("zod").ZodArray; - enviar_registros: ({ conta, produto, emDesenvolvimento, ver_log, }: import("zod").TypeOf) => ({ registros: registros_entrada, tabela, }: import("zod").TypeOf) => Promise>; + z_tipos_dados_registro: import("zod").ZodEnum<["texto", "numero", "confirmacao", "lista_texto", "lista_numero", "lista_mes", "lista_data", "mes", "data"]>; zp_enviar_registros: import("zod").ZodObject<{ tabela: import("zod").ZodString; registros: import("zod").ZodArray[]; }>; - serie_consultar: (cliente: import("zod").TypeOf) => (tipoVisao: T, parametros: import("zod").TypeOf<(typeof visoes)[T]>) => { - dados: () => Promise; - }>>; - url: () => string; - }; zp_produto_conta: import("zod").ZodObject<{ produto: import("zod").ZodString; conta: import("zod").ZodString; @@ -358,17 +249,6 @@ export declare const pPilao: { ver_log?: boolean | undefined; }>; validarZ: (zodType: import("zod").ZodType, objeto: any, mensagem: string) => import("p-respostas").tipoRespostaErro | import("p-respostas").tipoRespostaSucesso; - deletar_registros: ({ conta, produto, emDesenvolvimento }: import("zod").TypeOf) => ({ codigos: codigos_entrada, tabela, }: import("zod").TypeOf) => Promise>; - zp_deletar_registros: import("zod").ZodObject<{ - tabela: import("zod").ZodString; - codigos: import("zod").ZodArray; - }, "strip", import("zod").ZodTypeAny, { - tabela: string; - codigos: string[]; - }, { - tabela: string; - codigos: string[]; - }>; operadores_pilao: import("zod").ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>; operadores_permitidos_por_tipo: { texto: ("=" | "!=" | ">" | "<" | ">=" | "<=" | "∩")[]; @@ -394,7 +274,7 @@ export declare const pPilao: { operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; valor?: any; }>; - visoes: { + visoes_pilao: { z_contagem_em_barra_vertical: import("zod").ZodObject<{ tabela: import("zod").ZodString; colanuEixoX: import("zod").ZodString; @@ -512,5 +392,50 @@ export declare const pPilao: { coluna_ordem?: string | undefined; direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; }>; + z_soma_em_barra_vertical: import("zod").ZodObject<{ + tabela: import("zod").ZodString; + colanuEixoX: import("zod").ZodString; + colunaSoma: import("zod").ZodString; + unidadeSoma: import("zod").ZodOptional; + colunaAgrupamento: import("zod").ZodOptional>; + filtros: import("zod").ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", import("zod").ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: import("zod").ZodOptional; + }, "strip", import("zod").ZodTypeAny, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; + }, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; + }>; }; }; diff --git a/dist-require/pilao-de-dados/index.js b/dist-require/pilao-de-dados/index.js index 18e2b0b..5fb4413 100644 --- a/dist-require/pilao-de-dados/index.js +++ b/dist-require/pilao-de-dados/index.js @@ -1,27 +1,42 @@ "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.pPilao = exports.urlPilao = exports.PREFIXO_PILAO = void 0; -const _deletar_registros_1 = require("./_deletar_registros"); var variaveis_1 = require("./variaveis"); Object.defineProperty(exports, "PREFIXO_PILAO", { enumerable: true, get: function () { return variaveis_1.PREFIXO_PILAO; } }); Object.defineProperty(exports, "urlPilao", { enumerable: true, get: function () { return variaveis_1.urlPilao; } }); const _enviar_registros_1 = require("./_enviar_registros"); const variaveis_2 = require("./variaveis"); +__exportStar(require("./Pilao"), exports); +__exportStar(require("./Pilao/pilao-api"), exports); +__exportStar(require("./Pilao/tipagem"), exports); const _serie_consultar_1 = require("./_serie_consultar"); const visoes_1 = require("./visoes"); +const listaDeVisoes_1 = require("./visoes/listaDeVisoes"); exports.pPilao = { + zp_deletar_registros: variaveis_2.zp_deletar_registros, zp_registrar_base_dados: _enviar_registros_1.zp_registrar_base_dados, - enviar_registros: _enviar_registros_1.enviar_registros, + z_tipos_dados_registro: variaveis_2.z_tipos_dados_registro, zp_enviar_registros: _enviar_registros_1.zp_enviar_registros, - serie_consultar: _serie_consultar_1.serie_consultar, zp_produto_conta: variaveis_2.zp_produto_conta, validarZ: variaveis_2.validarZ, - deletar_registros: _deletar_registros_1.deletar_registros, - zp_deletar_registros: _deletar_registros_1.zp_deletar_registros, operadores_pilao: variaveis_2.operadores_pilao, operadores_permitidos_por_tipo: variaveis_2.operadores_permitidos_por_tipo, z_filtro: _serie_consultar_1.z_filtro, - visoes: visoes_1.visoes, - ...visoes_1.visoes, + visoes_pilao: listaDeVisoes_1.visoes_pilao, + ...listaDeVisoes_1.visoes_pilao, extruturas_de_campos: visoes_1.extruturas_de_campos, }; diff --git a/dist-require/pilao-de-dados/variaveis.d.ts b/dist-require/pilao-de-dados/variaveis.d.ts index 3183c96..2f36979 100644 --- a/dist-require/pilao-de-dados/variaveis.d.ts +++ b/dist-require/pilao-de-dados/variaveis.d.ts @@ -1,4 +1,14 @@ import { z } from "zod"; +export declare const zp_deletar_registros: z.ZodObject<{ + tabela: z.ZodString; + codigos: z.ZodArray; +}, "strip", z.ZodTypeAny, { + tabela: string; + codigos: string[]; +}, { + tabela: string; + codigos: string[]; +}>; export declare const zAmbiente: z.ZodEnum<["desenvolvimento", "producao"]>; export declare const PREFIXO_PILAO = "/pilao-de-dados"; export declare const validarZ: (zodType: z.ZodType, objeto: any, mensagem: string) => import("p-respostas").tipoRespostaErro | import("p-respostas").tipoRespostaSucesso; @@ -18,10 +28,10 @@ export declare const zp_produto_conta: z.ZodObject<{ emDesenvolvimento?: boolean | undefined; ver_log?: boolean | undefined; }>; -export declare const z_tipo_coluna_base_dados: z.ZodEnum<["texto", "numero", "confirmacao", "lista_texto", "lista_numero", "lista_mes", "lista_data", "mes", "data"]>; +export declare const z_tipos_dados_registro: z.ZodEnum<["texto", "numero", "confirmacao", "lista_texto", "lista_numero", "lista_mes", "lista_data", "mes", "data"]>; export declare const operadores_pilao: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>; export declare const operadores_permitidos_por_tipo: { - [key in z.infer]: z.infer[]; + [key in z.infer]: z.infer[]; }; export declare const z_validar_colunna_base_dados: { texto: z.ZodNullable; diff --git a/dist-require/pilao-de-dados/variaveis.js b/dist-require/pilao-de-dados/variaveis.js index 92b2de0..f6386c9 100644 --- a/dist-require/pilao-de-dados/variaveis.js +++ b/dist-require/pilao-de-dados/variaveis.js @@ -1,8 +1,12 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.urlPilao = exports.z_validar_colunna_base_dados = exports.operadores_permitidos_por_tipo = exports.operadores_pilao = exports.z_tipo_coluna_base_dados = exports.zp_produto_conta = exports.validarZ = exports.PREFIXO_PILAO = exports.zAmbiente = void 0; +exports.urlPilao = exports.z_validar_colunna_base_dados = exports.operadores_permitidos_por_tipo = exports.operadores_pilao = exports.z_tipos_dados_registro = exports.zp_produto_conta = exports.validarZ = exports.PREFIXO_PILAO = exports.zAmbiente = exports.zp_deletar_registros = void 0; const p_respostas_1 = require("p-respostas"); const zod_1 = require("zod"); +exports.zp_deletar_registros = zod_1.z.object({ + tabela: zod_1.z.string(), + codigos: zod_1.z.array(zod_1.z.string()), +}); exports.zAmbiente = zod_1.z.enum(["desenvolvimento", "producao"]); exports.PREFIXO_PILAO = "/pilao-de-dados"; const validarZ = (zodType, objeto, mensagem) => { @@ -19,7 +23,7 @@ exports.zp_produto_conta = zod_1.z.object({ emDesenvolvimento: zod_1.z.boolean().optional(), ver_log: zod_1.z.boolean().optional(), }); -exports.z_tipo_coluna_base_dados = zod_1.z.enum([ +exports.z_tipos_dados_registro = zod_1.z.enum([ "texto", "numero", "confirmacao", diff --git a/dist-require/pilao-de-dados/visoes/estrutura_de_campos/index.d.ts b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/index.d.ts new file mode 100644 index 0000000..5528f6c --- /dev/null +++ b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/index.d.ts @@ -0,0 +1,6 @@ +import type { visoes_pilao } from "../listaDeVisoes"; +import type { tipo_estrutura_visao_grafico } from "../tipagem"; +/** Cria a estrutura de campos para insersão de dados */ +export declare const extruturas_de_campos: { + [T in keyof typeof visoes_pilao]: tipo_estrutura_visao_grafico; +}; diff --git a/dist-require/pilao-de-dados/visoes/estrutura_de_campos/index.js b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/index.js new file mode 100644 index 0000000..0dd2535 --- /dev/null +++ b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/index.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.extruturas_de_campos = void 0; +const z_contagem_em_barra_vertical_1 = require("./z_contagem_em_barra_vertical"); +const z_contagem_em_pizza_1 = require("./z_contagem_em_pizza"); +const z_soma_em_barra_vertical_1 = require("./z_soma_em_barra_vertical"); +const z_tabela_1 = require("./z_tabela"); +/** Cria a estrutura de campos para insersão de dados */ +exports.extruturas_de_campos = { + z_contagem_em_barra_vertical: z_contagem_em_barra_vertical_1.z_contagem_em_barra_vertical, + z_contagem_em_pizza: z_contagem_em_pizza_1.z_contagem_em_pizza, + z_soma_em_barra_vertical: z_soma_em_barra_vertical_1.z_soma_em_barra_vertical, + z_tabela: z_tabela_1.z_tabela, +}; diff --git a/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.d.ts b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.d.ts new file mode 100644 index 0000000..245eb35 --- /dev/null +++ b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.d.ts @@ -0,0 +1,3 @@ +import type { tipo_estrutura_visao_grafico } from "../tipagem"; +/** Cria a estrutura de campos para insersão de dados */ +export declare const z_contagem_em_barra_vertical: tipo_estrutura_visao_grafico<"z_contagem_em_barra_vertical">; diff --git a/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.js b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.js new file mode 100644 index 0000000..9ab5add --- /dev/null +++ b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.js @@ -0,0 +1,40 @@ +"use strict"; +// usar describe para definir o tipo de campo para render do componente +Object.defineProperty(exports, "__esModule", { value: true }); +exports.z_contagem_em_barra_vertical = void 0; +/** Cria a estrutura de campos para insersão de dados */ +exports.z_contagem_em_barra_vertical = { + visao: "z_contagem_em_barra_vertical", + rotulo: "Contagem em Barra Vertical", + tabela: ({ tabela }) => tabela, + descricao: ({ tabela, descricao_pelo_usuario, colanuEixoX, filtros, colunaAgrupamento, }) => { + if (String(descricao_pelo_usuario || "").trim()) + return String(descricao_pelo_usuario || "").trim(); + return `Contagem de ${tabela} por ${colanuEixoX}${!filtros?.length + ? "" + : `, quando ${filtros + .map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`) + .join(", ")}`}${!colunaAgrupamento?.length + ? "" + : `, agrupado por ${colunaAgrupamento.join(", ")}`}.`; + }, + campos: { + tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, + colanuEixoX: { + rotulo: "Coluna do Eixo X", + tipo_campo: "coluna", + order: 2, + }, + colunaAgrupamento: { + rotulo: "Colunas de Agrupamento", + tipo_campo: "lista_colunas", + order: 3, + }, + descricao_pelo_usuario: { + rotulo: "Descrição (opcional)", + tipo_campo: "texto", + order: 4, + }, + filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 5 }, + }, +}; diff --git a/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.d.ts b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.d.ts new file mode 100644 index 0000000..206a144 --- /dev/null +++ b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.d.ts @@ -0,0 +1,3 @@ +import type { tipo_estrutura_visao_grafico } from "../tipagem"; +/** Cria a estrutura de campos para insersão de dados */ +export declare const z_contagem_em_pizza: tipo_estrutura_visao_grafico<"z_contagem_em_pizza">; diff --git a/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.js b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.js new file mode 100644 index 0000000..bf651d8 --- /dev/null +++ b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.js @@ -0,0 +1,29 @@ +"use strict"; +// usar describe para definir o tipo de campo para render do componente +Object.defineProperty(exports, "__esModule", { value: true }); +exports.z_contagem_em_pizza = void 0; +/** Cria a estrutura de campos para insersão de dados */ +exports.z_contagem_em_pizza = { + visao: "z_contagem_em_pizza", + rotulo: "Contagem em Pizza", + tabela: ({ tabela }) => tabela, + descricao: ({ tabela, descricao_pelo_usuario, classes, filtros }) => { + if (String(descricao_pelo_usuario || "").trim()) + return String(descricao_pelo_usuario || "").trim(); + return `Contagem de ${tabela} por ${classes}${!filtros?.length + ? "" + : `, quando ${filtros + .map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`) + .join(", ")}`}.`; + }, + campos: { + tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, + classes: { rotulo: "Classes", tipo_campo: "coluna", order: 2 }, + descricao_pelo_usuario: { + rotulo: "Descrição (opcional)", + tipo_campo: "texto", + order: 3, + }, + filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 4 }, + }, +}; diff --git a/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.d.ts b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.d.ts new file mode 100644 index 0000000..7049fd1 --- /dev/null +++ b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.d.ts @@ -0,0 +1,3 @@ +import type { tipo_estrutura_visao_grafico } from "../tipagem"; +/** Cria a estrutura de campos para insersão de dados */ +export declare const z_soma_em_barra_vertical: tipo_estrutura_visao_grafico<"z_soma_em_barra_vertical">; diff --git a/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.js b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.js new file mode 100644 index 0000000..1ec8b6b --- /dev/null +++ b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.js @@ -0,0 +1,50 @@ +"use strict"; +// usar describe para definir o tipo de campo para render do componente +Object.defineProperty(exports, "__esModule", { value: true }); +exports.z_soma_em_barra_vertical = void 0; +/** Cria a estrutura de campos para insersão de dados */ +exports.z_soma_em_barra_vertical = { + visao: "z_soma_em_barra_vertical", + rotulo: "Soma em Barra Vertical", + tabela: ({ tabela }) => tabela, + descricao: ({ descricao_pelo_usuario, colanuEixoX, filtros, colunaAgrupamento, colunaSoma, }) => { + if (String(descricao_pelo_usuario || "").trim()) + return String(descricao_pelo_usuario || "").trim(); + return `Soma de ${colunaSoma} por ${colanuEixoX}${!filtros?.length + ? "" + : `, quando ${filtros + .map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`) + .join(", ")}`}${!colunaAgrupamento?.length + ? "" + : `, agrupado por ${colunaAgrupamento.join(", ")}`}.`; + }, + campos: { + tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, + colunaSoma: { + rotulo: "Coluna de Somatória", + tipo_campo: "coluna", + order: 2, + }, + unidadeSoma: { + rotulo: "Unidade de Somatória", + tipo_campo: "texto", + order: 3, + }, + colanuEixoX: { + rotulo: "Coluna do Eixo X", + tipo_campo: "coluna", + order: 4, + }, + colunaAgrupamento: { + rotulo: "Colunas de Agrupamento", + tipo_campo: "lista_colunas", + order: 5, + }, + descricao_pelo_usuario: { + rotulo: "Descrição (opcional)", + tipo_campo: "texto", + order: 6, + }, + filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 5 }, + }, +}; diff --git a/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.d.ts b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.d.ts new file mode 100644 index 0000000..66bead7 --- /dev/null +++ b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.d.ts @@ -0,0 +1,3 @@ +import type { tipo_estrutura_visao_grafico } from "../tipagem"; +/** Cria a estrutura de campos para insersão de dados */ +export declare const z_tabela: tipo_estrutura_visao_grafico<"z_tabela">; diff --git a/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.js b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.js new file mode 100644 index 0000000..38dfdb0 --- /dev/null +++ b/dist-require/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.js @@ -0,0 +1,39 @@ +"use strict"; +// usar describe para definir o tipo de campo para render do componente +Object.defineProperty(exports, "__esModule", { value: true }); +exports.z_tabela = void 0; +/** Cria a estrutura de campos para insersão de dados */ +exports.z_tabela = { + visao: "z_tabela", + rotulo: "Tabela", + tabela: ({ tabela }) => tabela, + descricao: ({ tabela, descricao_pelo_usuario, filtros }) => { + if (String(descricao_pelo_usuario || "").trim()) + return String(descricao_pelo_usuario || "").trim(); + return `Consulta na ${tabela} ${!filtros?.length + ? "" + : `, quando ${filtros + .map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`) + .join(", ")}`}.`; + }, + campos: { + tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, + colunas: { rotulo: "Colunas", tipo_campo: "lista_colunas", order: 2 }, + descricao_pelo_usuario: { + rotulo: "Descrição (opcional)", + tipo_campo: "texto", + order: 3, + }, + coluna_ordem: { + rotulo: "Coluna de Ordem", + tipo_campo: "coluna", + order: 4, + }, + direcao_ordem: { + rotulo: "Direção de Ordem", + tipo_campo: "ordem", + order: 5, + }, + filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 6 }, + }, +}; diff --git a/dist-require/pilao-de-dados/visoes/index.d.ts b/dist-require/pilao-de-dados/visoes/index.d.ts index 7ff03ea..4070a97 100644 --- a/dist-require/pilao-de-dados/visoes/index.d.ts +++ b/dist-require/pilao-de-dados/visoes/index.d.ts @@ -1,260 +1 @@ -import { z } from "zod"; -declare const z_tipos_campos: z.ZodEnum<["tabela", "coluna", "texto", "lista_colunas", "lista_filtros", "ordem"]>; -export declare const z_contagem_em_barra_vertical: z.ZodObject<{ - tabela: z.ZodString; - colanuEixoX: z.ZodString; - colunaAgrupamento: z.ZodOptional>; - filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; - }, "strip", z.ZodTypeAny, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }>, "many">>; - descricao_pelo_usuario: z.ZodOptional; -}, "strip", z.ZodTypeAny, { - tabela: string; - colanuEixoX: string; - colunaAgrupamento?: string[] | undefined; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; -}, { - tabela: string; - colanuEixoX: string; - colunaAgrupamento?: string[] | undefined; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; -}>; -export declare const z_contagem_em_pizza: z.ZodObject<{ - tabela: z.ZodString; - classes: z.ZodString; - filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; - }, "strip", z.ZodTypeAny, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }>, "many">>; - descricao_pelo_usuario: z.ZodOptional; -}, "strip", z.ZodTypeAny, { - tabela: string; - classes: string; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; -}, { - tabela: string; - classes: string; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; -}>; -export declare const z_tabela: z.ZodObject<{ - tabela: z.ZodString; - colunas: z.ZodArray; - coluna_ordem: z.ZodOptional; - direcao_ordem: z.ZodOptional>; - filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; - }, "strip", z.ZodTypeAny, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }>, "many">>; - descricao_pelo_usuario: z.ZodOptional; -}, "strip", z.ZodTypeAny, { - tabela: string; - colunas: string[]; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - coluna_ordem?: string | undefined; - direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; -}, { - tabela: string; - colunas: string[]; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - coluna_ordem?: string | undefined; - direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; -}>; -export declare const visoes: { - z_contagem_em_barra_vertical: z.ZodObject<{ - tabela: z.ZodString; - colanuEixoX: z.ZodString; - colunaAgrupamento: z.ZodOptional>; - filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; - }, "strip", z.ZodTypeAny, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }>, "many">>; - descricao_pelo_usuario: z.ZodOptional; - }, "strip", z.ZodTypeAny, { - tabela: string; - colanuEixoX: string; - colunaAgrupamento?: string[] | undefined; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }, { - tabela: string; - colanuEixoX: string; - colunaAgrupamento?: string[] | undefined; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }>; - z_contagem_em_pizza: z.ZodObject<{ - tabela: z.ZodString; - classes: z.ZodString; - filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; - }, "strip", z.ZodTypeAny, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }>, "many">>; - descricao_pelo_usuario: z.ZodOptional; - }, "strip", z.ZodTypeAny, { - tabela: string; - classes: string; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }, { - tabela: string; - classes: string; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - }>; - z_tabela: z.ZodObject<{ - tabela: z.ZodString; - colunas: z.ZodArray; - coluna_ordem: z.ZodOptional; - direcao_ordem: z.ZodOptional>; - filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; - }, "strip", z.ZodTypeAny, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }, { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }>, "many">>; - descricao_pelo_usuario: z.ZodOptional; - }, "strip", z.ZodTypeAny, { - tabela: string; - colunas: string[]; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - coluna_ordem?: string | undefined; - direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; - }, { - tabela: string; - colunas: string[]; - filtros?: { - coluna: string; - operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; - valor?: any; - }[] | undefined; - descricao_pelo_usuario?: string | undefined; - coluna_ordem?: string | undefined; - direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; - }>; -}; -/** Cria a estrutura de campos para insersão de dados */ -export declare const extruturas_de_campos: { - [z in keyof typeof visoes]: { - /** Nome da Visão */ - visao: z; - /** Rotulo */ - rotulo: string; - /** Retorna a tabela Referente ao Registro */ - tabela: (_: z.infer<(typeof visoes)[z]>) => string; - /** Descrição */ - descricao: (_: z.infer<(typeof visoes)[z]>) => string; - /** Lista os campos e suas configurações */ - campos: { - [c in keyof Required>]: { - rotulo: string; - tipo_campo: z.infer; - order: number; - }; - }; - }; -}; -export {}; +export * from "./estrutura_de_campos"; diff --git a/dist-require/pilao-de-dados/visoes/index.js b/dist-require/pilao-de-dados/visoes/index.js index f63bae8..6d92bf7 100644 --- a/dist-require/pilao-de-dados/visoes/index.js +++ b/dist-require/pilao-de-dados/visoes/index.js @@ -1,136 +1,17 @@ "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; Object.defineProperty(exports, "__esModule", { value: true }); -exports.extruturas_de_campos = exports.visoes = exports.z_tabela = exports.z_contagem_em_pizza = exports.z_contagem_em_barra_vertical = void 0; -const zod_1 = require("zod"); -const _serie_consultar_1 = require("../_serie_consultar"); -// usar describe para definir o tipo de campo para render do componente -const z_tipos_campos = zod_1.z.enum([ - "tabela", - "coluna", - "texto", - "lista_colunas", - "lista_filtros", - "ordem", -]); -exports.z_contagem_em_barra_vertical = zod_1.z.object({ - tabela: zod_1.z.string(), - colanuEixoX: zod_1.z.string(), - colunaAgrupamento: zod_1.z.string().array().optional(), - filtros: _serie_consultar_1.z_filtro.array().optional(), - descricao_pelo_usuario: zod_1.z.string().optional(), -}); -exports.z_contagem_em_pizza = zod_1.z.object({ - tabela: zod_1.z.string(), - classes: zod_1.z.string(), - filtros: _serie_consultar_1.z_filtro.array().optional(), - descricao_pelo_usuario: zod_1.z.string().optional(), -}); -exports.z_tabela = zod_1.z.object({ - tabela: zod_1.z.string(), - colunas: zod_1.z.string().array(), - coluna_ordem: zod_1.z.string().optional(), - direcao_ordem: zod_1.z.enum(["asc", "desc", "1", "-1"]).optional(), - filtros: _serie_consultar_1.z_filtro.array().optional(), - descricao_pelo_usuario: zod_1.z.string().optional(), -}); -exports.visoes = { - z_contagem_em_barra_vertical: exports.z_contagem_em_barra_vertical, - z_contagem_em_pizza: exports.z_contagem_em_pizza, - z_tabela: exports.z_tabela, -}; -/** Cria a estrutura de campos para insersão de dados */ -exports.extruturas_de_campos = { - z_contagem_em_barra_vertical: { - visao: "z_contagem_em_barra_vertical", - rotulo: "Contagem em Barra Vertical", - tabela: ({ tabela }) => tabela, - descricao: ({ tabela, descricao_pelo_usuario, colanuEixoX, filtros, colunaAgrupamento, }) => { - if (String(descricao_pelo_usuario || "").trim()) - return String(descricao_pelo_usuario || "").trim(); - return `Contagem de ${tabela} por ${colanuEixoX}${!filtros?.length - ? "" - : `, quando ${filtros - .map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`) - .join(", ")}`}${!colunaAgrupamento?.length - ? "" - : `, agrupado por ${colunaAgrupamento.join(", ")}`}.`; - }, - campos: { - tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, - colanuEixoX: { - rotulo: "Coluna do Eixo X", - tipo_campo: "coluna", - order: 2, - }, - colunaAgrupamento: { - rotulo: "Colunas de Agrupamento", - tipo_campo: "lista_colunas", - order: 3, - }, - descricao_pelo_usuario: { - rotulo: "Descrição (opcional)", - tipo_campo: "texto", - order: 4, - }, - filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 5 }, - }, - }, - z_contagem_em_pizza: { - visao: "z_contagem_em_pizza", - rotulo: "Contagem em Pizza", - tabela: ({ tabela }) => tabela, - descricao: ({ tabela, descricao_pelo_usuario, classes, filtros }) => { - if (String(descricao_pelo_usuario || "").trim()) - return String(descricao_pelo_usuario || "").trim(); - return `Contagem de ${tabela} por ${classes}${!filtros?.length - ? "" - : `, quando ${filtros - .map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`) - .join(", ")}`}.`; - }, - campos: { - tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, - classes: { rotulo: "Classes", tipo_campo: "coluna", order: 2 }, - descricao_pelo_usuario: { - rotulo: "Descrição (opcional)", - tipo_campo: "texto", - order: 3, - }, - filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 4 }, - }, - }, - z_tabela: { - visao: "z_tabela", - rotulo: "Tabela", - tabela: ({ tabela }) => tabela, - descricao: ({ tabela, descricao_pelo_usuario, filtros }) => { - if (String(descricao_pelo_usuario || "").trim()) - return String(descricao_pelo_usuario || "").trim(); - return `Consulta na ${tabela} ${!filtros?.length - ? "" - : `, quando ${filtros - .map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`) - .join(", ")}`}.`; - }, - campos: { - tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, - colunas: { rotulo: "Colunas", tipo_campo: "lista_colunas", order: 2 }, - descricao_pelo_usuario: { - rotulo: "Descrição (opcional)", - tipo_campo: "texto", - order: 3, - }, - coluna_ordem: { - rotulo: "Coluna de Ordem", - tipo_campo: "coluna", - order: 4, - }, - direcao_ordem: { - rotulo: "Direção de Ordem", - tipo_campo: "ordem", - order: 5, - }, - filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 6 }, - }, - }, -}; +__exportStar(require("./estrutura_de_campos"), exports); diff --git a/dist-require/pilao-de-dados/visoes/listaDeVisoes.d.ts b/dist-require/pilao-de-dados/visoes/listaDeVisoes.d.ts new file mode 100644 index 0000000..5419ff9 --- /dev/null +++ b/dist-require/pilao-de-dados/visoes/listaDeVisoes.d.ts @@ -0,0 +1,327 @@ +import { z } from "zod"; +export declare const z_contagem_em_barra_vertical: z.ZodObject<{ + tabela: z.ZodString; + colanuEixoX: z.ZodString; + colunaAgrupamento: z.ZodOptional>; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; +}, "strip", z.ZodTypeAny, { + tabela: string; + colanuEixoX: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; +}, { + tabela: string; + colanuEixoX: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; +}>; +export declare const z_soma_em_barra_vertical: z.ZodObject<{ + tabela: z.ZodString; + colanuEixoX: z.ZodString; + colunaSoma: z.ZodString; + unidadeSoma: z.ZodOptional; + colunaAgrupamento: z.ZodOptional>; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; +}, "strip", z.ZodTypeAny, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; +}, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; +}>; +export declare const z_contagem_em_pizza: z.ZodObject<{ + tabela: z.ZodString; + classes: z.ZodString; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; +}, "strip", z.ZodTypeAny, { + tabela: string; + classes: string; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; +}, { + tabela: string; + classes: string; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; +}>; +export declare const z_tabela: z.ZodObject<{ + tabela: z.ZodString; + colunas: z.ZodArray; + coluna_ordem: z.ZodOptional; + direcao_ordem: z.ZodOptional>; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; +}, "strip", z.ZodTypeAny, { + tabela: string; + colunas: string[]; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + coluna_ordem?: string | undefined; + direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; +}, { + tabela: string; + colunas: string[]; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + coluna_ordem?: string | undefined; + direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; +}>; +export declare const visoes_pilao: { + z_contagem_em_barra_vertical: z.ZodObject<{ + tabela: z.ZodString; + colanuEixoX: z.ZodString; + colunaAgrupamento: z.ZodOptional>; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; + }, "strip", z.ZodTypeAny, { + tabela: string; + colanuEixoX: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + }, { + tabela: string; + colanuEixoX: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + }>; + z_contagem_em_pizza: z.ZodObject<{ + tabela: z.ZodString; + classes: z.ZodString; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; + }, "strip", z.ZodTypeAny, { + tabela: string; + classes: string; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + }, { + tabela: string; + classes: string; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + }>; + z_tabela: z.ZodObject<{ + tabela: z.ZodString; + colunas: z.ZodArray; + coluna_ordem: z.ZodOptional; + direcao_ordem: z.ZodOptional>; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; + }, "strip", z.ZodTypeAny, { + tabela: string; + colunas: string[]; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + coluna_ordem?: string | undefined; + direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; + }, { + tabela: string; + colunas: string[]; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + coluna_ordem?: string | undefined; + direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined; + }>; + z_soma_em_barra_vertical: z.ZodObject<{ + tabela: z.ZodString; + colanuEixoX: z.ZodString; + colunaSoma: z.ZodString; + unidadeSoma: z.ZodOptional; + colunaAgrupamento: z.ZodOptional>; + filtros: z.ZodOptional", "<", ">=", "<=", "∩"]>; + }, "strip", z.ZodTypeAny, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }, { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }>, "many">>; + descricao_pelo_usuario: z.ZodOptional; + }, "strip", z.ZodTypeAny, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; + }, { + tabela: string; + colanuEixoX: string; + colunaSoma: string; + colunaAgrupamento?: string[] | undefined; + filtros?: { + coluna: string; + operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩"; + valor?: any; + }[] | undefined; + descricao_pelo_usuario?: string | undefined; + unidadeSoma?: string | undefined; + }>; +}; diff --git a/dist-require/pilao-de-dados/visoes/listaDeVisoes.js b/dist-require/pilao-de-dados/visoes/listaDeVisoes.js new file mode 100644 index 0000000..e194d93 --- /dev/null +++ b/dist-require/pilao-de-dados/visoes/listaDeVisoes.js @@ -0,0 +1,41 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.visoes_pilao = exports.z_tabela = exports.z_contagem_em_pizza = exports.z_soma_em_barra_vertical = exports.z_contagem_em_barra_vertical = void 0; +const zod_1 = require("zod"); +const _serie_consultar_1 = require("../_serie_consultar"); +exports.z_contagem_em_barra_vertical = zod_1.z.object({ + tabela: zod_1.z.string(), + colanuEixoX: zod_1.z.string(), + colunaAgrupamento: zod_1.z.string().array().optional(), + filtros: _serie_consultar_1.z_filtro.array().optional(), + descricao_pelo_usuario: zod_1.z.string().optional(), +}); +exports.z_soma_em_barra_vertical = zod_1.z.object({ + tabela: zod_1.z.string(), + colanuEixoX: zod_1.z.string(), + colunaSoma: zod_1.z.string(), + unidadeSoma: zod_1.z.string().optional(), + colunaAgrupamento: zod_1.z.string().array().optional(), + filtros: _serie_consultar_1.z_filtro.array().optional(), + descricao_pelo_usuario: zod_1.z.string().optional(), +}); +exports.z_contagem_em_pizza = zod_1.z.object({ + tabela: zod_1.z.string(), + classes: zod_1.z.string(), + filtros: _serie_consultar_1.z_filtro.array().optional(), + descricao_pelo_usuario: zod_1.z.string().optional(), +}); +exports.z_tabela = zod_1.z.object({ + tabela: zod_1.z.string(), + colunas: zod_1.z.string().array(), + coluna_ordem: zod_1.z.string().optional(), + direcao_ordem: zod_1.z.enum(["asc", "desc", "1", "-1"]).optional(), + filtros: _serie_consultar_1.z_filtro.array().optional(), + descricao_pelo_usuario: zod_1.z.string().optional(), +}); +exports.visoes_pilao = { + z_contagem_em_barra_vertical: exports.z_contagem_em_barra_vertical, + z_contagem_em_pizza: exports.z_contagem_em_pizza, + z_tabela: exports.z_tabela, + z_soma_em_barra_vertical: exports.z_soma_em_barra_vertical, +}; diff --git a/dist-require/pilao-de-dados/visoes/tipagem.d.ts b/dist-require/pilao-de-dados/visoes/tipagem.d.ts new file mode 100644 index 0000000..0f9c98d --- /dev/null +++ b/dist-require/pilao-de-dados/visoes/tipagem.d.ts @@ -0,0 +1,21 @@ +import { z } from "zod"; +import type { visoes_pilao } from "./listaDeVisoes"; +export declare const z_tipos_campos_reg_grafico: z.ZodEnum<["tabela", "coluna", "texto", "lista_colunas", "lista_filtros", "ordem"]>; +export type tipo_estrutura_visao_grafico = { + /** Nome da Visão */ + visao: T; + /** Rotulo */ + rotulo: string; + /** Retorna a tabela Referente ao Registro */ + tabela: (_: z.infer<(typeof visoes_pilao)[T]>) => string; + /** Descrição */ + descricao: (_: z.infer<(typeof visoes_pilao)[T]>) => string; + /** Lista os campos e suas configurações */ + campos: { + [c in keyof Required>]: { + rotulo: string; + tipo_campo: z.infer; + order: number; + }; + }; +}; diff --git a/dist-require/pilao-de-dados/visoes/tipagem.js b/dist-require/pilao-de-dados/visoes/tipagem.js new file mode 100644 index 0000000..0d7b4fd --- /dev/null +++ b/dist-require/pilao-de-dados/visoes/tipagem.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.z_tipos_campos_reg_grafico = void 0; +const zod_1 = require("zod"); +exports.z_tipos_campos_reg_grafico = zod_1.z.enum([ + "tabela", + "coluna", + "texto", + "lista_colunas", + "lista_filtros", + "ordem", +]); diff --git a/package.json b/package.json index 8db9a19..a913a90 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "p-drives", - "version": "0.150.0", + "version": "0.180.0", "description": "", "main": "src/index.ts", "exports": { @@ -11,7 +11,7 @@ } }, "scripts": { - "postinstall": "pnpm up p-*", + "at": "pnpm up p-*", "build-back": "rm -fr dist-require && tsc -p ./tsconfig-require.json", "build-front": "rm -fr dist-import && tsc -p ./tsconfig-import.json", "build": "pnpm run biome && npm --no-git-tag-version version minor && pnpm run build-back && pnpm run build-front", @@ -37,4 +37,4 @@ "cross-fetch": "^4.0.0", "zod": "3.23.8" } -} +} \ No newline at end of file diff --git a/src/pilao-de-dados/Pilao/index.ts b/src/pilao-de-dados/Pilao/index.ts new file mode 100644 index 0000000..56c05b6 --- /dev/null +++ b/src/pilao-de-dados/Pilao/index.ts @@ -0,0 +1,284 @@ +/** Drive completo do piilão de dados */ + +import crossFetch from "cross-fetch" +import { nomeVariavel } from "p-comuns" + +import { respostaComuns, type tipoResposta } from "p-respostas" +import type { z } from "zod" + +import type { zp_enviar_registros } from "../_enviar_registros" +import { PREFIXO_PILAO, type zp_deletar_registros } from "../variaveis" + +import type { visoes_pilao } from "../visoes/listaDeVisoes" +import type { tipo_pilao_api } from "./pilao-api.ts" +import type { tipoConstrutorPilao, tipoRetornoSerieconsulta } from "./tipagem" + +class ClassPilao { + #produto: string + #conta: string + #emDesenvolvimento: boolean + #ver_log: boolean + #registrosParaEnvio: Record< + string, + z.infer["registros"] + > = {} + #codigosParaDeletar: Record< + string, + z.infer["codigos"] + > = {} + + constructor({ + conta, + produto, + emDesenvolvimento = false, + ver_log = false, + }: tipoConstrutorPilao & { ver_log?: boolean; emDesenvolvimento?: boolean }) { + this.#produto = produto + this.#conta = conta + this.#emDesenvolvimento = emDesenvolvimento + this.#ver_log = ver_log + } + + #gerarUrl(acao: string, extraPath?: string): { rota: string; url: string } { + const rota = `${PREFIXO_PILAO}/api/${acao}/${this.#produto}/${this.#conta}${ + extraPath ? `/${extraPath}` : "" + }` + const url = `${this.baseUrlApi}${rota}` + return { rota, url } + } + + rotaEnviarRegistros() { + return this.#gerarUrl("enviar-registros") + } + + rotaDeletarRegistro() { + return this.#gerarUrl("deletar-registros") + } + + rotaConsultarSerie(tipoVisao: keyof typeof visoes_pilao | ":tipoVisao") { + return this.#gerarUrl("consultar-serie", tipoVisao) + } + + rotaIframeSerie(tipoVisao: keyof typeof visoes_pilao | ":tipoVisao") { + const rota = `${PREFIXO_PILAO}/consultar-serie/${this.#produto}/${this.#conta}/${tipoVisao}` + const url = `${this.baseUrlSite}${rota}` + return { rota, url } + } + + rotaFuncaoApi(funcao: keyof tipo_pilao_api | ":funcao") { + return this.#gerarUrl("API", funcao) + } + + async consultarApi( + funcao: T, + parametros: tipo_pilao_api[T]["pr"], + ): Promise> { + try { + const response = await crossFetch(this.rotaFuncaoApi(funcao).url, { + body: JSON.stringify(parametros), + method: "POST", + headers: { "Content-Type": "application/json" }, + }) + + const texto = await response.text() + + try { + const json = JSON.parse(texto) + return json + } catch { + return respostaComuns.erro("Consulta não retornou json válido", [texto]) + } + } catch (erro) { + console.error(erro) + return respostaComuns.erroInterno({ + erro, + local: nomeVariavel({ ClassPilao }), + }) + } + } + + get baseUrlApi() { + return this.#emDesenvolvimento + ? "http://localhost:5080" + : "https://carro-de-boi.idz.one" + } + + get baseUrlSite() { + return this.#emDesenvolvimento + ? "http://localhost:5081" + : "https://carro-de-boi.idz.one" + } + + validarCliente(_: any): tipoResposta { + if (!_?.conta) return respostaComuns.erro("Conta não informada") + if (!_?.produto) return respostaComuns.erro("Produto não informado") + return respostaComuns.valor(_) + } + + adicionarRegistroParaEnviar( + tabela: string, + ...registros: z.infer["registros"] + ) { + this.#registrosParaEnvio[tabela] = [ + ...(this.#registrosParaEnvio[tabela] || []), + ...registros, + ] + return this + } + + adicionarCodigoParaDeletar( + tabela: string, + ...codigos: z.infer["codigos"] + ) { + this.#codigosParaDeletar[tabela] = [ + ...(this.#codigosParaDeletar[tabela] || []), + ...codigos, + ] + return this + } + + private async processarRegistros( + url: string, + registros: any[], + tabela: string, + acao: string, + ): Promise> { + const tamanhoBlocos = 1000 + while (registros.length > 0) { + const bloco = registros + .splice(0, tamanhoBlocos) + .map((r) => + Object.fromEntries( + Object.entries(r).map(([k, v]) => [k, v === undefined ? null : v]), + ), + ) + const resp = await crossFetch(url, { + method: "POST", + body: JSON.stringify({ tabela, registros: bloco }), + headers: { "Content-Type": "application/json" }, + }) + .then(async (r) => { + const texto = await r.text() + try { + const json = JSON.parse(texto) + return json + } catch { + return respostaComuns.erro("Consulta não retornou json válido", [ + texto, + ]) + } + }) + .catch((e) => + respostaComuns.erro(`Erro ao ${acao} registros`, [e.message]), + ) + + if (resp.eErro) return resp + } + return respostaComuns.valor(true) + } + + async #salvarEnviarRegistros(): Promise> { + for (const tabela of Object.keys(this.#registrosParaEnvio)) { + const registros = this.#registrosParaEnvio[tabela] || [] + const url = this.rotaEnviarRegistros().url + if (this.#ver_log) + console.log( + `[PILÃO]: Enviando ${registros.length} registros na tabela "${tabela}" para "${url}".`, + ) + const resp = await this.processarRegistros( + url, + registros, + tabela, + "enviar", + ) + if (resp.eErro) return resp + this.#registrosParaEnvio[tabela] = [] + } + return respostaComuns.valor(true) + } + + async #salvarDeletarRegistros(): Promise> { + for (const tabela of Object.keys(this.#codigosParaDeletar)) { + const codigos = [...(this.#codigosParaDeletar[tabela] || [])] + const url = this.rotaDeletarRegistro().url + const resp = await this.processarRegistros( + url, + codigos, + tabela, + "deletar", + ) + if (resp.eErro) return resp + } + return respostaComuns.valor(true) + } + + async salvarRegistros(): Promise> { + const re = await this.#salvarEnviarRegistros() + if (re.eErro) return re + const rd = await this.#salvarDeletarRegistros() + if (rd.eErro) return rd + return respostaComuns.valor(true) + } + + serieConsultar( + tipoVisao: T, + parametros: z.infer<(typeof visoes_pilao)[T]>, + ) { + const dados = async (): Promise< + tipoResposta> + > => { + const url = this.rotaConsultarSerie(tipoVisao).url + const resp = await crossFetch(url.toString(), { + method: "POST", + body: JSON.stringify(parametros), + headers: { "Content-Type": "application/json" }, + }) + .then(async (r) => { + const texto = await r.text() + + try { + const json = JSON.parse(texto) + return json + } catch { + return respostaComuns.erro("Consulta não retornou json válido", [ + texto, + ]) + } + }) + .catch((e) => + respostaComuns.erro("Erro ao enviar registros", [e.message]), + ) + + if (this.#ver_log) + console.log( + `[PILÃO]: buscar dados de "${JSON.stringify(parametros)}" para "${url}".`, + ) + return resp + } + + const url = (): string => { + const vUrl = this.rotaIframeSerie(tipoVisao).url + const serie = encodeURIComponent(JSON.stringify(parametros, null, 2)) + if (this.#ver_log) + console.log( + `[PILÃO]: Serie Consultar url de "${JSON.stringify(serie)}" para "${vUrl}".`, + ) + return `${vUrl}?serie=${serie}` + } + + return { + dados, + url, + } + } + + urlLaboratorio() { + const rota = `${PREFIXO_PILAO}/laboratório/${this.#produto}/${this.#conta}` + const url = `${this.baseUrlSite}${rota}` + return { rota, url } + } +} + +export const Pilao = ( + _: tipoConstrutorPilao & { ver_log?: boolean; emDesenvolvimento?: boolean }, +) => new ClassPilao(_) diff --git a/src/pilao-de-dados/Pilao/pilao-api.ts b/src/pilao-de-dados/Pilao/pilao-api.ts new file mode 100755 index 0000000..cce0fd6 --- /dev/null +++ b/src/pilao-de-dados/Pilao/pilao-api.ts @@ -0,0 +1,32 @@ +import type { z } from "zod" +import type { zp_registrar_base_dados } from "../_enviar_registros" + +/** + * { + * 'rota':{ + * pr:{}// paramentros de entrada + * rs:{}// resposta + * } + * } + */ +export type tipo_pilao_api = { + /** retorna da data e hora do servido em formato iso */ + estado_servidor: { + pr: {} + rs: { + data_hora: string + } + } + tabelas: { + pr: {} + rs: z.infer[] + } + + unicos: { + pr: { + tabela: string + coluna: string + } + rs: any[] + } +} diff --git a/src/pilao-de-dados/Pilao/tipagem.ts b/src/pilao-de-dados/Pilao/tipagem.ts new file mode 100644 index 0000000..23c4794 --- /dev/null +++ b/src/pilao-de-dados/Pilao/tipagem.ts @@ -0,0 +1,10 @@ +import type { z } from "zod" +import type { visoes_pilao } from "../visoes/listaDeVisoes" + +export type tipoConstrutorPilao = { produto: string; conta: string } + +export type tipoRetornoSerieconsulta = { + registros: any[] + legenda: string + serie: z.infer<(typeof visoes_pilao)[T]> +} diff --git a/src/pilao-de-dados/_deletar_registros.ts b/src/pilao-de-dados/_deletar_registros.ts deleted file mode 100644 index 2502b0a..0000000 --- a/src/pilao-de-dados/_deletar_registros.ts +++ /dev/null @@ -1,47 +0,0 @@ -import node_fetch from "cross-fetch" -import type { tipoResposta } from "p-respostas" -import { respostaComuns } from "p-respostas" -import { z } from "zod" -import { urlPilao, type zp_produto_conta } from "./variaveis" -//enviar registros para base de dados -export const zp_deletar_registros = z.object({ - tabela: z.string(), - codigos: z.array(z.string()), -}) - -export const deletar_registros = - ({ conta, produto, emDesenvolvimento }: z.infer) => - async ({ - codigos: codigos_entrada, - tabela, - }: z.infer): Promise> => { - const codigos = [...codigos_entrada] - - const url = new URL( - `${ - urlPilao(emDesenvolvimento).api - }/${Object.keys({ deletar_registros })[0]}/${produto}/${conta}`, - ) - - const tamanhoBlocos = 1000 - - while (codigos.length > 0) { - const bloco = codigos.splice(0, tamanhoBlocos) - const resp = await node_fetch(url.toString(), { - method: "POST", - body: JSON.stringify({ tabela, codigos: bloco }), - headers: { "Content-Type": "application/json" }, - }) - .then((r) => r.json()) - .catch((e) => - respostaComuns.erro("Erro ao enviar registros", [e.message]), - ) - .then((r) => r as tipoResposta) - - if (resp.eErro) { - return resp - } - } - - return respostaComuns.valor(true) - } diff --git a/src/pilao-de-dados/_enviar_registros.ts b/src/pilao-de-dados/_enviar_registros.ts index a29c2f1..04bd503 100644 --- a/src/pilao-de-dados/_enviar_registros.ts +++ b/src/pilao-de-dados/_enviar_registros.ts @@ -1,19 +1,12 @@ -import node_fetch from "cross-fetch" -import type { tipoResposta } from "p-respostas" -import { respostaComuns } from "p-respostas" import { z } from "zod" -import { - urlPilao, - z_tipo_coluna_base_dados, - type zp_produto_conta, -} from "./variaveis" +import { z_tipos_dados_registro } from "./variaveis" export const zp_registrar_base_dados = z.object({ tabela: z.string(), colunas: z.array( z.object({ coluna: z.string(), - tipo: z_tipo_coluna_base_dados, + tipo: z_tipos_dados_registro, }), ), }) @@ -26,62 +19,8 @@ export const zp_enviar_registros = z.object({ z.string(), z.object({ valor: z.any(), - tipo: z_tipo_coluna_base_dados.optional().nullable(), + tipo: z_tipos_dados_registro.optional().nullable(), }), ), ), }) - -export const enviar_registros = - ({ - conta, - produto, - emDesenvolvimento, - ver_log, - }: z.infer) => - async ({ - registros: registros_entrada, - tabela, - }: z.infer): Promise> => { - const registros = [...registros_entrada] - - const url = new URL( - `${ - urlPilao(emDesenvolvimento).api - }/${Object.keys({ enviar_registros })[0]}/${produto}/${conta}`, - ) - - if (ver_log) - console.log( - `[PILÃO]: Enviando "${registros.length}" registros na tabela "${tabela}" para "${url}".`, - ) - - const tamanhoBlocos = 1000 - - while (registros.length > 0) { - const bloco = registros - .splice(0, tamanhoBlocos) - .map((r) => - Object.fromEntries( - Object.entries(r).map(([k, v]) => [k, v === undefined ? null : v]), - ), - ) - - const resp = await node_fetch(url.toString(), { - method: "POST", - body: JSON.stringify({ tabela, registros: bloco }), - headers: { "Content-Type": "application/json" }, - }) - .then((r) => r.json()) - .catch((e) => - respostaComuns.erro("Erro ao enviar registros", [e.message]), - ) - .then((r) => r as tipoResposta) - - if (resp.eErro) { - return resp - } - } - - return respostaComuns.valor(true) - } diff --git a/src/pilao-de-dados/_serie_consultar.ts b/src/pilao-de-dados/_serie_consultar.ts index acba175..befdb74 100644 --- a/src/pilao-de-dados/_serie_consultar.ts +++ b/src/pilao-de-dados/_serie_consultar.ts @@ -1,67 +1,8 @@ -import node_fetch from "cross-fetch" -import type { tipoResposta } from "p-respostas" -import { respostaComuns } from "p-respostas" import { z } from "zod" -import { operadores_pilao, urlPilao, type zp_produto_conta } from "./variaveis" -import type { visoes } from "./visoes" +import { operadores_pilao } from "./variaveis" export const z_filtro = z.object({ coluna: z.string(), valor: z.any(), operador: operadores_pilao, }) - -export const serie_consultar = - (cliente: z.infer) => - ( - tipoVisao: T, - parametros: z.infer<(typeof visoes)[T]>, - ) => { - const dados = async (): Promise< - tipoResposta<{ - registros: any[] - legenda: string - serie: z.infer<(typeof visoes)[T]> - }> - > => { - const url = new URL( - `${urlPilao(cliente.emDesenvolvimento).api}/${ - tipoVisao - }/${cliente.produto}/${cliente.conta}`, - ) - - const resp = await node_fetch(url.toString(), { - method: "POST", - body: JSON.stringify(parametros), - headers: { "Content-Type": "application/json" }, - }) - .then((r) => r.json()) - .catch((e) => - respostaComuns.erro("Erro ao enviar registros", [e.message]), - ) - .then((r) => r as tipoResposta) - - if (cliente.ver_log) - console.log( - `[PILÃO]: buscar dados de "${JSON.stringify(parametros)}" para "${url.href}".`, - ) - - return resp - } - - const url = (): string => { - const vUrl = new URL( - `${urlPilao(cliente.emDesenvolvimento).site}/${tipoVisao}/${cliente.produto}/${cliente.conta}`, - ) - const serie = encodeURIComponent(JSON.stringify(parametros, null, 2)) - if (cliente.ver_log) - console.log( - `[PILÃO]: Serie Consultar url de "${JSON.stringify(serie)}" para "${vUrl.href}".`, - ) - return `${vUrl.href}?serie=${serie}` - } - return { - dados, - url, - } - } diff --git a/src/pilao-de-dados/index.ts b/src/pilao-de-dados/index.ts index 96206a1..f27b4b0 100644 --- a/src/pilao-de-dados/index.ts +++ b/src/pilao-de-dados/index.ts @@ -1,7 +1,5 @@ -import { deletar_registros, zp_deletar_registros } from "./_deletar_registros" export { PREFIXO_PILAO, urlPilao } from "./variaveis" import { - enviar_registros, zp_enviar_registros, zp_registrar_base_dados, } from "./_enviar_registros" @@ -9,25 +7,32 @@ import { operadores_permitidos_por_tipo, operadores_pilao, validarZ, + z_tipos_dados_registro, + zp_deletar_registros, zp_produto_conta, } from "./variaveis" -import { serie_consultar, z_filtro } from "./_serie_consultar" -import { extruturas_de_campos, visoes } from "./visoes" +export * from "./Pilao" +export * from "./Pilao/pilao-api" +export * from "./Pilao/tipagem" + +import { z_filtro } from "./_serie_consultar" +import { extruturas_de_campos } from "./visoes" +import { visoes_pilao } from "./visoes/listaDeVisoes" export const pPilao = { + zp_deletar_registros, zp_registrar_base_dados, - enviar_registros, + z_tipos_dados_registro, zp_enviar_registros, - serie_consultar, + zp_produto_conta, validarZ, - deletar_registros, - zp_deletar_registros, + operadores_pilao, operadores_permitidos_por_tipo, z_filtro, - visoes, - ...visoes, + visoes_pilao, + ...visoes_pilao, extruturas_de_campos, } diff --git a/src/pilao-de-dados/variaveis.ts b/src/pilao-de-dados/variaveis.ts index 6fc3e73..7462537 100644 --- a/src/pilao-de-dados/variaveis.ts +++ b/src/pilao-de-dados/variaveis.ts @@ -1,6 +1,11 @@ import { respostaComuns } from "p-respostas" import { z } from "zod" +export const zp_deletar_registros = z.object({ + tabela: z.string(), + codigos: z.array(z.string()), +}) + export const zAmbiente = z.enum(["desenvolvimento", "producao"]) export const PREFIXO_PILAO = "/pilao-de-dados" @@ -27,7 +32,7 @@ export const zp_produto_conta = z.object({ ver_log: z.boolean().optional(), }) -export const z_tipo_coluna_base_dados = z.enum([ +export const z_tipos_dados_registro = z.enum([ "texto", "numero", "confirmacao", @@ -42,7 +47,7 @@ export const z_tipo_coluna_base_dados = z.enum([ export const operadores_pilao = z.enum(["=", "!=", ">", "<", ">=", "<=", "∩"]) export const operadores_permitidos_por_tipo: { - [key in z.infer]: z.infer< + [key in z.infer]: z.infer< typeof operadores_pilao >[] } = { diff --git a/src/pilao-de-dados/visoes/estrutura_de_campos/index.ts b/src/pilao-de-dados/visoes/estrutura_de_campos/index.ts new file mode 100644 index 0000000..9aabdf9 --- /dev/null +++ b/src/pilao-de-dados/visoes/estrutura_de_campos/index.ts @@ -0,0 +1,16 @@ +import type { visoes_pilao } from "../listaDeVisoes" +import type { tipo_estrutura_visao_grafico } from "../tipagem" +import { z_contagem_em_barra_vertical } from "./z_contagem_em_barra_vertical" +import { z_contagem_em_pizza } from "./z_contagem_em_pizza" +import { z_soma_em_barra_vertical } from "./z_soma_em_barra_vertical" +import { z_tabela } from "./z_tabela" + +/** Cria a estrutura de campos para insersão de dados */ +export const extruturas_de_campos: { + [T in keyof typeof visoes_pilao]: tipo_estrutura_visao_grafico +} = { + z_contagem_em_barra_vertical, + z_contagem_em_pizza, + z_soma_em_barra_vertical, + z_tabela, +} diff --git a/src/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.ts b/src/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.ts new file mode 100644 index 0000000..7081ba1 --- /dev/null +++ b/src/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_barra_vertical.ts @@ -0,0 +1,56 @@ +// usar describe para definir o tipo de campo para render do componente + +import type { tipo_estrutura_visao_grafico } from "../tipagem" + +/** Cria a estrutura de campos para insersão de dados */ +export const z_contagem_em_barra_vertical: tipo_estrutura_visao_grafico<"z_contagem_em_barra_vertical"> = + { + visao: "z_contagem_em_barra_vertical", + rotulo: "Contagem em Barra Vertical", + tabela: ({ tabela }) => tabela, + descricao: ({ + tabela, + descricao_pelo_usuario, + colanuEixoX, + filtros, + colunaAgrupamento, + }) => { + if (String(descricao_pelo_usuario || "").trim()) + return String(descricao_pelo_usuario || "").trim() + + return `Contagem de ${tabela} por ${colanuEixoX}${ + !filtros?.length + ? "" + : `, quando ${filtros + .map( + ({ coluna, operador, valor }) => + `${coluna} ${operador} ${valor}`, + ) + .join(", ")}` + }${ + !colunaAgrupamento?.length + ? "" + : `, agrupado por ${colunaAgrupamento.join(", ")}` + }.` + }, + campos: { + tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, + + colanuEixoX: { + rotulo: "Coluna do Eixo X", + tipo_campo: "coluna", + order: 2, + }, + colunaAgrupamento: { + rotulo: "Colunas de Agrupamento", + tipo_campo: "lista_colunas", + order: 3, + }, + descricao_pelo_usuario: { + rotulo: "Descrição (opcional)", + tipo_campo: "texto", + order: 4, + }, + filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 5 }, + }, + } diff --git a/src/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.ts b/src/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.ts new file mode 100644 index 0000000..c8dce3f --- /dev/null +++ b/src/pilao-de-dados/visoes/estrutura_de_campos/z_contagem_em_pizza.ts @@ -0,0 +1,36 @@ +// usar describe para definir o tipo de campo para render do componente + +import type { tipo_estrutura_visao_grafico } from "../tipagem" + +/** Cria a estrutura de campos para insersão de dados */ +export const z_contagem_em_pizza: tipo_estrutura_visao_grafico<"z_contagem_em_pizza"> = + { + visao: "z_contagem_em_pizza", + rotulo: "Contagem em Pizza", + tabela: ({ tabela }) => tabela, + descricao: ({ tabela, descricao_pelo_usuario, classes, filtros }) => { + if (String(descricao_pelo_usuario || "").trim()) + return String(descricao_pelo_usuario || "").trim() + + return `Contagem de ${tabela} por ${classes}${ + !filtros?.length + ? "" + : `, quando ${filtros + .map( + ({ coluna, operador, valor }) => + `${coluna} ${operador} ${valor}`, + ) + .join(", ")}` + }.` + }, + campos: { + tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, + classes: { rotulo: "Classes", tipo_campo: "coluna", order: 2 }, + descricao_pelo_usuario: { + rotulo: "Descrição (opcional)", + tipo_campo: "texto", + order: 3, + }, + filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 4 }, + }, + } diff --git a/src/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.ts b/src/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.ts new file mode 100644 index 0000000..72fd236 --- /dev/null +++ b/src/pilao-de-dados/visoes/estrutura_de_campos/z_soma_em_barra_vertical.ts @@ -0,0 +1,68 @@ +// usar describe para definir o tipo de campo para render do componente + +import type { tipo_estrutura_visao_grafico } from "../tipagem" + +/** Cria a estrutura de campos para insersão de dados */ +export const z_soma_em_barra_vertical: tipo_estrutura_visao_grafico<"z_soma_em_barra_vertical"> = + { + visao: "z_soma_em_barra_vertical", + rotulo: "Soma em Barra Vertical", + tabela: ({ tabela }) => tabela, + descricao: ({ + descricao_pelo_usuario, + colanuEixoX, + filtros, + colunaAgrupamento, + colunaSoma, + }) => { + if (String(descricao_pelo_usuario || "").trim()) + return String(descricao_pelo_usuario || "").trim() + + return `Soma de ${colunaSoma} por ${colanuEixoX}${ + !filtros?.length + ? "" + : `, quando ${filtros + .map( + ({ coluna, operador, valor }) => + `${coluna} ${operador} ${valor}`, + ) + .join(", ")}` + }${ + !colunaAgrupamento?.length + ? "" + : `, agrupado por ${colunaAgrupamento.join(", ")}` + }.` + }, + campos: { + tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, + + colunaSoma: { + rotulo: "Coluna de Somatória", + tipo_campo: "coluna", + order: 2, + }, + + unidadeSoma: { + rotulo: "Unidade de Somatória", + tipo_campo: "texto", + order: 3, + }, + + colanuEixoX: { + rotulo: "Coluna do Eixo X", + tipo_campo: "coluna", + order: 4, + }, + colunaAgrupamento: { + rotulo: "Colunas de Agrupamento", + tipo_campo: "lista_colunas", + order: 5, + }, + descricao_pelo_usuario: { + rotulo: "Descrição (opcional)", + tipo_campo: "texto", + order: 6, + }, + filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 5 }, + }, + } diff --git a/src/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.ts b/src/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.ts new file mode 100644 index 0000000..772b067 --- /dev/null +++ b/src/pilao-de-dados/visoes/estrutura_de_campos/z_tabela.ts @@ -0,0 +1,45 @@ +// usar describe para definir o tipo de campo para render do componente + +import type { tipo_estrutura_visao_grafico } from "../tipagem" + +/** Cria a estrutura de campos para insersão de dados */ +export const z_tabela: tipo_estrutura_visao_grafico<"z_tabela"> = { + visao: "z_tabela", + rotulo: "Tabela", + tabela: ({ tabela }) => tabela, + descricao: ({ tabela, descricao_pelo_usuario, filtros }) => { + if (String(descricao_pelo_usuario || "").trim()) + return String(descricao_pelo_usuario || "").trim() + + return `Consulta na ${tabela} ${ + !filtros?.length + ? "" + : `, quando ${filtros + .map( + ({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`, + ) + .join(", ")}` + }.` + }, + campos: { + tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, + colunas: { rotulo: "Colunas", tipo_campo: "lista_colunas", order: 2 }, + descricao_pelo_usuario: { + rotulo: "Descrição (opcional)", + tipo_campo: "texto", + order: 3, + }, + coluna_ordem: { + rotulo: "Coluna de Ordem", + tipo_campo: "coluna", + order: 4, + }, + direcao_ordem: { + rotulo: "Direção de Ordem", + tipo_campo: "ordem", + order: 5, + }, + + filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 6 }, + }, +} diff --git a/src/pilao-de-dados/visoes/index.ts b/src/pilao-de-dados/visoes/index.ts index ec59528..41627b3 100644 --- a/src/pilao-de-dados/visoes/index.ts +++ b/src/pilao-de-dados/visoes/index.ts @@ -1,187 +1 @@ -import { z } from "zod" -import { z_filtro } from "../_serie_consultar" -// usar describe para definir o tipo de campo para render do componente - -const z_tipos_campos = z.enum([ - "tabela", - "coluna", - "texto", - "lista_colunas", - "lista_filtros", - "ordem", -]) - -export const z_contagem_em_barra_vertical = z.object({ - tabela: z.string(), - colanuEixoX: z.string(), - colunaAgrupamento: z.string().array().optional(), - filtros: z_filtro.array().optional(), - descricao_pelo_usuario: z.string().optional(), -}) - -export const z_contagem_em_pizza = z.object({ - tabela: z.string(), - classes: z.string(), - filtros: z_filtro.array().optional(), - descricao_pelo_usuario: z.string().optional(), -}) - -export const z_tabela = z.object({ - tabela: z.string(), - colunas: z.string().array(), - coluna_ordem: z.string().optional(), - direcao_ordem: z.enum(["asc", "desc", "1", "-1"]).optional(), - filtros: z_filtro.array().optional(), - descricao_pelo_usuario: z.string().optional(), -}) - -export const visoes = { - z_contagem_em_barra_vertical, - z_contagem_em_pizza, - z_tabela, -} - -/** Cria a estrutura de campos para insersão de dados */ -export const extruturas_de_campos: { - [z in keyof typeof visoes]: { - /** Nome da Visão */ - visao: z - /** Rotulo */ - rotulo: string - /** Retorna a tabela Referente ao Registro */ - tabela: (_: z.infer<(typeof visoes)[z]>) => string - /** Descrição */ - descricao: (_: z.infer<(typeof visoes)[z]>) => string - /** Lista os campos e suas configurações */ - campos: { - [c in keyof Required>]: { - rotulo: string - tipo_campo: z.infer - order: number - } - } - } -} = { - z_contagem_em_barra_vertical: { - visao: "z_contagem_em_barra_vertical", - rotulo: "Contagem em Barra Vertical", - tabela: ({ tabela }) => tabela, - descricao: ({ - tabela, - descricao_pelo_usuario, - colanuEixoX, - filtros, - colunaAgrupamento, - }) => { - if (String(descricao_pelo_usuario || "").trim()) - return String(descricao_pelo_usuario || "").trim() - - return `Contagem de ${tabela} por ${colanuEixoX}${ - !filtros?.length - ? "" - : `, quando ${filtros - .map( - ({ coluna, operador, valor }) => - `${coluna} ${operador} ${valor}`, - ) - .join(", ")}` - }${ - !colunaAgrupamento?.length - ? "" - : `, agrupado por ${colunaAgrupamento.join(", ")}` - }.` - }, - campos: { - tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, - - colanuEixoX: { - rotulo: "Coluna do Eixo X", - tipo_campo: "coluna", - order: 2, - }, - colunaAgrupamento: { - rotulo: "Colunas de Agrupamento", - tipo_campo: "lista_colunas", - order: 3, - }, - descricao_pelo_usuario: { - rotulo: "Descrição (opcional)", - tipo_campo: "texto", - order: 4, - }, - filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 5 }, - }, - }, - z_contagem_em_pizza: { - visao: "z_contagem_em_pizza", - rotulo: "Contagem em Pizza", - tabela: ({ tabela }) => tabela, - descricao: ({ tabela, descricao_pelo_usuario, classes, filtros }) => { - if (String(descricao_pelo_usuario || "").trim()) - return String(descricao_pelo_usuario || "").trim() - - return `Contagem de ${tabela} por ${classes}${ - !filtros?.length - ? "" - : `, quando ${filtros - .map( - ({ coluna, operador, valor }) => - `${coluna} ${operador} ${valor}`, - ) - .join(", ")}` - }.` - }, - campos: { - tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, - classes: { rotulo: "Classes", tipo_campo: "coluna", order: 2 }, - descricao_pelo_usuario: { - rotulo: "Descrição (opcional)", - tipo_campo: "texto", - order: 3, - }, - filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 4 }, - }, - }, - - z_tabela: { - visao: "z_tabela", - rotulo: "Tabela", - tabela: ({ tabela }) => tabela, - descricao: ({ tabela, descricao_pelo_usuario, filtros }) => { - if (String(descricao_pelo_usuario || "").trim()) - return String(descricao_pelo_usuario || "").trim() - - return `Consulta na ${tabela} ${ - !filtros?.length - ? "" - : `, quando ${filtros - .map( - ({ coluna, operador, valor }) => - `${coluna} ${operador} ${valor}`, - ) - .join(", ")}` - }.` - }, - campos: { - tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 }, - colunas: { rotulo: "Colunas", tipo_campo: "lista_colunas", order: 2 }, - descricao_pelo_usuario: { - rotulo: "Descrição (opcional)", - tipo_campo: "texto", - order: 3, - }, - coluna_ordem: { - rotulo: "Coluna de Ordem", - tipo_campo: "coluna", - order: 4, - }, - direcao_ordem: { - rotulo: "Direção de Ordem", - tipo_campo: "ordem", - order: 5, - }, - - filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 6 }, - }, - }, -} +export * from "./estrutura_de_campos" diff --git a/src/pilao-de-dados/visoes/listaDeVisoes.ts b/src/pilao-de-dados/visoes/listaDeVisoes.ts new file mode 100644 index 0000000..10e525f --- /dev/null +++ b/src/pilao-de-dados/visoes/listaDeVisoes.ts @@ -0,0 +1,43 @@ +import { z } from "zod" +import { z_filtro } from "../_serie_consultar" + +export const z_contagem_em_barra_vertical = z.object({ + tabela: z.string(), + colanuEixoX: z.string(), + colunaAgrupamento: z.string().array().optional(), + filtros: z_filtro.array().optional(), + descricao_pelo_usuario: z.string().optional(), +}) + +export const z_soma_em_barra_vertical = z.object({ + tabela: z.string(), + colanuEixoX: z.string(), + colunaSoma: z.string(), + unidadeSoma: z.string().optional(), + colunaAgrupamento: z.string().array().optional(), + filtros: z_filtro.array().optional(), + descricao_pelo_usuario: z.string().optional(), +}) + +export const z_contagem_em_pizza = z.object({ + tabela: z.string(), + classes: z.string(), + filtros: z_filtro.array().optional(), + descricao_pelo_usuario: z.string().optional(), +}) + +export const z_tabela = z.object({ + tabela: z.string(), + colunas: z.string().array(), + coluna_ordem: z.string().optional(), + direcao_ordem: z.enum(["asc", "desc", "1", "-1"]).optional(), + filtros: z_filtro.array().optional(), + descricao_pelo_usuario: z.string().optional(), +}) + +export const visoes_pilao = { + z_contagem_em_barra_vertical, + z_contagem_em_pizza, + z_tabela, + z_soma_em_barra_vertical, +} diff --git a/src/pilao-de-dados/visoes/tipagem.ts b/src/pilao-de-dados/visoes/tipagem.ts new file mode 100644 index 0000000..dbda4f2 --- /dev/null +++ b/src/pilao-de-dados/visoes/tipagem.ts @@ -0,0 +1,31 @@ +import { z } from "zod" +import type { visoes_pilao } from "./listaDeVisoes" + +export const z_tipos_campos_reg_grafico = z.enum([ + "tabela", + "coluna", + "texto", + "lista_colunas", + "lista_filtros", + "ordem", +]) + +export type tipo_estrutura_visao_grafico = + { + /** Nome da Visão */ + visao: T + /** Rotulo */ + rotulo: string + /** Retorna a tabela Referente ao Registro */ + tabela: (_: z.infer<(typeof visoes_pilao)[T]>) => string + /** Descrição */ + descricao: (_: z.infer<(typeof visoes_pilao)[T]>) => string + /** Lista os campos e suas configurações */ + campos: { + [c in keyof Required>]: { + rotulo: string + tipo_campo: z.infer + order: number + } + } + }