UNPKG

latte_db

Version:
148 lines (144 loc) 3.92 kB
(function() { var latte_lib = require("latte_lib"); var latte_verify = require("latte_verify"); 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; } } this.create = function(config) { var templateClass = function(key, data) { this.key = key; try { data = latte_verify.verify(data, { type: "object", properties: config }); }catch(e) { console.log("redis hash key :" ,key, e); return null; } var self = this; this.data = latte_lib.object.create(data || {}); this.updateData = latte_lib.object.create({}); this._data = latte_lib.object.create(latte_lib.copy(data) || {}); this.data.on("change", function(key, value) { self.updateData.set(key, value); }); }; (function() { this.get = function(key) { return this.data.get(key); } this.set = function(key, value) { if(key.indexOf(".") == -1) { try { value = latte_verify.verify(value ,config[key]); }catch(e) { throw e; } } this.data.set(key, value); } this.getUpdates = function() { var result = {}; var self = this; Object.keys(this.updateData.data).forEach(function(key) { result[key] = self.data.data[key]; }); return result; } this.flush = function() { this._data = latte_lib.object.create(latte_lib.copy(this.data.data)); this.updateData = latte_lib.object.create({}); } this.toJSON = function() { return this.data.toJSON(); } }).call(templateClass.prototype); (function() { this.create = function(key, value) { return new templateClass(key, value); } this.add = function(g) { var self = this; return function(connect, callback) { if(!latte_lib.isFunction(callback)) { latte_lib.debug.error("add callback is not Function"); callback = function(){} } var v = {}; for(var i in g.data.data){ if(g.data.data[i] != null) { v[i] = toValue(g.data.data[i]); } }; connect.hmset(g.key, v, function(err, result0, result1) { if(err) { return callback(err); } callback(null, g); }); } } this.del = function(g) { var self = this; return function(connect, callback) { if(!latte_lib.isFunction(callback)) { latte_lib.debug.error("add callback is not Function"); callback = function(){} } connect.del(g.key, function(err, result0) { if(err) { return callback(err); } callback(null, g); }); }; } this.update = function(g) { var self = this; return function(connect, callback) { if(!latte_lib.isFunction(callback)) { latte_lib.debug.error("update callback is not Function"); callback = function(){} } connect.hmset(g.key, g.getUpdates(), function(err, result0) { if(err) { return callback(err); } callback(null, g); }); }; } this.get = function(key) { var self = this; return function(connect, callback) { if(!latte_lib.isFunction(callback)) { latte_lib.debug.error("update callback is not Function"); callback = function(){} } connect.hmget(key, Object.keys(config), function(err, data) { if(err) { return callback(err); } var g = new templateClass(key, data); callback(null, g); }); } } this.keys = function(key) { var self = this; return function(connect, callback) { if(!latte_lib.isFunction(callback)) { latte_lib.debug.error("queryAll callback is not Function"); callback = function(){} } connect.keys(key, function(err, data) { if(err) { return callback(err); } callback(err, data); }); } } }).call(templateClass); return templateClass; } }).call(module.exports);