diff --git a/src/herbarium/herbariumdatabase.js b/src/herbarium/herbariumdatabase.js index 36471927..e305753d 100644 --- a/src/herbarium/herbariumdatabase.js +++ b/src/herbarium/herbariumdatabase.js @@ -47,31 +47,20 @@ export function selectCodBarra() { } /** - * A função criaTabelaReflora, cria uma tabela chamada reflora, - * com base no modelo que foi chamado e dentro desse modelo, - * existe nome das colunas que estarão presentes nessa tabela. - * Nessa tabela é guardado os códigos de barras, e as respostas das requisições. - * Detalhe force: true é igual ao drop table. - * @return tabelaReflora, que é a tabela que foi criada. - */ -export function criaTabelaReflora() { + * A função pegaTabelaReflora retorna o modelo da tabela specieslink existente no banco de dados. + * @return TabelaReflora, que é o modelo da tabela existente. + */ +export function pegaTabelaReflora() { const tabelaReflora = modeloReflora(conexao, Sequelize); - tabelaReflora.sync({ force: true }); - // tabelaReflora.removeAttribute('id'); return tabelaReflora; } /** - * A função criaTabelaSpecieslink, cria uma tabela chamada reflora, - * com base no modelo que foi chamado e dentro desse modelo, - * existe nome das colunas que estarão presentes nessa tabela. - * Nessa tabela é guardado os códigos de barras, e as respostas das requisições. - * Detalhe force: true é igual ao drop table. - * @return tabelaSpecieslink, que é a tabela que foi criada. + * A função pegaTabelaSpecieslink retorna o modelo da tabela specieslink existente no banco de dados. + * @return tabelaSpecieslink, que é o modelo da tabela existente. */ -export function criaTabelaSpecieslink() { +export function pegaTabelaSpecieslink() { const tabelaSpecieslink = modeloSpecieslink(conexao, Sequelize); - tabelaSpecieslink.sync({ force: true }); return tabelaSpecieslink; } @@ -797,68 +786,92 @@ export function insereAlteracaoSugerida(idUsuario, statusAlteracao, idTombo, tom } /** - * A função existeTabelaReflora, executa um SHOW TABLES verificando - * se existe a tabela do reflora ou não. Se existir a tabela do reflora - * retorna true, e caso não exista false. + * A função verificaSeTemDadosReflora verifica se a tabela Reflora possui algum dado. + * Retorna true se houver registros e false caso contrário. * @return promessa.promise, como é assíncrono ele só retorna quando resolver, ou seja, - * quando terminar de realizar a consulta de verificar se existe ou não a tabela. + * quando terminar de realizar a consulta. */ -export function existeTabelaReflora() { +export function verificaSeTemDadosReflora() { const promessa = Q.defer(); - conexao.query('SHOW TABLES', { type: Sequelize.QueryTypes.SHOWTABLES }).then(listaTabelas => { - listaTabelas.forEach(tabelas => { - if (tabelas === 'reflora') { + const tabelaReflora = modeloReflora(conexao, Sequelize); + + tabelaReflora.count() + .then(count => { + if (count > 0) { promessa.resolve(true); + } else { + promessa.resolve(false); } + }) + .catch(error => { + promessa.reject(error); }); - promessa.resolve(false); - }); + return promessa.promise; } /** - * A função existeTabelaReflora, executa um SHOW TABLES verificando - * se existe a tabela do reflora ou não. Se existir a tabela do reflora - * retorna true, e caso não exista false. + * A função verificaSeTemDadosSpecieslink verifica se a tabela specieslink possui algum dado. + * Retorna true se houver registros e false caso contrário. * @return promessa.promise, como é assíncrono ele só retorna quando resolver, ou seja, - * quando terminar de realizar a consulta de verificar se existe ou não a tabela. + * quando terminar de realizar a consulta. */ -export function existeTabelaSpecieslink() { +export function verificaSeTemDadosSpecieslink() { const promessa = Q.defer(); - conexao.query('SHOW TABLES', { type: Sequelize.QueryTypes.SHOWTABLES }).then(listaTabelas => { - listaTabelas.forEach(tabelas => { - if (tabelas === 'specieslink') { + const tabelaSpecieslink = modeloSpecieslink(conexao, Sequelize); + + tabelaSpecieslink.count() + .then(count => { + if (count > 0) { promessa.resolve(true); + } else { + promessa.resolve(false); } + }) + .catch(error => { + promessa.reject(error); }); - promessa.resolve(false); - }); + return promessa.promise; } /** - * A função apagaTabelaReflora, executa um DROP TABLE, ou seja, - * apagar uma tabela que no caso é a tabela do reflora. + * A função limpaTabelaReflora remove todos os dados da tabela reflora sem apagar sua estrutura. * @return promessa.promise, como é assíncrono ele só retorna quando resolver, ou seja, - * quando terminar de apagar a tabela. + * quando terminar de limpar a tabela. */ -export function apagaTabelaReflora() { +export function limpaTabelaReflora() { const promessa = Q.defer(); const tabelaReflora = modeloReflora(conexao, Sequelize); - promessa.resolve(tabelaReflora.drop()); + + tabelaReflora.truncate() + .then(() => { + promessa.resolve(); + }) + .catch(error => { + promessa.reject(error); + }); + return promessa.promise; } /** - * A função apagaTabelaSpecieslink, executa um DROP TABLE, ou seja, - * apagar uma tabela que no caso é a tabela do specieslink. + * A função limpaTabelaSpecieslink remove todos os dados da tabela Specieslink sem apagar sua estrutura. * @return promessa.promise, como é assíncrono ele só retorna quando resolver, ou seja, - * quando terminar de apagar a tabela. + * quando terminar de limpar a tabela. */ -export function apagaTabelaSpecieslink() { +export function limpaTabelaSpecieslink() { const promessa = Q.defer(); - const tabelaSpecieslink = modeloSpecieslink(conexao, Sequelize); - promessa.resolve(tabelaSpecieslink.drop()); + const TabelaSpecieslink = modeloSpecieslink(conexao, Sequelize); + + TabelaSpecieslink.truncate() + .then(() => { + promessa.resolve(); + }) + .catch(error => { + promessa.reject(error); + }); + return promessa.promise; } diff --git a/src/herbarium/main.js b/src/herbarium/main.js index d1c65ea9..ef923161 100644 --- a/src/herbarium/main.js +++ b/src/herbarium/main.js @@ -1,13 +1,13 @@ import Q from 'q'; import { - existeTabelaReflora, - existeTabelaSpecieslink, + verificaSeTemDadosReflora, + verificaSeTemDadosSpecieslink, atualizaFimTabelaConfiguracao, - criaTabelaSpecieslink, - criaTabelaReflora, - apagaTabelaReflora, - apagaTabelaSpecieslink, + pegaTabelaSpecieslink, + pegaTabelaReflora, + limpaTabelaReflora, + limpaTabelaSpecieslink, insereTabelaReflora, insereTabelaSpecieslink, selectCodBarra, @@ -40,7 +40,7 @@ function comecaAtualizacao(nomeArquivo, idServico) { const promessa = Q.defer(); if (idServico === 1) { escreveLOG(`reflora/${nomeArquivo}`, 'Inicializando a aplicação do Reflora.'); - const tabelaReflora = criaTabelaReflora(); + const tabelaReflora = pegaTabelaReflora(); selectCodBarra().then(listaCodBarra => { // insereTabelaReflora(tabelaReflora, listaCodBarra.slice(0, 1)).then(() => { insereTabelaReflora(tabelaReflora, geraListaAleatorio(listaCodBarra, 0)).then(() => { @@ -49,7 +49,7 @@ function comecaAtualizacao(nomeArquivo, idServico) { fazComparacaoTomboReflora().then(resultadoComparacao => { if (resultadoComparacao) { escreveLOG(`reflora/${nomeArquivo}`, 'O processo de comparação do Reflora acabou.'); - apagaTabelaReflora().then(() => { + limpaTabelaReflora().then(() => { promessa.resolve(); }); } @@ -60,7 +60,7 @@ function comecaAtualizacao(nomeArquivo, idServico) { }); } else if (idServico === 2) { escreveLOG(`specieslink/${nomeArquivo}`, 'Inicializando a aplicação do Specieslink.'); - const tabelaSpecieslink = criaTabelaSpecieslink(); + const tabelaSpecieslink = pegaTabelaSpecieslink(); selectCodBarra().then(listaCodBarra => { // insereTabelaSpecieslink(tabelaSpecieslink, listaCodBarra.slice(0, 1)).then(() => { insereTabelaSpecieslink(tabelaSpecieslink, geraListaAleatorio(listaCodBarra, 0)).then(() => { @@ -69,7 +69,7 @@ function comecaAtualizacao(nomeArquivo, idServico) { fazComparacaoTomboSpecieslink().then(resultadoComparacao => { if (resultadoComparacao) { escreveLOG(`specieslink/${nomeArquivo}`, 'O processo de comparação do SpeciesLink acabou.'); - apagaTabelaSpecieslink().then(() => { + limpaTabelaSpecieslink().then(() => { promessa.resolve(); }); } @@ -97,7 +97,7 @@ function comecaAtualizacao(nomeArquivo, idServico) { function ehPossivelFazerComparacao(nomeArquivo, idServico) { const promessa = Q.defer(); if (idServico === 1) { - existeTabelaReflora().then(existe => { + verificaSeTemDadosReflora().then(existe => { if (existe) { promessa.resolve(); } else { @@ -107,7 +107,7 @@ function ehPossivelFazerComparacao(nomeArquivo, idServico) { } }); } else if (idServico === 2) { - existeTabelaSpecieslink().then(existe => { + verificaSeTemDadosSpecieslink().then(existe => { if (existe) { promessa.resolve(); } else {