drivers/dist-import/pilao-de-dados/Pilao/index.js
2024-10-02 13:19:19 -03:00

182 lines
9.6 KiB
JavaScript

/** 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}/${__classPrivateFieldGet(this, _ClassPilao_produto, "f")}/${__classPrivateFieldGet(this, _ClassPilao_conta, "f")}/consultar-serie/${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" },
});
return await response.json();
}
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((r) => r.json())
.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((r) => r.json())
.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}/${__classPrivateFieldGet(this, _ClassPilao_produto, "f")}/${__classPrivateFieldGet(this, _ClassPilao_conta, "f")}/laboratório`;
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/${__classPrivateFieldGet(this, _ClassPilao_produto, "f")}/${__classPrivateFieldGet(this, _ClassPilao_conta, "f")}/${acao}${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(_);