/**
 * @Author  HonorLee (dev@honorlee.me)
 * @Version 1.0 (2018-05-04)
 * @License MIT
 */
'use strict'
module.exports={
    query:function(query,callback){
        MysqlPool.getConnection(function(err,con){
            con.query(query,function(err, results, fields) {  
                con.release();
                if(callback && typeof(callback)=='function') callback(err,results,fields);
            });
        });
    }
};

var Module = function(table){
    let instance = this;
    let tableName = table;
    let method,where;
    let rows,value;

    instance.get = function(row){
        method = 'select';
        if(!row) row = '*';
        if(typeof row ==='string') rows = row.split(',');
        if(typeof row ==='object' && row.length) rows = row;
        return instance;
    };
    instance.update = function(row,val){
        method = 'update';
        if(!val) return instance;
        let rowArr,valArr,pair;
        if(typeof row ==='string') rowArr = row.split(',');
        if(typeof row ==='object' && row.length) rowArr = row;
        if(typeof val ==='string') valArr = val.split(',');
        if(typeof val ==='object' && val.length) valArr = val;
        if(rowArr.length == valArr.length){
            for(let i in rowArr){
                if(Number(valArr[i])==valArr[i]){
                    valArr[i] = Number(valArr[i]);
                }else{
                    valArr[i] = '"'+String(valArr[i])+'"';
                }
            }
            rows  = rowArr.join(',');
            value = valArr.join(',');
        }
        return instance;
    };
    instance.del = function(){

    };
    instance.where = function(row,val){
        if(!row || !val) return instance;
        let rowArr,valArr;
        if(typeof row ==='string') rowArr = row.split(',');
        if(typeof row ==='object' && row.length) rowArr = row;
        if(typeof val ==='string') valArr = val.split(',');
        if(typeof val ==='object' && val.length) valArr = val;
        if(rowArr.length == valArr.length){
            where = [];
            for(let i in rowArr){
                if(Number(valArr[i])==valArr[i]){
                    valArr[i] = Number(valArr[i]);
                }else{
                    valArr[i] = '"'+String(valArr[i])+'"';
                }
                where.push(([rowArr[i],valArr[i]]).join('='));
            }
        }
        return instance;
    };
    instance.run = function(callback){
        let query = [],queryStr;
        let whereStr = where?('where '+where.join(' and ')):'';
        switch(method){
            case 'select':
                query = ['select',rows.join(','),'from',tableName,whereStr];
                break;
            case 'update':
                query = ['update',tableName,'set','(',rows.join(','),')','values(',value.join(','),')',whereStr];
                break;
        }
        queryStr = query.join(' ');
        MysqlDB.query(queryStr,function(err,result,fields){
            if(callback && typeof callback === 'function') callback(err,result);
        })
    }
};