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

53 lines
1.3 KiB
JavaScript
Raw Normal View History

2016-11-02 23:17:28 +01:00
'use strict';
const COLUMNS = ['app_name', 'strategies'];
const TABLE = 'client_strategies';
module.exports = function (db) {
2016-11-04 23:02:55 +01:00
function updateRow (appName, strategies) {
2016-11-02 23:17:28 +01:00
return db(TABLE)
.where('app_name', appName) // eslint-disable-line
.update({
strategies: JSON.stringify(strategies),
updated_at: 'now()', // eslint-disable-line
});
}
2016-11-04 23:02:55 +01:00
function insertNewRow (appName, strategies) {
2016-11-02 23:17:28 +01:00
return db(TABLE).insert({
app_name: appName, // eslint-disable-line
strategies: JSON.stringify(strategies),
});
}
2016-11-04 23:02:55 +01:00
function insert (appName, strategies) {
2016-11-02 23:17:28 +01:00
return db(TABLE)
.count('*')
.where('app_name', appName)
.map(row => ({ count: row.count }))
.then(rows => {
2016-11-02 23:24:23 +01:00
if (rows[0].count > 0) {
2016-11-04 23:02:55 +01:00
return updateRow(appName, strategies);
2016-11-02 23:24:23 +01:00
} else {
2016-11-04 23:02:55 +01:00
return insertNewRow(appName, strategies);
2016-11-02 23:24:23 +01:00
}
2016-11-02 23:17:28 +01:00
});
}
function getAll () {
return db
.select(COLUMNS)
.from(TABLE)
.map(mapRow);
}
function mapRow (row) {
return {
appName: row.app_name,
strategies: row.strategies,
};
}
2016-11-04 23:02:55 +01:00
return { insert, getAll };
2016-11-02 23:17:28 +01:00
};