1
0
mirror of https://gitlab.com/comunic/comunicapiv2 synced 2024-11-22 21:39:22 +00:00

Add count method

This commit is contained in:
Pierre HUBERT 2019-11-23 19:31:23 +01:00
parent 17f70b956b
commit 215bf1617d

View File

@ -21,6 +21,11 @@ export interface QueryInformation {
limit ?: number, limit ?: number,
} }
export interface CountQueryInformation {
table: string,
where ?: Object
}
export class DatabaseHelper { export class DatabaseHelper {
private static connection : Connection; private static connection : Connection;
@ -188,4 +193,40 @@ export class DatabaseHelper {
}); });
}) })
} }
/**
* Perform a COUNT query on the database
*
* @param info Information about the count query
*/
static async Count(info: CountQueryInformation) : Promise<number> {
let sql = "SELECT COUNT(*) as count FROM " + info.table;
let args = [];
if(info.where) {
sql += " WHERE ";
for (const key in info.where) {
if (info.where.hasOwnProperty(key)) {
const value = info.where[key];
sql += "AND " + key + " = ? ";
args.push(value);
}
}
sql = sql.replace("WHERE AND", "WHERE");
}
return await new Promise((r, e) => {
this.connection.query(sql, args, (err, results, f) => {
if(err){
e(err);
return;
}
r(results[0].count);
})
});
}
} }