UNPKG

tribedb

Version:

Unlimited expansion MySQL cluster storage system

157 lines (111 loc) 2.95 kB
/** * * 数据请求 * */ // const Query = require("squel"); const pool = require('./pool.js'); /** * 执行 sql 请求 * opt = { * read: * write: * } */ exports.query = function(table, opt, SQL ) { if( !opt && !SQL ){ throw new Error('TribeDB query need a sql string or builder with toString() !'); } if( !SQL ){ SQL = opt; opt = {}; } if( SQL instanceof Object && SQL.toString ){ SQL = SQL.toString(); // 支持 squel 对象 } // 判断读写 if( !opt.read && !opt.write ){ let operate = SQL.substr(0, 6).toLocaleLowerCase(); if(operate == 'select'){ opt.read = true; }else{ opt.write = true; } } // 执行 return new Promise(function (resolve, reject) { pool.conn(table, opt, function(err, conn){ if(err){ return reject(err); } conn.query(SQL, function(err, rows){ // log(rows); conn.release(); // 必须释放回连接池! // that.reset(); // 重设 if(err){ return reject(err); } resolve(rows); // 返回 }); }); }); }; /** * 执行 sql 请求 */ exports.Query = function( table, opt, SQL ){ this._table = table; if( !opt && !SQL ){ return this; } if( !SQL ){ SQL = opt; opt = {}; } if( SQL instanceof Object ){ SQL = SQL.toString(); // 支持 squel 对象 } var that = this; // die(SQL); return new Promise(function (resolve, reject) { pool.conn(table, opt, function(err, conn){ conn.query(SQL, function(err, rows){ // log(rows); conn.release(); // 必须释放回连接池! // that.reset(); // 重设 err && reject(err); resolve(rows); // 返回 }); }); }); }; /** * 操作封装 */ exports.insert = require('./insert.js').insert; exports.inserts = require('./insert.js').inserts; exports.update = require('./update.js').update; exports.delete = require('./delete.js').delete; const select = require('./select.js'); exports.select = select.select; exports.select_merge = select.select_merge; exports.select_attach = select.select_attach; /* var sleep = function (time) { return new Promise(function (resolve, reject) { setTimeout(function () { resolve(); log(time); }, time*1000); }) }; var main = async function(){ log('start'); // await tribe.insert(2); await sleep(2); await sleep(3); log('end'); }; // main(); */