1
0
mirror of https://github.com/matt-fidd/stratos.git synced 2026-01-01 17:59:25 +00:00

Added database query parameter sanitisation to replace nullish values with null

This commit is contained in:
2022-02-13 21:58:30 +00:00
parent f059da2a09
commit 2de64cdf40

View File

@@ -38,7 +38,8 @@ class DatabaseConnectionPool {
* Sanitise and validate an sql query
*
* @param {string} sql The query to be executed
* @param {(Array<string|number>)} Values to replace prepared statement
* @param {(Array<string|number|null|undefined>)} params
* Values to replace prepared statement
*
* @return {string} Sanitised and validated sql query
*/
@@ -57,9 +58,29 @@ class DatabaseConnectionPool {
} else if (prepared && params.length !== expectedParams) {
throw new Error('Number of params does not equal ' +
'expected number');
} else if (prepared) {
params = DatabaseConnectionPool.sanitiseParams(params);
}
return sql;
return [ sql, params ];
}
/**
* Sanitise the parameters for a prepared sql statement
*
* @param {(Array<string|number|null|undefined>)} params
* Values to replace prepared statement
*
* @return {(Array<string|number|null|undefined)} Sanitised params
*/
static sanitiseParams(params) {
const newParams = [];
params.forEach(param => {
newParams.push(param ?? null);
});
return newParams;
}
/**
@@ -71,7 +92,8 @@ class DatabaseConnectionPool {
* @return {(Array<object>|object)} Data returned from the database
*/
async runQuery(sql, params) {
sql = this.validateQuery(sql, params);
[ sql, params ] =
DatabaseConnectionPool.validateQuery(sql, params);
const prepared = sql.includes('?');
let data;