latte_db
Version:
213 lines (205 loc) • 4.92 kB
JavaScript
(function() {
var latte_verify = require("latte_verify");
var latte_lib = require("latte_lib");
this.create = function(key, config) {
var toValue = function(v) {
if(latte_lib.isObject(v)) {
return JSON.stringify(v);
}else if(latte_lib.object.isLatteObject(v)){
return JSON.stringify(v);
}else{
return v;
}
}
var templateClass = function(value) {
try {
value =latte_verify.verify(value, config);
}catch(err) {
console.log("list object verify Error", err);
return null;
}
this.data = value;
this._data = latte_lib.clone(value);
};
(function() {
this.set = function(value) {
try {
value =latte_verify.verify(value, config);
}catch(err) {
console.log("list object verify Error", err);
return null;
}
this.data = value;
}
this.get = function() {
return this.data;
}
this.flush = function() {
this._data = latte_lib.clone(value);
}
this.toJSON = function() {
return this.data.toJSON();
}
}).call(templateClass.prototype);
(function() {
this.push = function(g) {
return function(connect, callback) {
connect.rpush(key, toValue(g.data), function(err, data) {
if(err) {
return callback(err);
}
if(data == 0) {
latte_lib.debug.info("redis list push ", key, "return 0");
}
return callback(null, g);
});
}
}
this.size = function() {
return function(connect, callback) {
connect.llen(key, callback);
}
}
this.unshift = function(g) {
return function(connect, callback) {
connect.lpush(key, toValue(g.data), function(err, data) {
if(err) {
return callback(err);
}
if(data == 0) {
latte_lib.debug.info("redis list push ", key, "return 0");
}
return callback(null, g);
});
}
}
this.shift = function() {
return function(connect, callback) {
connect.lpop(key, function(err, data) {
if(err) {
return callback(err);
}
if(data) {
var g = new templateClass(data);
return callback(null, g);
}else{
return callback();
}
});
}
}
this.pop = function() {
return function(connect, callback) {
connect.rpop(key, function(err, data) {
if(err) {
return callback(err);
}
if(data) {
var g = new templateClass(data);
return callback(null, g);
}else{
return callback();
}
});
}
}
this.waitShift = function() {
return function(connect, callback) {
connect.blpop([key], 0, function(err, data) {
if(err) {
return callback(err);
}
var g = new templateClass(data[1]);
callback(null, g);
});
}
}
this.waitPop = function() {
return function(connect, callback) {
connect.brpop([key], 0, function(err, data) {
if(err) {
return callback(err);
}
var g = new templateClass(data[1]);
callback(null, g);
});
}
}
this.getAll = function(min, max) {
if(min == null) {
min = 0;
}
if(max == null) {
max = -1
}
return function(connect, callback) {
connect.lrange(key, min, max, function(err, data) {
if(err) {
return callback(err);
}
callback(null, data.map(function(o) {
return new templateClass(o);
}));
});
}
}
this.create = function(value) {
return new templateClass(value);
}
this.get = function(index) {
return function(connect, callback) {
connect.lindex(key, index, function(err, data) {
if(err) {
return callback(err);
}
var g = new templateClass(data);
callback(null, g);
});
};
}
this.set = function(index, g) {
return function(connect, callback) {
connect.lset(key, index, toValue(g.data), function(err, data) {
if(err) {
return callback(err);
}
if(data == 0) {
latte_lib.debug.info("redis list set ", key, index, "return 0");
}
callback(null, g);
});
};
}
this.del = function(g, index) {
if(index == null) {
index = 1;
}
return function(connect, callback) {
connect.lrem(key, 1, toValue(g.data), function(err, data) {
if(err) {
return callback(err);
}
if(data == 0) {
latte_lib.debug.info("redis list del ", key, index, "return 0");
}
callback(null, data);
});
};
}
this.delAll = function() {
return function(connect, callback) {
connect.del(key, function(err, data){
if(err) {
return callback(err);
}
if(data == 0) {
latte_lib.debug.info("redis list delAll ", key, index, "return 0");
}
callback(null, data);
});
};
}
}).call(templateClass);
return templateClass;
}
}).call(module.exports);