Example #1
0
function NerdieInterface(parentNerdie, plugin, options) {
	if (undefined === options) {
		options = {};
	}
	emitter.call(this);
	parentNerdie.setMaxListeners(0);
	this.nerdie = parentNerdie;
	this.plugin = plugin;
	myInterface = this;
	this.nerdie.addListener('init', function (config, loadedPlugins) {
		myInterface.config = config;
		if ('function' == typeof plugin.init) {
			plugin.init(loadedPlugins);
		}
	});
	plugin.addListener = this.addListener;

	if (options.db && typeof plugin.gotDb == 'function') {
		Tiny(dbPath + plugin.constructor.name + '.tiny', function (err, db) {
			if (err) {
				console.log("Failed to load database: " + plugin.constructor.name + " -> " + err);
				return false;
			}
			plugin.gotDb(db);
			return true;
		});
	}
}
Example #2
0
		this.put = function(name, id, data, cb) {
			var collection = collections[name];
			if (!collection) {
				tiny(name + '.tiny', function(err, collection) {
					if (err) {
						log.error(err);
					}
					collections[name] = collection;
					if (cb) {
						if (!data.id) {
							data.id = id;
						}
						collections[name].set(id, data, function(err) {
							cb(err);
						});
					}
				});
			} else {
				if (cb) {
					if (!data.id) {
						data.id = id;
					}
					collections[name].set(id, data, function(err) {
						cb(err);
					});
				}
			}
		}
Example #3
0
		this.post = function(name, data, cb) {
			if (!data.id) {
				var id = uuid();
			} else {
				id = data.id;
			}
			var collection = collections[name];
			if (!collection) {
				tiny(name + '.tiny', function(err, collection) {
					if (err) {
						log.error(err);
					}
					collections[name] = collection;
					if (cb) {
						data.id = id;
						collections[name].set(id, data, function(err) {
							cb(err, [{id: id}]);
						});
					}
				});
			} else {
				if (cb) {
					data.id = id;
					collections[name].set(id, data, function(err) {
						cb(err, [{id: id}]);
					});
				}
			}
		}
Example #4
0
		this.del = function(name, id, cb) {
			var collection = collections[name];
			if (!collection) {
				tiny(name + '.tiny', function(err, collection) {
					if (err) {
						log.error(err);
					}
					collections[name] = collection;
					if (cb) {
						collections[name].remove(id, function(err) {
							cb(err);
						});
					}
				});
			} else {
				if (cb) {
					collections[name].remove(id, function(err) {
						cb(err);
					});
				}
			}
		}
Example #5
0
		this.getAll = function(name, query, skip, limit, cb) {
			// TODO: Implement skip and limit
			var collection = collections[name];
			if (!collection) {
				tiny(name + '.tiny', function(err, collection) {
					if (err) {
						log.error(err);
					}
					collections[name] = collection;
					if (cb) {
						if (query) {
							if (isRegexQuery(query)) {
								collections[name].fetch({
									limit: 1
								}, function(doc, key) {
									for (var i in query) {
										if (doc[i] && query[i] && query[i].$regex && doc[i].toLowerCase() == query[i].$regex.toLowerCase()) {
											return true;
										} else {
											return false;
										}
									}
								}, function(err, results) {
									cb(err, results);
								});
							} else {
								collections[name].find(query)(function(err, results) {
									cb(err, results);
								});
							}
						} else {
							cb(null, collections[name]);
						}
					}
				});
			} else {
				if (cb) {
					if (query) {
						if (isRegexQuery(query)) {
							collections[name].fetch({
								limit: 1
							}, function(doc, key) {
								for (var i in query) {
									if (doc[i] && query[i] && query[i].$regex && doc[i].toLowerCase() == query[i].$regex.toLowerCase()) {
										return true;
									} else {
										return false;
									}
								}
							}, function(err, results) {
								cb(err, results);
							});
						} else {
							collections[name].find(query)(function(err, results) {
								cb(err, results);
							});
						}
					} else {
						cb(null, collections[name]);
					}
				}
			}
		}