tribedb
Version:
Unlimited expansion MySQL cluster storage system
157 lines (111 loc) • 2.95 kB
JavaScript
/**
*
* 数据请求
*
*/
// 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();
*/