hapiest-mysql
Version:
A wrapper around mysql that provides a very descriptive way of running queries.
56 lines (46 loc) • 1.73 kB
JavaScript
;
class MysqlQuery {
static validateSelect(query) {
if (!MysqlQuery.isSelect(query)) {
throw new Error("Invalid SELECT query");
}
}
static validateInsert(query) {
if (!MysqlQuery.isInsert(query)) {
throw new Error("Invalid INSERT query");
}
}
static validateUpdate(query) {
if (!MysqlQuery.isUpdate(query)) {
throw new Error("Invalid UPDATE query");
}
}
static validateUpsert(query) {
if (!MysqlQuery.isUpsert(query)) {
throw new Error("Invalid INSERT ... ON DUPLICATE KEY UPDATE query");
}
}
static validateDelete(query) {
if (!MysqlQuery.isDelete(query)) {
throw new Error("Invalid DELETE query");
}
}
static isSelect(query) {return MysqlQuery._isType(query, 'select');}
static isInsert(query) {return MysqlQuery._isType(query, 'insert');}
static isUpdate(query) {return MysqlQuery._isType(query, 'update');}
static isUpsert(query) {return MysqlQuery._isType(query, 'insert') && MysqlQuery._contains(query, 'on duplicate key update');}
static isDelete(query) {return MysqlQuery._isType(query, 'delete');}
static _isType(query, type) {
const regexString = `^${type}`;
const regex = new RegExp(regexString, 'i');
const convertedQuery = query.trim().toLowerCase();
return regex.test(convertedQuery);
}
static _contains(query, extra) {
const regexString = `${extra}`;
const regex = new RegExp(regexString, 'i');
const convertedQuery = query.trim().toLowerCase();
return regex.test(convertedQuery);
}
}
module.exports = MysqlQuery;