mirror of
https://github.com/Unleash/unleash.git
synced 2024-12-28 00:06:53 +01:00
refactored eventStore
This commit is contained in:
parent
c8021e769a
commit
d5b80c81eb
@ -1,6 +1,5 @@
|
|||||||
var util = require('util');
|
var util = require('util');
|
||||||
var EventEmitter = require('events').EventEmitter;
|
var EventEmitter = require('events').EventEmitter;
|
||||||
var events = require('./events');
|
|
||||||
|
|
||||||
function EventStore() {
|
function EventStore() {
|
||||||
EventEmitter.call(this);
|
EventEmitter.call(this);
|
||||||
@ -8,8 +7,16 @@ function EventStore() {
|
|||||||
|
|
||||||
util.inherits(EventStore, EventEmitter);
|
util.inherits(EventStore, EventEmitter);
|
||||||
|
|
||||||
EventStore.prototype.create = function (obj) {
|
EventStore.prototype.create = function (eventType, user, eventData) {
|
||||||
this.emit(events.featureCreated, obj);
|
var event = {
|
||||||
|
id: 1,
|
||||||
|
created: "2014-08-01 12:22:00",
|
||||||
|
type: eventType,
|
||||||
|
user: user,
|
||||||
|
data: eventData
|
||||||
|
};
|
||||||
|
|
||||||
|
this.emit(event.type, event);
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = new EventStore();
|
module.exports = new EventStore();
|
3
unleash-server/lib/eventType.js
Normal file
3
unleash-server/lib/eventType.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
featureCreated : 'feature-created'
|
||||||
|
};
|
@ -1,3 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
featureCreated : 'featureCreated'
|
|
||||||
};
|
|
@ -1,11 +1,10 @@
|
|||||||
var db = require('./db');
|
var db = require('./db')
|
||||||
var eventStore = require('./eventStore');
|
eventStore = require('./eventStore'),
|
||||||
|
eventType = require('./eventType');
|
||||||
|
|
||||||
module.exports = function (app) {
|
module.exports = function (app) {
|
||||||
|
|
||||||
app.get('/features', function (req, res) {
|
app.get('/features', function (req, res) {
|
||||||
// TODO svelovla, fix this
|
|
||||||
eventStore.create({name: 'testing method'});
|
|
||||||
db.getFeatures().then(function (features) {
|
db.getFeatures().then(function (features) {
|
||||||
res.json({features: features});
|
res.json({features: features});
|
||||||
});
|
});
|
||||||
@ -22,15 +21,16 @@ module.exports = function (app) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
app.post('/features', function (req, res) {
|
app.post('/features', function (req, res) {
|
||||||
var newFeature = req.body;
|
var newFeature = req.body,
|
||||||
|
user = req.connection.remoteAddress;
|
||||||
|
|
||||||
db.getFeature(newFeature.name).then(function (feature) {
|
db.getFeature(newFeature.name).then(function (feature) {
|
||||||
if (feature) {
|
if (feature) {
|
||||||
|
//Todo: error-msg: feature name is already in use
|
||||||
res.status(403).end();
|
res.status(403).end();
|
||||||
} else {
|
} else {
|
||||||
db.addFeature(newFeature).then(function () {
|
eventStore.create(eventType.featureCreated, user, newFeature);
|
||||||
res.status(201).end();
|
res.status(201).end();
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,21 +1,24 @@
|
|||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var events = require('../lib/events');
|
var eventType = require('../lib/eventType');
|
||||||
var eventStore = require('../lib/eventStore');
|
var eventStore = require('../lib/eventStore');
|
||||||
|
|
||||||
describe('EventStore', function () {
|
describe('EventStore', function () {
|
||||||
describe('#create()', function () {
|
describe('#create()', function () {
|
||||||
it('should emit event', function (done) {
|
it('should emit event', function (done) {
|
||||||
eventStore.once(events.featureCreated, function (x) {
|
eventStore.once(eventType.featureCreated, function (x) {
|
||||||
assert(x);
|
assert(x);
|
||||||
done();
|
done();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
eventStore.create({
|
|
||||||
|
var eventData = {
|
||||||
'name': 'mail-server.validate-email-addresses',
|
'name': 'mail-server.validate-email-addresses',
|
||||||
'enabled': false,
|
'enabled': false,
|
||||||
'strategy': 'default',
|
'strategy': 'default',
|
||||||
'description': 'Feature description'
|
'description': 'Feature description'
|
||||||
});
|
};
|
||||||
|
|
||||||
|
eventStore.create(eventType.featureCreated,"ole",eventData);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user