96 lines
3.1 KiB
JavaScript
96 lines
3.1 KiB
JavaScript
const Vue = require('vue');
|
|
const path = require('path');
|
|
const db = require('../database');
|
|
|
|
const dbHelper = {
|
|
methods: {
|
|
/**
|
|
* Retuns a pool connection from specific cluster node
|
|
* @param {String} name - The cluster name
|
|
*
|
|
* @return {Object} - Pool connection
|
|
*/
|
|
getConnection: name => db.getConnection(name),
|
|
|
|
/**
|
|
* Makes a query from a raw sql
|
|
* @param {String} query - The raw SQL query
|
|
* @param {Object} params - Parameterized values
|
|
* @param {Object} connection - Optional pool connection
|
|
*
|
|
* @return {Object} - Result promise
|
|
*/
|
|
rawSql: (query, params, connection) =>
|
|
db.rawSql(query, params, connection),
|
|
|
|
/**
|
|
* Makes a query from a SQL file
|
|
* @param {String} queryName - The SQL file name
|
|
* @param {Object} params - Parameterized values
|
|
* @param {Object} connection - Optional pool connection
|
|
*
|
|
* @return {Object} - Result promise
|
|
*/
|
|
rawSqlFromDef(queryName, params, connection) {
|
|
const absolutePath = path.join(__dirname, '../', this.path, 'sql', queryName);
|
|
return db.rawSqlFromDef(absolutePath, params, connection);
|
|
},
|
|
|
|
/**
|
|
* Returns the first row from a given raw sql
|
|
* @param {String} query - The raw SQL query
|
|
* @param {Object} params - Parameterized values
|
|
*
|
|
* @return {Object} - Result promise
|
|
*/
|
|
findOne: (query, params) => db.findOne(query, params),
|
|
|
|
/**
|
|
* Returns the first row from a given SQL file
|
|
* @param {String} queryName - The SQL file name
|
|
* @param {Object} params - Parameterized values
|
|
*
|
|
* @return {Object} - Result promise
|
|
*/
|
|
findOneFromDef(queryName, params) {
|
|
return this.rawSqlFromDef(queryName, params)
|
|
.then(([row]) => row);
|
|
},
|
|
|
|
/**
|
|
* Returns the first property from a given raw sql
|
|
* @param {String} query - The raw SQL query
|
|
* @param {Object} params - Parameterized values
|
|
*
|
|
* @return {Object} - Result promise
|
|
*/
|
|
findValue: (query, params) => db.findValue(query, params),
|
|
|
|
/**
|
|
* Returns the first property from a given SQL file
|
|
* @param {String} queryName - The SQL file name
|
|
* @param {Object} params - Parameterized values
|
|
*
|
|
* @return {Object} - Result promise
|
|
*/
|
|
findValueFromDef(queryName, params) {
|
|
return this.findOneFromDef(queryName, params).then(row => {
|
|
if (row) return Object.values(row)[0];
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Returns the content of an SQL file
|
|
* @param {String} queryName - The SQL file name
|
|
*
|
|
* @return {Object} - SQL
|
|
*/
|
|
getSqlFromDef(queryName) {
|
|
const absolutePath = path.join(__dirname, '../', this.path, 'sql', queryName);
|
|
return db.getSqlFromDef(absolutePath);
|
|
},
|
|
}
|
|
};
|
|
|
|
Vue.mixin(dbHelper);
|