UNPKG

giganet_conecta

Version:

Aplicação com o fim de facilitar conexões com APi's e Banco de Dados (MySql, Mongo e Elasticsearch).

287 lines (258 loc) 8.47 kB
const ConnectMysql = require("../Connect Mysql"); // Modelos const CTOs = require("./Models/ctos"); const Clientes = require("./Models/clientes"); const Cidade = require("./Models/cidade"); const Contratos = require("./Models/contratos"); const DF_Elemento = require("./Models/df_elemento"); const Fibra = require("./Models/fibra"); const Empresa_Setor = require("./Models/empresa_setor"); const Funcionarios = require("./Models/funcionarios"); const Fornecedor = require("./Models/fornecedor"); const Fibra_Historico = require("./Models/historico"); const Logins = require("./Models/logins"); const OS = require("./Models/ordens_de_servico"); const OS_Arquivos = require("./Models/ordens_de_servico_arquivos"); const Transmissores = require("./Models/transmissores"); const OS_Mensagem = require("./Models/ordens_de_servico_mensagem"); const MovimentoProdutos = require("./Models/movimento_produtos"); const Produtos = require("./Models/produtos"); const Usuarios = require("./Models/usuarios"); const Usuarios_Grupo = require("./Models/usuarios_grupo"); const Planejamento_Analitico = require("./Models/planejamento_analitico"); const Fn_Pagar = require("./Models/fn_apagar"); const Fn_Areceber = require("./Models/fn_areceber"); const Fn_Movimentacao_Financeira = require("./Models/fn_movim_finan"); const Fn_despesa_tipo = require("./Models/fn_despesa_tipo"); const Servicos_Adicionais = require("./Models/servicos_adicionais"); const Vd_Contrato = require("./Models/vd_contrato"); const Veiculos = require("./Models/veiculos"); const Veiculos_Condutor = require("./Models/veiculos_condutor"); const VeiculosDespesas = require("./Models/veiculos_despesas"); const Vendedor = require("./Models/vendedor"); module.exports = async () => { const database = "ixcprovedor"; const name_database = "IXC Soft"; try { const { DB_MYSQL_IXC_HOST, DB_MYSQL_IXC_PORT, DB_MYSQL_IXC_USER, DB_MYSQL_IXC_PASSWORD, } = process.env; const sequelize = await ConnectMysql({ host: DB_MYSQL_IXC_HOST, port: DB_MYSQL_IXC_PORT, user: DB_MYSQL_IXC_USER, password: DB_MYSQL_IXC_PASSWORD, database, name_database, }); let [ clientes, cidade, contratos, fibras, logins, planejamento_analitico, fn_apagar, fn_areceber, fn_movimentacao_financeira, fn_despesa_tipo, os, os_arquivos, os_mensagem, movimento_produtos, produtos, transmissores, empresa_setor, funcionarios, fornecedor, ctos, fibra_historico, df_elemento, usuarios, usuarios_grupo, servicos_adicionais, vd_contrato, veiculos, veiculos_condutor, veiculos_despesas, vendedor, ] = await Promise.all([ Clientes(sequelize), Cidade(sequelize), Contratos(sequelize), Fibra(sequelize), Logins(sequelize), Planejamento_Analitico(sequelize), Fn_Pagar(sequelize), Fn_Areceber(sequelize), Fn_Movimentacao_Financeira(sequelize), Fn_despesa_tipo(sequelize), OS(sequelize), OS_Arquivos(sequelize), OS_Mensagem(sequelize), MovimentoProdutos(sequelize), Produtos(sequelize), Transmissores(sequelize), Empresa_Setor(sequelize), Funcionarios(sequelize), Fornecedor(sequelize), CTOs(sequelize), Fibra_Historico(sequelize), DF_Elemento(sequelize), Usuarios(sequelize), Usuarios_Grupo(sequelize), Servicos_Adicionais(sequelize), Vd_Contrato(sequelize), Veiculos(sequelize), Veiculos_Condutor(sequelize), VeiculosDespesas(sequelize), Vendedor(sequelize), ]); clientes.hasMany(contratos, { foreignKey: "id_cliente" }); contratos.belongsTo(clientes, { foreignKey: "id_cliente", targetKey: "id", }); clientes.belongsTo(cidade, { foreignKey: "cidade", targetKey: "id", }); cidade.hasMany(clientes, { foreignKey: "cidade", sourceKey: "id", }); clientes.hasMany(logins, { foreignKey: "id_cliente" }); logins.belongsTo(clientes, { foreignKey: "id_cliente", targetKey: "id" }); clientes.hasMany(fn_areceber, { foreignKey: "id_cliente" }); fn_areceber.belongsTo(clientes, { foreignKey: "id", targetKey: "id" }); // logins para fibras logins.hasMany(fibras, { foreignKey: "id_login" }); fibras.belongsTo(logins, { foreignKey: "id_login", targetKey: "id" }); contratos.hasMany(logins, { foreignKey: "id_contrato" }); // Contrato para financeiro a receber contratos.hasMany(fn_areceber, { foreignKey: "id_contrato", sourceKey: "id", }); fn_areceber.belongsTo(contratos, { foreignKey: "id", sourceKey: "id_contrato", }); contratos.hasMany(vd_contrato, { foreignKey: "id", sourceKey: "id_vd_contrato", }); vd_contrato.belongsTo(contratos, { foreignKey: "id_vd_contrato", targetKey: "id", }); // Contrato para vendedor contratos.hasMany(vendedor, { foreignKey: "id", sourceKey: "id_vendedor", }); vendedor.hasMany(contratos, { foreignKey: "id_vendedor", targetKey: "id", }); // Contrato para movimentação de produtos contratos.hasMany(movimento_produtos, { foreignKey: "id_contrato", sourceKey: "id", }); // Os para movimentação de produtos os.hasMany(movimento_produtos, { foreignKey: "id_oss_chamado" }); os.belongsTo(clientes, { foreignKey: "id_cliente", targetKey: "id" }); clientes.hasMany(os, { foreignKey: "id_cliente" }); os.hasMany(os_mensagem, { foreignKey: "id_chamado" }); os_mensagem.belongsTo(os, { foreignKey: "id_chamado" }); clientes.hasMany(funcionarios, { foreignKey: "id", sourceKey: "responsavel", }); funcionarios.belongsTo(clientes, { foreignKey: "responsavel", targetKey: "id", }); // Vendedor para funcionário vendedor.hasMany(funcionarios, { foreignKey: "cpf_cnpj", sourceKey: "cnpj_cpf", }); funcionarios.belongsTo(vendedor, { foreignKey: "cpf_cnpj", targetKey: "cnpj_cpf", }); // Vendedor para usuarios vendedor.hasMany(usuarios, { foreignKey: "vendedor_padrao", sourceKey: "id", }); usuarios.belongsTo(vendedor, { foreignKey: "vendedor_padrao", targetKey: "id", }); usuarios.belongsTo(usuarios_grupo, { foreignKey: "id_grupo" }); usuarios_grupo.hasMany(usuarios, { foreignKey: "id_grupo" }); usuarios.belongsTo(funcionarios, { foreignKey: "funcionario" }); funcionarios.hasMany(usuarios, { foreignKey: "funcionario" }); funcionarios.belongsTo(empresa_setor, { foreignKey: "id_departamento", targetKey: "id", }); empresa_setor.hasMany(funcionarios, { foreignKey: "id_departamento" }); funcionarios.belongsTo(veiculos_condutor, { foreignKey: "funcionario", targetKey: "id", }); veiculos_condutor.hasMany(funcionarios, { foreignKey: "funcionario" }); // Funcionário para cidades funcionarios.belongsTo(cidade, { foreignKey: "cidade", // Campo na tabela funcionarios targetKey: "id", // Campo na tabela cidade }); const DB_MYSQL_IXC_SOFT = { clientes, cidade, contratos, fibras, logins, planejamento_analitico, fn_apagar, fn_areceber, fn_movimentacao_financeira, fn_despesa_tipo, os, os_arquivos, os_mensagem, movimento_produtos, produtos, transmissores, empresa_setor, funcionarios, fornecedor, ctos, fibra_historico, df_elemento, usuarios, usuarios_grupo, servicos_adicionais, vd_contrato, veiculos, veiculos_condutor, veiculos_despesas, vendedor, sequelize, }; module.exports = DB_MYSQL_IXC_SOFT; } catch (error) { throw new Error( `Erro ao conectar ao banco de dados (MySql) ${name_database}: ${ error instanceof Error ? error.message : error }`, ); } };