From f5a3b7773745f4cd3aceec5a6b5ab1f22e203a16 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Fri, 23 Jan 2015 16:35:47 +0100 Subject: [PATCH] Make TemplateMaps to emit messages when adding/updating/deleting templates --- lib/cartodb/template_maps.js | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/lib/cartodb/template_maps.js b/lib/cartodb/template_maps.js index 419739ce..233b1a49 100644 --- a/lib/cartodb/template_maps.js +++ b/lib/cartodb/template_maps.js @@ -3,6 +3,11 @@ var crypto = require('crypto'), _ = require('underscore'), dot = require('dot'); + +var EventEmitter = require('events').EventEmitter; +var util = require('util'); + + // Class handling map templates // // See http://github.com/CartoDB/Windshaft-cartodb/wiki/Template-maps @@ -16,6 +21,10 @@ var crypto = require('crypto'), // // function TemplateMaps(redis_pool, opts) { + if (!(this instanceof TemplateMaps)) return new TemplateMaps(); + + EventEmitter.call(this); + this.redis_pool = redis_pool; this.opts = opts || {}; @@ -42,6 +51,11 @@ function TemplateMaps(redis_pool, opts) { this.lock_ttl = this.opts['lock_ttl'] || 5000; } +util.inherits(TemplateMaps, EventEmitter); + +module.exports = TemplateMaps; + + var o = TemplateMaps.prototype; //--------------- PRIVATE METHODS -------------------------------- @@ -193,6 +207,10 @@ o.addTemplate = function(owner, template, callback) { return true; }, function finish(err) { + if (!err) { + self.emit('add', owner, templateName, template); + } + callback(err, templateName, template); } ); @@ -223,6 +241,10 @@ o.delTemplate = function(owner, tpl_id, callback) { return true; }, function finish(err) { + if (!err) { + self.emit('delete', owner, tpl_id); + } + callback(err); } ); @@ -286,6 +308,10 @@ o.updTemplate = function(owner, tpl_id, template, callback) { return true; }, function finish(err) { + if (!err) { + self.emit('update', owner, templateName, template); + } + callback(err, template); } ); @@ -438,5 +464,3 @@ o.fingerPrint = function(template) { .digest('hex') ; }; - -module.exports = TemplateMaps;