mirror of
https://github.com/Unleash/unleash.git
synced 2025-06-04 01:18:20 +02:00
uppercase event type key constants
This commit is contained in:
parent
775b6f5900
commit
d6bdc578c9
@ -1,23 +1,24 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const eventType = require('../event-type');
|
const { FEATURE_CREATED, FEATURE_UPDATED, FEATURE_ARCHIVED, FEATURE_REVIVED } = require('../event-type');
|
||||||
const logger = require('../logger');
|
const logger = require('../logger');
|
||||||
const NotFoundError = require('../error/notfound-error');
|
const NotFoundError = require('../error/notfound-error');
|
||||||
const FEATURE_COLUMNS = ['name', 'description', 'enabled', 'strategies', 'created_at'];
|
const FEATURE_COLUMNS = ['name', 'description', 'enabled', 'strategies', 'created_at'];
|
||||||
|
const TABLE = 'features';
|
||||||
|
|
||||||
class FeatureToggleStore {
|
class FeatureToggleStore {
|
||||||
constructor (db, eventStore) {
|
constructor (db, eventStore) {
|
||||||
this.db = db;
|
this.db = db;
|
||||||
eventStore.on(eventType.featureCreated, event => this._createFeature(event.data));
|
eventStore.on(FEATURE_CREATED, event => this._createFeature(event.data));
|
||||||
eventStore.on(eventType.featureUpdated, event => this._updateFeature(event.data));
|
eventStore.on(FEATURE_UPDATED, event => this._updateFeature(event.data));
|
||||||
eventStore.on(eventType.featureArchived, event => this._archiveFeature(event.data));
|
eventStore.on(FEATURE_ARCHIVED, event => this._archiveFeature(event.data));
|
||||||
eventStore.on(eventType.featureRevived, event => this._reviveFeature(event.data));
|
eventStore.on(FEATURE_REVIVED, event => this._reviveFeature(event.data));
|
||||||
}
|
}
|
||||||
|
|
||||||
getFeatures () {
|
getFeatures () {
|
||||||
return this.db
|
return this.db
|
||||||
.select(FEATURE_COLUMNS)
|
.select(FEATURE_COLUMNS)
|
||||||
.from('features')
|
.from(TABLE)
|
||||||
.where({ archived: 0 })
|
.where({ archived: 0 })
|
||||||
.orderBy('name', 'asc')
|
.orderBy('name', 'asc')
|
||||||
.map(this.rowToFeature);
|
.map(this.rowToFeature);
|
||||||
@ -26,7 +27,7 @@ class FeatureToggleStore {
|
|||||||
getFeature (name) {
|
getFeature (name) {
|
||||||
return this.db
|
return this.db
|
||||||
.first(FEATURE_COLUMNS)
|
.first(FEATURE_COLUMNS)
|
||||||
.from('features')
|
.from(TABLE)
|
||||||
.where({ name })
|
.where({ name })
|
||||||
.then(this.rowToFeature);
|
.then(this.rowToFeature);
|
||||||
}
|
}
|
||||||
@ -34,7 +35,7 @@ class FeatureToggleStore {
|
|||||||
getArchivedFeatures () {
|
getArchivedFeatures () {
|
||||||
return this.db
|
return this.db
|
||||||
.select(FEATURE_COLUMNS)
|
.select(FEATURE_COLUMNS)
|
||||||
.from('features')
|
.from(TABLE)
|
||||||
.where({ archived: 1 })
|
.where({ archived: 1 })
|
||||||
.orderBy('name', 'asc')
|
.orderBy('name', 'asc')
|
||||||
.map(this.rowToFeature);
|
.map(this.rowToFeature);
|
||||||
@ -64,13 +65,13 @@ class FeatureToggleStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_createFeature (data) {
|
_createFeature (data) {
|
||||||
return this.db('features')
|
return this.db(TABLE)
|
||||||
.insert(this.eventDataToRow(data))
|
.insert(this.eventDataToRow(data))
|
||||||
.catch(err => logger.error('Could not insert feature, error was: ', err));
|
.catch(err => logger.error('Could not insert feature, error was: ', err));
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateFeature (data) {
|
_updateFeature (data) {
|
||||||
return this.db('features')
|
return this.db(TABLE)
|
||||||
.where({ name: data.name })
|
.where({ name: data.name })
|
||||||
.update(this.eventDataToRow(data))
|
.update(this.eventDataToRow(data))
|
||||||
.catch(err => logger.error('Could not update feature, error was: ', err));
|
.catch(err => logger.error('Could not update feature, error was: ', err));
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const eventType = require('../event-type');
|
const { STRATEGY_CREATED, STRATEGY_DELETED } = require('../event-type');
|
||||||
const logger = require('../logger');
|
const logger = require('../logger');
|
||||||
const NotFoundError = require('../error/notfound-error');
|
const NotFoundError = require('../error/notfound-error');
|
||||||
const STRATEGY_COLUMNS = ['name', 'description', 'parameters_template'];
|
const STRATEGY_COLUMNS = ['name', 'description', 'parameters_template'];
|
||||||
@ -9,8 +9,8 @@ const TABLE = 'strategies';
|
|||||||
class StrategyStore {
|
class StrategyStore {
|
||||||
constructor (db, eventStore) {
|
constructor (db, eventStore) {
|
||||||
this.db = db;
|
this.db = db;
|
||||||
eventStore.on(eventType.strategyCreated, event => this._createStrategy(event.data));
|
eventStore.on(STRATEGY_CREATED, event => this._createStrategy(event.data));
|
||||||
eventStore.on(eventType.strategyDeleted, event => {
|
eventStore.on(STRATEGY_DELETED, event => {
|
||||||
db(TABLE)
|
db(TABLE)
|
||||||
.where('name', event.data.name)
|
.where('name', event.data.name)
|
||||||
.del()
|
.del()
|
||||||
|
@ -1,18 +1,25 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const eventType = require('./event-type');
|
const {
|
||||||
|
STRATEGY_CREATED,
|
||||||
|
STRATEGY_DELETED,
|
||||||
|
FEATURE_CREATED,
|
||||||
|
FEATURE_UPDATED,
|
||||||
|
FEATURE_ARCHIVED,
|
||||||
|
FEATURE_REVIVED,
|
||||||
|
} = require('./event-type');
|
||||||
const diff = require('deep-diff').diff;
|
const diff = require('deep-diff').diff;
|
||||||
|
|
||||||
const strategyTypes = [
|
const strategyTypes = [
|
||||||
eventType.strategyCreated,
|
STRATEGY_CREATED,
|
||||||
eventType.strategyDeleted,
|
STRATEGY_DELETED,
|
||||||
];
|
];
|
||||||
|
|
||||||
const featureTypes = [
|
const featureTypes = [
|
||||||
eventType.featureCreated,
|
FEATURE_CREATED,
|
||||||
eventType.featureUpdated,
|
FEATURE_UPDATED,
|
||||||
eventType.featureArchived,
|
FEATURE_ARCHIVED,
|
||||||
eventType.featureRevived,
|
FEATURE_REVIVED,
|
||||||
];
|
];
|
||||||
|
|
||||||
function baseTypeFor (event) {
|
function baseTypeFor (event) {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
const test = require('ava');
|
const test = require('ava');
|
||||||
const eventDiffer = require('./event-differ');
|
const eventDiffer = require('./event-differ');
|
||||||
const eventType = require('./event-type');
|
const { FEATURE_CREATED, FEATURE_UPDATED } = require('./event-type');
|
||||||
const logger = require('./logger');
|
const logger = require('./logger');
|
||||||
|
|
||||||
test.beforeEach(() => {
|
test.beforeEach(() => {
|
||||||
@ -11,7 +11,7 @@ test.beforeEach(() => {
|
|||||||
|
|
||||||
test('fails if events include an unknown event type', t => {
|
test('fails if events include an unknown event type', t => {
|
||||||
const events = [
|
const events = [
|
||||||
{ type: eventType.featureCreated, data: {} },
|
{ type: FEATURE_CREATED, data: {} },
|
||||||
{ type: 'unknown-type', data: {} },
|
{ type: 'unknown-type', data: {} },
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -26,11 +26,11 @@ test('diffs a feature-update event', t => {
|
|||||||
|
|
||||||
const events = [
|
const events = [
|
||||||
{
|
{
|
||||||
type: eventType.featureUpdated,
|
type: FEATURE_UPDATED,
|
||||||
data: { name: feature, description: desc, strategy: 'default', enabled: true, parameters: { value: 2 } },
|
data: { name: feature, description: desc, strategy: 'default', enabled: true, parameters: { value: 2 } },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: eventType.featureCreated,
|
type: FEATURE_CREATED,
|
||||||
data: { name: feature, description: desc, strategy: 'default', enabled: false, parameters: { value: 1 } },
|
data: { name: feature, description: desc, strategy: 'default', enabled: false, parameters: { value: 1 } },
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
@ -56,19 +56,19 @@ test('diffs a feature-update event', t => {
|
|||||||
test('diffs only against features with the same name', t => {
|
test('diffs only against features with the same name', t => {
|
||||||
const events = [
|
const events = [
|
||||||
{
|
{
|
||||||
type: eventType.featureUpdated,
|
type: FEATURE_UPDATED,
|
||||||
data: { name: 'bar', description: 'desc', strategy: 'default', enabled: true, parameters: {} },
|
data: { name: 'bar', description: 'desc', strategy: 'default', enabled: true, parameters: {} },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: eventType.featureUpdated,
|
type: FEATURE_UPDATED,
|
||||||
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: false, parameters: {} },
|
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: false, parameters: {} },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: eventType.featureCreated,
|
type: FEATURE_CREATED,
|
||||||
data: { name: 'bar', description: 'desc', strategy: 'default', enabled: false, parameters: {} },
|
data: { name: 'bar', description: 'desc', strategy: 'default', enabled: false, parameters: {} },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: eventType.featureCreated,
|
type: FEATURE_CREATED,
|
||||||
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} },
|
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} },
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
@ -84,11 +84,11 @@ test('diffs only against features with the same name', t => {
|
|||||||
test('sets an empty array of diffs if nothing was changed', t => {
|
test('sets an empty array of diffs if nothing was changed', t => {
|
||||||
const events = [
|
const events = [
|
||||||
{
|
{
|
||||||
type: eventType.featureUpdated,
|
type: FEATURE_UPDATED,
|
||||||
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} },
|
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: eventType.featureCreated,
|
type: FEATURE_CREATED,
|
||||||
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} },
|
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} },
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
@ -100,7 +100,7 @@ test('sets an empty array of diffs if nothing was changed', t => {
|
|||||||
test('sets diffs to null if there was nothing to diff against', t => {
|
test('sets diffs to null if there was nothing to diff against', t => {
|
||||||
const events = [
|
const events = [
|
||||||
{
|
{
|
||||||
type: eventType.featureUpdated,
|
type: FEATURE_UPDATED,
|
||||||
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} },
|
data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} },
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
featureCreated: 'feature-created',
|
FEATURE_CREATED: 'feature-created',
|
||||||
featureUpdated: 'feature-updated',
|
FEATURE_UPDATED: 'feature-updated',
|
||||||
featureArchived: 'feature-archived',
|
FEATURE_ARCHIVED: 'feature-archived',
|
||||||
featureRevived: 'feature-revived',
|
FEATURE_REVIVED: 'feature-revived',
|
||||||
strategyCreated: 'strategy-created',
|
STRATEGY_CREATED: 'strategy-created',
|
||||||
strategyDeleted: 'strategy-deleted',
|
STRATEGY_DELETED: 'strategy-deleted',
|
||||||
};
|
};
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const logger = require('../logger');
|
const logger = require('../logger');
|
||||||
const eventType = require('../event-type');
|
const { FEATURE_REVIVED } = require('../event-type');
|
||||||
const ValidationError = require('../error/validation-error');
|
const ValidationError = require('../error/validation-error');
|
||||||
const validateRequest = require('../error/validate-request');
|
const validateRequest = require('../error/validate-request');
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ module.exports = function (app, config) {
|
|||||||
|
|
||||||
validateRequest(req)
|
validateRequest(req)
|
||||||
.then(() => eventStore.store({
|
.then(() => eventStore.store({
|
||||||
type: eventType.featureRevived,
|
type: FEATURE_REVIVED,
|
||||||
createdBy: req.connection.remoteAddress,
|
createdBy: req.connection.remoteAddress,
|
||||||
data: req.body,
|
data: req.body,
|
||||||
}))
|
}))
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const logger = require('../logger');
|
const logger = require('../logger');
|
||||||
const eventType = require('../event-type');
|
const { FEATURE_CREATED, FEATURE_UPDATED, FEATURE_ARCHIVED } = require('../event-type');
|
||||||
const NameExistsError = require('../error/name-exists-error');
|
const NameExistsError = require('../error/name-exists-error');
|
||||||
const NotFoundError = require('../error/notfound-error');
|
const NotFoundError = require('../error/notfound-error');
|
||||||
const ValidationError = require('../error/validation-error.js');
|
const ValidationError = require('../error/validation-error.js');
|
||||||
@ -73,7 +73,7 @@ module.exports = function (app, config) {
|
|||||||
.then((_req) => legacyFeatureMapper.toNewFormat(_req.body))
|
.then((_req) => legacyFeatureMapper.toNewFormat(_req.body))
|
||||||
.then(validateStrategy)
|
.then(validateStrategy)
|
||||||
.then((featureToggle) => eventStore.store({
|
.then((featureToggle) => eventStore.store({
|
||||||
type: eventType.featureCreated,
|
type: FEATURE_CREATED,
|
||||||
createdBy: userName,
|
createdBy: userName,
|
||||||
data: featureToggle,
|
data: featureToggle,
|
||||||
}))
|
}))
|
||||||
@ -91,7 +91,7 @@ module.exports = function (app, config) {
|
|||||||
featureToggleStore.getFeature(featureName)
|
featureToggleStore.getFeature(featureName)
|
||||||
.then(() => validateStrategy(updatedFeature))
|
.then(() => validateStrategy(updatedFeature))
|
||||||
.then(() => eventStore.store({
|
.then(() => eventStore.store({
|
||||||
type: eventType.featureUpdated,
|
type: FEATURE_UPDATED,
|
||||||
createdBy: userName,
|
createdBy: userName,
|
||||||
data: updatedFeature,
|
data: updatedFeature,
|
||||||
}))
|
}))
|
||||||
@ -105,7 +105,7 @@ module.exports = function (app, config) {
|
|||||||
|
|
||||||
featureToggleStore.getFeature(featureName)
|
featureToggleStore.getFeature(featureName)
|
||||||
.then(() => eventStore.store({
|
.then(() => eventStore.store({
|
||||||
type: eventType.featureArchived,
|
type: FEATURE_ARCHIVED,
|
||||||
createdBy: userName,
|
createdBy: userName,
|
||||||
data: {
|
data: {
|
||||||
name: featureName,
|
name: featureName,
|
||||||
|
@ -53,7 +53,7 @@ module.exports = function (app, config) {
|
|||||||
|
|
||||||
strategyStore.getStrategy(strategyName)
|
strategyStore.getStrategy(strategyName)
|
||||||
.then(() => eventStore.store({
|
.then(() => eventStore.store({
|
||||||
type: eventType.strategyDeleted,
|
type: eventType.STRATEGY_DELETED,
|
||||||
createdBy: extractUser(req),
|
createdBy: extractUser(req),
|
||||||
data: {
|
data: {
|
||||||
name: strategyName,
|
name: strategyName,
|
||||||
@ -72,7 +72,7 @@ module.exports = function (app, config) {
|
|||||||
validateRequest(req)
|
validateRequest(req)
|
||||||
.then(validateStrategyName)
|
.then(validateStrategyName)
|
||||||
.then(() => eventStore.store({
|
.then(() => eventStore.store({
|
||||||
type: eventType.strategyCreated,
|
type: eventType.STRATEGY_CREATED,
|
||||||
createdBy: extractUser(req),
|
createdBy: extractUser(req),
|
||||||
data: newStrategy,
|
data: newStrategy,
|
||||||
}))
|
}))
|
||||||
|
Loading…
Reference in New Issue
Block a user