UNPKG

spincycle

Version:

A reactive message router and object manager that lets clients subscribe to object property changes on the server

97 lines (84 loc) 2.27 kB
// Generated by CoffeeScript 1.9.3 (function() { var SpinTag, Taginator, debug, defer; debug = process.env["DEBUG"]; defer = require('node-promise').defer; SpinTag = require('./SpinTag'); Taginator = (function() { function Taginator() {} Taginator.setTag = function(ds, type, id, tag) { var q; q = defer(); Taginator.getTagsFor(ds, type, id).then(function(existingTags) { var record; if (existingTags.indexOf(tag) === -1) { record = { name: tag, modelRef: id, modelType: type }; return new SpinTag(record).then(function(st) { st.serialize(); return q.resolve(); }); } else { return q.resolve(); } }); return q; }; Taginator.getTagsFor = function(ds, type, id) { var q; q = defer(); ds.findQuery('SpinTag', { property: 'modelType', value: type, property2: 'modelRef', value2: id }).then(function(results) { var rv; rv = []; results.forEach(function(res) { return rv.push(res.name); }); return q.resolve(rv); }); return q; }; Taginator.searchForTags = function(ds, type, tags) { var count, lookup, q, rv; q = defer(); lookup = {}; rv = []; count = tags.length; tags.forEach(function(tag) { return ds.findQuery('SpinTag', { property: 'modelType', value: type, property2: 'name', value2: tag }).then(function(results) { return results.forEach(function(spintag) { var found, k, v; found = lookup[spintag.modelRef] || 0; found++; lookup[spintag.modelRef] = found; if (--count === 0) { for (k in lookup) { v = lookup[k]; if (v === tags.length) { rv.push(k); } } return q.resolve(rv); } }); }); }); return q; }; return Taginator; })(); module.exports = Taginator; }).call(this); //# sourceMappingURL=Taginator.js.map