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:
parent
877e634c96
commit
c32b101093
@ -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();
|
||||
|
@ -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) {
|
||||
|
@ -1,7 +1,6 @@
|
||||
var Promise = require('bluebird');
|
||||
|
||||
function storeEvent(event) {
|
||||
console.log('using eventDbMock to store: ', event);
|
||||
return new Promise(function (resolve) {
|
||||
resolve();
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user