1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-12-22 19:07:54 +01:00

strategies should be fetched from DB

This commit is contained in:
Ivar Østhus 2014-11-17 22:39:04 +01:00 committed by Ivar Conradi Østhus
parent fe17b51bd9
commit a2f486c0d4
2 changed files with 61 additions and 1 deletions

View File

@ -1,3 +1,5 @@
var strategyDb = require('./strategyDb');
var strategies = [
{
name: "default",
@ -21,7 +23,9 @@ function byName(name) {
module.exports = function (app) {
app.get('/strategies', function (req, res) {
res.json({strategies: strategies});
strategyDb.getStrategies().then(function (strategies) {
res.json({strategies: strategies});
});
});
app.get('/strategies/:name', function (req, res) {

56
lib/strategyDb.js Normal file
View File

@ -0,0 +1,56 @@
var eventStore = require('./eventStore');
var eventType = require('./eventType');
var logger = require('./logger');
var knex = require('./dbPool');
var STRATEGY_COLUMNS = ['name', 'description', 'parameters_template'];
eventStore.on(eventType.strategyCreated, function (event) {
knex('strategies')
.insert(eventToRow(event))
.catch(function (err) {
logger.error('Could not insert strategy, error was: ', err);
});
});
function getStrategies() {
return knex
.select(STRATEGY_COLUMNS)
.from('strategies')
.orderBy('created_at', 'desc')
.map(rowToStrategy);
}
function getStrategy(name) {
return knex
.first(STRATEGY_COLUMNS)
.from('strategies')
.where({name: name})
.then(rowToStrategy);
}
function rowToStrategy(row) {
if (!row) {
throw new Error('invalid row');
}
return {
name: row.name,
description: row.description,
enabled: row.enabled > 0,
parametersTemplate: row.parameters_template // jshint ignore: line
};
}
function eventToRow(event) {
return {
name: event.data.name,
description: event.data.description,
parameters_template: event.data.parametersTemplate // jshint ignore: line
};
}
module.exports = {
getStrategies: getStrategies,
getStrategy: getStrategy
};