1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-10-18 20:09:08 +02:00
unleash.unleash/lib/featureDb.js

92 lines
2.5 KiB
JavaScript
Raw Normal View History

var eventStore = require('./eventStore'),
eventType = require('./eventType'),
logger = require('./logger'),
Promise = require('bluebird'),
dbPool = require('./dbPool');
eventStore.on(eventType.featureCreated, function (event) {
2014-11-10 16:21:22 +01:00
var sql = 'INSERT INTO features(name, description, enabled, strategy_name, parameters) ' +
'VALUES ($1, $2, $3, $4, $5)';
var params = [
event.data.name,
2014-11-10 16:21:22 +01:00
event.data.description,
event.data.enabled ? 1 : 0,
event.data.strategy,
event.data.parameters
];
dbPool.query(sql, params, function(err) {
if(err) {
logger.error('Could not insert feature, error was: ', err);
}
});
}
);
2014-10-23 16:00:51 +02:00
eventStore.on(eventType.featureUpdated, function (event) {
var feature = event.data;
2014-10-23 16:00:51 +02:00
var sql = 'UPDATE features SET enabled = $1, strategy_name = $2, ' +
'description = $3, parameters = $4 WHERE name = $5';
2014-10-23 16:00:51 +02:00
var params = [
feature.enabled ? 1 : 0,
feature.strategy,
feature.description,
feature.paramaters,
feature.name
];
2014-10-23 16:00:51 +02:00
dbPool.query(sql, params, function(err) {
if(err) {
logger.error('Could not update feature, error was: ', err);
}
});
2014-10-23 16:00:51 +02:00
}
);
function getFeatures() {
2014-11-10 16:21:22 +01:00
var sql = 'SELECT name, description, enabled, strategy_name as strategy, parameters ' +
'FROM features ORDER BY created_at DESC';
2014-10-23 13:51:37 +02:00
return new Promise(function (resolve, reject) {
dbPool.query(sql, function(err, res) {
if(err) {reject(err);}
resolve(res.rows.map(mapToToggle));
});
});
}
function getFeature(name) {
2014-11-10 16:21:22 +01:00
var sql = 'SELECT name, description, enabled, strategy_name as strategy, parameters ' +
'FROM features WHERE name=$1';
return new Promise(function (resolve, reject) {
dbPool.query(sql, [name], function(err, res) {
if(err) {reject(err);}
if(res.rows.length === 1) {
resolve(mapToToggle(res.rows[0]));
} else {
reject();
}
});
});
}
2014-10-23 13:51:37 +02:00
function mapToToggle(row) {
return {
name: row.name,
2014-11-10 16:21:22 +01:00
description: row.description,
2014-10-23 13:51:37 +02:00
enabled: row.enabled > 0,
strategy: row.strategy,
parameters: row.parameters
};
}
module.exports = {
getFeatures: getFeatures,
getFeature: getFeature
};