const Vue = require('vue'); const path = require('path'); const db = require('../database'); const dbHelper = { methods: { /** * Makes a query from a raw sql * @param {String} query - The raw SQL query * @param {Object} params - Parameterized values * * @return {Object} - Result promise */ rawSql: db.rawSql, /** * Makes a query from a SQL file * @param {String} queryName - The SQL file name * @param {Object} params - Parameterized values * * @return {Object} - Result promise */ rawSqlFromDef(queryName, params) { const absolutePath = path.join(__dirname, '../', this.tplPath, 'sql', queryName); return db.rawSqlFromDef(absolutePath, params); }, /** * 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: db.findOne, /** * 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: db.findValue, /** * 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 => { return Object.values(row)[0]; }); } }, props: ['tplPath'] }; Vue.mixin(dbHelper);