db-komodo.js 1.26 KB
const mysql = require('mysql');

const config = require('komodo-sdk/config');

exports.ERROR_POOL_NOT_READY = new Error('DB-KOMODO: pool is not ready');

exports.pool = config.mysql ? mysql.createPool({
    host: config.mysql.komodo.host || 'localhost',
    database: config.mysql.komodo.database || 'komodo',
    user: config.mysql.komodo.user || 'komodo',
    password: config.mysql.komodo.password,
}) : null;

exports.query = (query, values, cb) => {
    // pool.query.apply(null, arguments);
    if (!this.pool || !this.pool.query) {
        if (typeof cb === 'function') {
            cb(this.ERROR_POOL_NOT_READY);
        }

        return;
    }

    this.pool.query(query, values, cb);
};

exports.format = (sql, values, cb) => new Promise((resolve, reject) => {
    if (!this.pool) {
        reject(this.ERROR_POOL_NOT_READY);
        if (typeof cb === 'function') cb(this.ERROR_POOL_NOT_READY);
        return;
    }

    this.pool.getConnection((err, connection) => {
        if (err) {
            reject(err);
            if (typeof cb === 'function') cb(err);
            return;
        }

        const formatted = connection.format(sql, values);
        connection.release();

        resolve(formatted);
        if (typeof cb === 'function') cb(null, formatted);
    });
});