diff --git a/src/libs/app.js b/src/libs/app.js index 18b46cf3f195879ce25d1edf2bcaa39a08afb6f3..d0f452ab3b188297471416019e478b5d64c1d2b6 100644 --- a/src/libs/app.js +++ b/src/libs/app.js @@ -37,16 +37,17 @@ app.use((req, res, next) => { req.sql = squel.select(); next(); }); +// Mounts all API routes under /api/v1 app.use('/api/v1', api); // Catch 404 and forward to error handler app.use((req, res, next) => { res.status(404); log.error('%s %d %s', req.method, res.statusCode, req.url); - res.json({ error: 'Not found' }).end(); + res.json({ error: 'Error 404: Page not found' }).end(); }); -// Error handlers +// Express' default error handler app.use((err, req, res, next) => { res.status(err.status || 500); log.error('%s %d %s', req.method, res.statusCode, err.message); diff --git a/src/libs/db/query_exec.js b/src/libs/db/query_exec.js index 71ae6d9824ac304eb5fd4e4d0e122b16d8d159a2..70456d8ef73868108d3db58b044508700884ebe9 100644 --- a/src/libs/db/query_exec.js +++ b/src/libs/db/query_exec.js @@ -19,26 +19,23 @@ function execSqlQuery(sqlQuery, sqlQueryParams = []) { log.debug(`Executing SQL query '${sqlQuery}' with params '${sqlQueryParams}'`); return new Promise((resolve, reject) => { // Prepare statement - conn.prepare(sqlQuery, true).then( - (dbQuery) => { - // Execute query - dbQuery.exec(sqlQueryParams).then( - // Success - (dbResult) => { - log.debug(`Query result: ${dbResult.data}`); - log.debug(dbResult.data); - resolve(dbResult.data); - }, - // Error - (dbError) => { - log.error(`SQL query execution error: ${dbError.message}`); - reject(new Error(dbError.message)); - } - ); - // Release resources allocated for prepared statement - conn.release(); - } - ); + conn.prepare(sqlQuery, true).then((dbQuery) => { + // Execute query + dbQuery.exec(sqlQueryParams).then((dbResult) => { + log.debug(`Query result: ${dbResult.data}`); + // release resources allocated for the prepared statement + dbQuery.release(); + resolve(dbResult.data); + }).catch((queryError) => { + log.error(`SQL query execution error: ${queryError.message}`); + // release resources allocated for the prepared statement + dbQuery.release(); + reject(new Error(queryError.message)); + }); + }).catch((prepError) => { + log.error(`SQL prepared statement error: ${prepError.message}`); + reject(new Error(prepError.message)); + }); }); } diff --git a/src/libs/middlewares/query.js b/src/libs/middlewares/query.js index 70a9aab689b5bf1c3827af59b09594d7a3ab787a..42b7b7df784de6f35e18c2fed7047ee56a5b4949 100644 --- a/src/libs/middlewares/query.js +++ b/src/libs/middlewares/query.js @@ -9,10 +9,13 @@ function query(req, res, next) { execQuery(sql.text, sql.values).then((result) => { log.debug(result); req.result = result; - if(result.length === 0) next({status: 404, message: 'Not Found'}); + if (result.length === 0) { + next({status: 404, message: 'Not Found'}); + } next(); }, (error) => { - next(error); + log.error(error.stack); + next(new Error('Request could not be satisfied due to a database error.')); }); }