"use strict";

var configFile = require('../include/commons').CONFIG_FILE;
var config = require('../resources/config/' + configFile);

var log = require('./log');

/**
 * 数据库查询工具，使用数据库连接池获取连接，执行查询，之后将连接返回连接池。
 */
exports.execQuery = function (pool, options) {
    if(config.showSQL) log.info(options.sql);

    pool.getConnection(function (err, connection) {
        // 查询参数
        var sql = options['sql'];
        var args = options['args'];
        var handler = options['handler'];

        if (err) {
            log.error('Database - get connection failed, ' + err);
            handler(err, 'db-getConnection');

            return;
        }

        // 执行查询
        if (args) {
            var query = connection.query(sql, args, function (err, results) {
                if (err) {
                    log.error('Database - execute query failed, ' + err);
                    handler(err, results);

                    return;
                }

                // 处理结果
                handler(err, results);
            });

        } else {
            var query = connection.query(sql, function (err, results) {
                if (err) {
                    log.error('Database - execute query failed, ' + err);
                    handler(err, results);

                    return;
                }

                // 处理结果
                handler(err, results);
            });
        }

        // 返回连接池
        connection.release(function (err) {
            if (error) {
                log.error('Database - release connection failed, ' + err);
            }
        });
    });
};