1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-04 00:18:01 +01:00

Patch events should update features.

This commit is contained in:
Ivar Conradi Østhus 2014-10-23 16:00:51 +02:00
parent 877e634c96
commit c32b101093
3 changed files with 51 additions and 10 deletions

View File

@ -11,8 +11,8 @@ module.exports = function (app) {
});
});
app.get('/features/:id', function (req, res) {
featureDb.getFeature(req.params.id).then(function (feature) {
app.get('/features/:featureName', function (req, res) {
featureDb.getFeature(req.params.featureName).then(function (feature) {
if (feature) {
res.json(feature);
} else {
@ -45,16 +45,23 @@ module.exports = function (app) {
});
app.patch('/features/:featureName', function (req, res) {
var featureName = req.params.featureName;
var featureName = req.params.featureName,
createdBy = req.connection.remoteAddress,
changeRequest = req.body;
changeRequest.name = featureName;
featureDb.getFeature(featureName).then(
function () {
var changeRequest = req.body;
var event = {};
event.type = eventType.featureUpdated;
event.user = req.connection.remoteAddress;
event.data = changeRequest;
res.status(202).end();
eventStore.create({
type: eventType.featureUpdated,
createdBy: createdBy,
data: changeRequest
}).then(function () {
res.status(202).end();
}, function () {
res.status(500).end();
});
},
function () {
res.status(404).end();

View File

@ -21,6 +21,41 @@ eventStore.on(eventType.featureCreated, function (event) {
}
);
eventStore.on(eventType.featureUpdated, function (event) {
var sql, params;
var changeRequest = event.data;
switch (changeRequest.field) {
case 'enabled':
sql = 'UPDATE features SET enabled = $1 WHERE name=$2';
params = [event.data.value ? 1 : 0, event.data.name];
break;
case 'strategy':
sql = 'UPDATE features SET strategy_name = $1 WHERE name=$2';
params = [event.data.value, event.data.name];
break;
case 'parameters':
sql = 'UPDATE features SET parameters = $1 WHERE name=$2';
params = [event.data.value, event.data.name];
break;
default:
break;
}
if(sql && params) {
dbPool.query(sql, params, function(err) {
if(err) {
logger.error('Could not update feature, error was: ', err);
}
});
} else {
logger.error("Could not handle feature-update event", event);
}
}
);
function getFeatures() {
var sql = 'SELECT name, enabled, strategy_name as strategy, parameters FROM features ORDER BY created_at';
return new Promise(function (resolve, reject) {

View File

@ -1,7 +1,6 @@
var Promise = require('bluebird');
function storeEvent(event) {
console.log('using eventDbMock to store: ', event);
return new Promise(function (resolve) {
resolve();
});