salix/print/core/database.js

90 lines
2.5 KiB
JavaScript
Raw Normal View History

2019-01-22 08:55:35 +00:00
const mysql = require('mysql2/promise');
const config = require('./config.js');
2020-09-25 12:45:00 +00:00
const fs = require('fs-extra');
2019-01-22 08:55:35 +00:00
module.exports = {
init() {
2019-10-31 13:14:18 +00:00
if (!this.pool) {
2019-01-22 08:55:35 +00:00
this.pool = mysql.createPool(config.mysql);
2019-10-31 13:14:18 +00:00
this.pool.on('connection', connection => {
connection.config.namedPlaceholders = true;
});
}
2019-01-22 08:55:35 +00:00
},
2020-09-25 12:45:00 +00:00
/**
* Makes a query from a raw sql
* @param {String} query - The raw SQL query
* @param {Object} params - Parameterized values
*
* @return {Object} - Result promise
*/
rawSql(query, params) {
2019-10-24 05:41:54 +00:00
return this.pool.query(query, params).then(([rows]) => {
2019-10-31 11:43:04 +00:00
return rows;
2019-10-24 05:41:54 +00:00
});
},
2020-09-25 12:45:00 +00:00
/**
* Makes a query from a SQL file
* @param {String} queryName - The SQL file name
* @param {Object} params - Parameterized values
*
* @return {Object} - Result promise
*/
2020-09-28 11:54:02 +00:00
rawSqlFromDef(queryName, params) {
const query = fs.readFileSync(`${queryName}.sql`, 'utf8');
2020-09-25 12:45:00 +00:00
return this.rawSql(query, 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
*/
2019-10-31 11:43:04 +00:00
findOne(query, params) {
return this.rawSql(query, params).then(([row]) => row);
},
2020-09-25 12:45:00 +00:00
/**
* 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
*/
2020-09-29 12:10:13 +00:00
findOneFromDef(queryName, params) {
return this.rawSqlFromDef(queryName, params)
2020-09-25 12:45:00 +00:00
.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) {
return this.findOne(query, params).then(row => {
return Object.values(row)[0];
});
2019-10-31 11:43:04 +00:00
},
2019-10-24 05:41:54 +00:00
2020-09-25 12:45:00 +00:00
/**
* 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
*/
2020-09-29 12:10:13 +00:00
findValueFromDef(queryName, params) {
return this.findOneFromDef(queryName, params).then(row => {
2020-09-25 12:45:00 +00:00
return Object.values(row)[0];
});
2019-10-24 05:41:54 +00:00
}
2019-01-22 08:55:35 +00:00
};