diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..85266ff985a71c7c1d0a0933785b77be4d3d3c3d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,11 @@ +services: + simcaq-node: + container_name: simcaq-node + build: . + ports: + - '3000:3000' + develop: + watch: + - action: sync + path: . + target: /API diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000000000000000000000000000000000000..04db51922c7afe6455aa25ef452e79ead0cd5751 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,5 @@ +#!/bin/bash +echo "Starting simcaq-node" +gulp watch &> /dev/null & +cd build +NODE_ENV=production gulp run diff --git a/gulpfile.template.js b/gulpfile.template.js new file mode 100644 index 0000000000000000000000000000000000000000..3de679df0c18e307b692cb22a3cb6446c052fcaf --- /dev/null +++ b/gulpfile.template.js @@ -0,0 +1,20 @@ +const gulp = require('gulp'); + +const nodemon = require('gulp-nodemon'); + +gulp.task('run', () => { + // process.chdir('build'); + nodemon({ + script: 'server.js', + // tasks: ['watch'], + ignore: ["test/test.js", "gulpfile.babel.js"], + ext: 'js html json', + env: { 'NODE_ENV': process.env.NODE_ENV } + }); +}); + +gulp.task('default', () => { + console.log("Não execuatar apenas gulp, execute da forma:"); + console.log("\t\tgulp <task>"); +}); + diff --git a/src/libs/db/monet.js b/src/libs/db/monet.js index d19fb37dfac5ed68cc15c1762a822818dbbc82da..156a6d0f73c4ce11a04901039aeb57dac6b20a27 100644 --- a/src/libs/db/monet.js +++ b/src/libs/db/monet.js @@ -16,6 +16,7 @@ const options = { dbname: config.monetdb.dbname, user: config.monetdb.user, password: config.monetdb.password, + idleTimeoutMillis: 30000 }; // Connection singleton diff --git a/src/libs/db/query_exec.js b/src/libs/db/query_exec.js index 904a34fe71b804cfa8a79d580f9be260402f2b07..e0e1637de66dd95a20dca21e4bd28873b3820736 100644 --- a/src/libs/db/query_exec.js +++ b/src/libs/db/query_exec.js @@ -37,22 +37,27 @@ const SqlString = require('sqlstring'); // Query with more than one parameter: // execSqlQuery('SELECT name, age FROM people WHERE city = ? AND age > ?', ['São Paulo', 35]); // ``` -function execSqlQuery(sqlQuery, sqlQueryParams = []) { + function execSqlQuery(sqlQuery, sqlQueryParams = []) { log.debug(`Executing SQL query '${sqlQuery}' with params '${sqlQueryParams}'`); let queryStrWithParams = SqlString.format(sqlQuery, sqlQueryParams); + return new Promise((resolve, reject) => { - // Execute query - conn.query(queryStrWithParams, [], true).then((dbResult) => { - // release resources allocated for the prepared statement - resolve(dbResult.data); - },(queryError) => { - log.error(`SQL query execution error: ${queryError.message}`); - log.error(`SQL query: ${sqlQuery} with params: ${sqlQueryParams}`); - reject(new Error(queryError.message)); - }); + conn.query(queryStrWithParams, [], true) + .then((dbResult) => { + resolve(dbResult.data); + }) + .catch((queryError) => { + log.error(`SQL query execution error: ${queryError.message}`); + log.error(`SQL query: ${sqlQuery} with params: ${sqlQueryParams}`); + reject(new Error(queryError.message)); + }) + .finally(() => { + conn.close(); + }); }); } + function execMultiQuery(querySet = []) { // Issue all queries concurrently to the database, for every query object in the iterable // NOTE: Array.map() returns a copy of the original array with each object 'mapped'.