mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	Patch events should update features.
This commit is contained in:
		
							parent
							
								
									91e9141a01
								
							
						
					
					
						commit
						bd8aecc664
					
				@ -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;
 | 
			
		||||
                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