diff --git a/dist-import/pilao-de-dados/_enviar_registros.d.ts b/dist-import/pilao-de-dados/_enviar_registros.d.ts index 88a9f95..b293360 100644 --- a/dist-import/pilao-de-dados/_enviar_registros.d.ts +++ b/dist-import/pilao-de-dados/_enviar_registros.d.ts @@ -51,4 +51,17 @@ export declare const zp_enviar_registros: z.ZodObject<{ tipo?: "texto" | "numero" | "confirmacao" | "lista_texto" | "lista_numero" | "lista_mes" | "lista_data" | "mes" | "data" | null | undefined; }>[]; }>; -export declare const enviar_registros: ({ conta, produto, emDesenvolvimento, ver_log, }: z.infer) => ({ registros: registros_entrada, tabela, }: z.infer) => Promise>; +declare class ClassPilaoEnviar { + __conta: string | undefined; + __produto: string | undefined; + __emDesenvolvimento: boolean | undefined; + __ver_log: boolean | undefined; + __tabela: string | undefined; + __registros: z.infer["registros"]; + constructor({ conta, produto, emDesenvolvimento, ver_log, }: z.infer); + tabela(tabela: string): this; + adicionarRegistro(...registro: z.infer["registros"]): this; + enviar(): Promise>; +} +export declare const PilaoEnviar: (_: z.infer) => ClassPilaoEnviar; +export {}; diff --git a/dist-import/pilao-de-dados/_enviar_registros.js b/dist-import/pilao-de-dados/_enviar_registros.js index 2e567eb..8ee218c 100644 --- a/dist-import/pilao-de-dados/_enviar_registros.js +++ b/dist-import/pilao-de-dados/_enviar_registros.js @@ -17,27 +17,45 @@ export const zp_enviar_registros = z.object({ tipo: z_tipo_coluna_base_dados.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; - } +class ClassPilaoEnviar { + constructor({ conta, produto, emDesenvolvimento, ver_log, }) { + this.__registros = []; + this.__conta = conta; + this.__produto = produto; + this.__emDesenvolvimento = emDesenvolvimento; + this.__ver_log = ver_log; } - return respostaComuns.valor(true); -}; + tabela(tabela) { + this.__tabela = tabela; + return this; + } + adicionarRegistro(...registro) { + this.__registros.push(...registro); + return this; + } + async enviar() { + const registros = this.__registros; + const url = new URL(`${urlPilao(this.__emDesenvolvimento).api}/enviar_registros/${this.__produto}/${this.__conta}`); + if (this.__ver_log) + console.log(`[PILÃO]: Enviando "${registros.length}" registros na tabela "${this.__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: this.__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); + } +} +export const PilaoEnviar = (_) => new ClassPilaoEnviar(_); diff --git a/dist-import/pilao-de-dados/index.d.ts b/dist-import/pilao-de-dados/index.d.ts index e4ab599..dfd0f7f 100644 --- a/dist-import/pilao-de-dados/index.d.ts +++ b/dist-import/pilao-de-dados/index.d.ts @@ -307,7 +307,17 @@ export declare const pPilao: { tipo: "texto" | "numero" | "confirmacao" | "lista_texto" | "lista_numero" | "lista_mes" | "lista_data" | "mes" | "data"; }[]; }>; - enviar_registros: ({ conta, produto, emDesenvolvimento, ver_log, }: import("zod").TypeOf) => ({ registros: registros_entrada, tabela, }: import("zod").TypeOf) => Promise>; + PilaoEnviar: (_: import("zod").TypeOf) => { + __conta: string | undefined; + __produto: string | undefined; + __emDesenvolvimento: boolean | undefined; + __ver_log: boolean | undefined; + __tabela: string | undefined; + __registros: import("zod").TypeOf["registros"]; + tabela(tabela: string): any; + adicionarRegistro(...registro: import("zod").TypeOf["registros"]): any; + enviar(): Promise>; + }; zp_enviar_registros: import("zod").ZodObject<{ tabela: import("zod").ZodString; registros: import("zod").ZodArray[]; }>; -export declare const enviar_registros: ({ conta, produto, emDesenvolvimento, ver_log, }: z.infer) => ({ registros: registros_entrada, tabela, }: z.infer) => Promise>; +declare class ClassPilaoEnviar { + __conta: string | undefined; + __produto: string | undefined; + __emDesenvolvimento: boolean | undefined; + __ver_log: boolean | undefined; + __tabela: string | undefined; + __registros: z.infer["registros"]; + constructor({ conta, produto, emDesenvolvimento, ver_log, }: z.infer); + tabela(tabela: string): this; + adicionarRegistro(...registro: z.infer["registros"]): this; + enviar(): Promise>; +} +export declare const PilaoEnviar: (_: z.infer) => ClassPilaoEnviar; +export {}; diff --git a/dist-require/pilao-de-dados/_enviar_registros.js b/dist-require/pilao-de-dados/_enviar_registros.js index 037344c..c72ad4f 100644 --- a/dist-require/pilao-de-dados/_enviar_registros.js +++ b/dist-require/pilao-de-dados/_enviar_registros.js @@ -3,7 +3,7 @@ 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; +exports.PilaoEnviar = 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"); const zod_1 = require("zod"); @@ -23,28 +23,46 @@ exports.zp_enviar_registros = zod_1.z.object({ tipo: variaveis_1.z_tipo_coluna_base_dados.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; - } +class ClassPilaoEnviar { + constructor({ conta, produto, emDesenvolvimento, ver_log, }) { + this.__registros = []; + this.__conta = conta; + this.__produto = produto; + this.__emDesenvolvimento = emDesenvolvimento; + this.__ver_log = ver_log; } - return p_respostas_1.respostaComuns.valor(true); -}; -exports.enviar_registros = enviar_registros; + tabela(tabela) { + this.__tabela = tabela; + return this; + } + adicionarRegistro(...registro) { + this.__registros.push(...registro); + return this; + } + async enviar() { + const registros = this.__registros; + const url = new URL(`${(0, variaveis_1.urlPilao)(this.__emDesenvolvimento).api}/enviar_registros/${this.__produto}/${this.__conta}`); + if (this.__ver_log) + console.log(`[PILÃO]: Enviando "${registros.length}" registros na tabela "${this.__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: this.__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); + } +} +const PilaoEnviar = (_) => new ClassPilaoEnviar(_); +exports.PilaoEnviar = PilaoEnviar; diff --git a/dist-require/pilao-de-dados/index.d.ts b/dist-require/pilao-de-dados/index.d.ts index e4ab599..dfd0f7f 100644 --- a/dist-require/pilao-de-dados/index.d.ts +++ b/dist-require/pilao-de-dados/index.d.ts @@ -307,7 +307,17 @@ export declare const pPilao: { tipo: "texto" | "numero" | "confirmacao" | "lista_texto" | "lista_numero" | "lista_mes" | "lista_data" | "mes" | "data"; }[]; }>; - enviar_registros: ({ conta, produto, emDesenvolvimento, ver_log, }: import("zod").TypeOf) => ({ registros: registros_entrada, tabela, }: import("zod").TypeOf) => Promise>; + PilaoEnviar: (_: import("zod").TypeOf) => { + __conta: string | undefined; + __produto: string | undefined; + __emDesenvolvimento: boolean | undefined; + __ver_log: boolean | undefined; + __tabela: string | undefined; + __registros: import("zod").TypeOf["registros"]; + tabela(tabela: string): any; + adicionarRegistro(...registro: import("zod").TypeOf["registros"]): any; + enviar(): Promise>; + }; zp_enviar_registros: import("zod").ZodObject<{ tabela: import("zod").ZodString; registros: import("zod").ZodArray["registros"] = [] + + constructor({ conta, produto, emDesenvolvimento, ver_log, - }: z.infer) => - async ({ - registros: registros_entrada, - tabela, - }: z.infer): Promise> => { - const registros = [...registros_entrada] + }: z.infer) { + this.__conta = conta + this.__produto = produto + this.__emDesenvolvimento = emDesenvolvimento + this.__ver_log = ver_log + } + + tabela(tabela: string) { + this.__tabela = tabela + return this + } + + adicionarRegistro( + ...registro: z.infer["registros"] + ) { + this.__registros.push(...registro) + return this + } + + async enviar(): Promise> { + const registros = this.__registros const url = new URL( `${ - urlPilao(emDesenvolvimento).api - }/${Object.keys({ enviar_registros })[0]}/${produto}/${conta}`, + urlPilao(this.__emDesenvolvimento).api + }/enviar_registros/${this.__produto}/${this.__conta}`, ) - if (ver_log) + if (this.__ver_log) console.log( - `[PILÃO]: Enviando "${registros.length}" registros na tabela "${tabela}" para "${url}".`, + `[PILÃO]: Enviando "${registros.length}" registros na tabela "${this.__tabela}" para "${url}".`, ) const tamanhoBlocos = 1000 @@ -69,7 +91,7 @@ export const enviar_registros = const resp = await node_fetch(url.toString(), { method: "POST", - body: JSON.stringify({ tabela, registros: bloco }), + body: JSON.stringify({ tabela: this.__tabela, registros: bloco }), headers: { "Content-Type": "application/json" }, }) .then((r) => r.json()) @@ -85,3 +107,7 @@ export const enviar_registros = return respostaComuns.valor(true) } +} + +export const PilaoEnviar = (_: z.infer) => + new ClassPilaoEnviar(_) diff --git a/src/pilao-de-dados/index.ts b/src/pilao-de-dados/index.ts index 96206a1..31a3638 100644 --- a/src/pilao-de-dados/index.ts +++ b/src/pilao-de-dados/index.ts @@ -1,7 +1,7 @@ import { deletar_registros, zp_deletar_registros } from "./_deletar_registros" export { PREFIXO_PILAO, urlPilao } from "./variaveis" import { - enviar_registros, + PilaoEnviar, zp_enviar_registros, zp_registrar_base_dados, } from "./_enviar_registros" @@ -17,7 +17,7 @@ import { extruturas_de_campos, visoes } from "./visoes" export const pPilao = { zp_registrar_base_dados, - enviar_registros, + PilaoEnviar, zp_enviar_registros, serie_consultar, zp_produto_conta,