diff --git a/lib/db/feature-toggle-store.js b/lib/db/feature-toggle-store.js index 9ac416cd83..c01145a496 100644 --- a/lib/db/feature-toggle-store.js +++ b/lib/db/feature-toggle-store.js @@ -1,23 +1,24 @@ 'use strict'; -const eventType = require('../event-type'); +const { FEATURE_CREATED, FEATURE_UPDATED, FEATURE_ARCHIVED, FEATURE_REVIVED } = require('../event-type'); const logger = require('../logger'); const NotFoundError = require('../error/notfound-error'); const FEATURE_COLUMNS = ['name', 'description', 'enabled', 'strategies', 'created_at']; +const TABLE = 'features'; class FeatureToggleStore { constructor (db, eventStore) { this.db = db; - eventStore.on(eventType.featureCreated, event => this._createFeature(event.data)); - eventStore.on(eventType.featureUpdated, event => this._updateFeature(event.data)); - eventStore.on(eventType.featureArchived, event => this._archiveFeature(event.data)); - eventStore.on(eventType.featureRevived, event => this._reviveFeature(event.data)); + eventStore.on(FEATURE_CREATED, event => this._createFeature(event.data)); + eventStore.on(FEATURE_UPDATED, event => this._updateFeature(event.data)); + eventStore.on(FEATURE_ARCHIVED, event => this._archiveFeature(event.data)); + eventStore.on(FEATURE_REVIVED, event => this._reviveFeature(event.data)); } getFeatures () { return this.db .select(FEATURE_COLUMNS) - .from('features') + .from(TABLE) .where({ archived: 0 }) .orderBy('name', 'asc') .map(this.rowToFeature); @@ -26,7 +27,7 @@ class FeatureToggleStore { getFeature (name) { return this.db .first(FEATURE_COLUMNS) - .from('features') + .from(TABLE) .where({ name }) .then(this.rowToFeature); } @@ -34,7 +35,7 @@ class FeatureToggleStore { getArchivedFeatures () { return this.db .select(FEATURE_COLUMNS) - .from('features') + .from(TABLE) .where({ archived: 1 }) .orderBy('name', 'asc') .map(this.rowToFeature); @@ -64,13 +65,13 @@ class FeatureToggleStore { } _createFeature (data) { - return this.db('features') + return this.db(TABLE) .insert(this.eventDataToRow(data)) .catch(err => logger.error('Could not insert feature, error was: ', err)); } _updateFeature (data) { - return this.db('features') + return this.db(TABLE) .where({ name: data.name }) .update(this.eventDataToRow(data)) .catch(err => logger.error('Could not update feature, error was: ', err)); diff --git a/lib/db/strategy-store.js b/lib/db/strategy-store.js index d310352443..e1df0d2c5a 100644 --- a/lib/db/strategy-store.js +++ b/lib/db/strategy-store.js @@ -1,6 +1,6 @@ 'use strict'; -const eventType = require('../event-type'); +const { STRATEGY_CREATED, STRATEGY_DELETED } = require('../event-type'); const logger = require('../logger'); const NotFoundError = require('../error/notfound-error'); const STRATEGY_COLUMNS = ['name', 'description', 'parameters_template']; @@ -9,8 +9,8 @@ const TABLE = 'strategies'; class StrategyStore { constructor (db, eventStore) { this.db = db; - eventStore.on(eventType.strategyCreated, event => this._createStrategy(event.data)); - eventStore.on(eventType.strategyDeleted, event => { + eventStore.on(STRATEGY_CREATED, event => this._createStrategy(event.data)); + eventStore.on(STRATEGY_DELETED, event => { db(TABLE) .where('name', event.data.name) .del() diff --git a/lib/event-differ.js b/lib/event-differ.js index 4d87028728..ba8beb3d9f 100644 --- a/lib/event-differ.js +++ b/lib/event-differ.js @@ -1,18 +1,25 @@ '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 strategyTypes = [ - eventType.strategyCreated, - eventType.strategyDeleted, + STRATEGY_CREATED, + STRATEGY_DELETED, ]; const featureTypes = [ - eventType.featureCreated, - eventType.featureUpdated, - eventType.featureArchived, - eventType.featureRevived, + FEATURE_CREATED, + FEATURE_UPDATED, + FEATURE_ARCHIVED, + FEATURE_REVIVED, ]; function baseTypeFor (event) { diff --git a/lib/event-differ.test.js b/lib/event-differ.test.js index 4565171008..4dac913158 100644 --- a/lib/event-differ.test.js +++ b/lib/event-differ.test.js @@ -2,7 +2,7 @@ const test = require('ava'); const eventDiffer = require('./event-differ'); -const eventType = require('./event-type'); +const { FEATURE_CREATED, FEATURE_UPDATED } = require('./event-type'); const logger = require('./logger'); test.beforeEach(() => { @@ -11,7 +11,7 @@ test.beforeEach(() => { test('fails if events include an unknown event type', t => { const events = [ - { type: eventType.featureCreated, data: {} }, + { type: FEATURE_CREATED, data: {} }, { type: 'unknown-type', data: {} }, ]; @@ -26,11 +26,11 @@ test('diffs a feature-update event', t => { const events = [ { - type: eventType.featureUpdated, + type: FEATURE_UPDATED, 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 } }, }, ]; @@ -56,19 +56,19 @@ test('diffs a feature-update event', t => { test('diffs only against features with the same name', t => { const events = [ { - type: eventType.featureUpdated, + type: FEATURE_UPDATED, 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: {} }, }, { - type: eventType.featureCreated, + type: FEATURE_CREATED, 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: {} }, }, ]; @@ -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 => { const events = [ { - type: eventType.featureUpdated, + type: FEATURE_UPDATED, 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: {} }, }, ]; @@ -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 => { const events = [ { - type: eventType.featureUpdated, + type: FEATURE_UPDATED, data: { name: 'foo', description: 'desc', strategy: 'default', enabled: true, parameters: {} }, }, ]; diff --git a/lib/event-type.js b/lib/event-type.js index c2c1cb14e2..3efcdcb4ac 100644 --- a/lib/event-type.js +++ b/lib/event-type.js @@ -1,10 +1,10 @@ 'use strict'; module.exports = { - featureCreated: 'feature-created', - featureUpdated: 'feature-updated', - featureArchived: 'feature-archived', - featureRevived: 'feature-revived', - strategyCreated: 'strategy-created', - strategyDeleted: 'strategy-deleted', + FEATURE_CREATED: 'feature-created', + FEATURE_UPDATED: 'feature-updated', + FEATURE_ARCHIVED: 'feature-archived', + FEATURE_REVIVED: 'feature-revived', + STRATEGY_CREATED: 'strategy-created', + STRATEGY_DELETED: 'strategy-deleted', }; diff --git a/lib/routes/feature-archive.js b/lib/routes/feature-archive.js index b0053ca35c..99edf15845 100644 --- a/lib/routes/feature-archive.js +++ b/lib/routes/feature-archive.js @@ -1,7 +1,7 @@ 'use strict'; const logger = require('../logger'); -const eventType = require('../event-type'); +const { FEATURE_REVIVED } = require('../event-type'); const ValidationError = require('../error/validation-error'); const validateRequest = require('../error/validate-request'); @@ -34,7 +34,7 @@ module.exports = function (app, config) { validateRequest(req) .then(() => eventStore.store({ - type: eventType.featureRevived, + type: FEATURE_REVIVED, createdBy: req.connection.remoteAddress, data: req.body, })) diff --git a/lib/routes/feature.js b/lib/routes/feature.js index 7531d78c2d..5ab7ca2666 100644 --- a/lib/routes/feature.js +++ b/lib/routes/feature.js @@ -1,7 +1,7 @@ 'use strict'; 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 NotFoundError = require('../error/notfound-error'); const ValidationError = require('../error/validation-error.js'); @@ -73,7 +73,7 @@ module.exports = function (app, config) { .then((_req) => legacyFeatureMapper.toNewFormat(_req.body)) .then(validateStrategy) .then((featureToggle) => eventStore.store({ - type: eventType.featureCreated, + type: FEATURE_CREATED, createdBy: userName, data: featureToggle, })) @@ -91,7 +91,7 @@ module.exports = function (app, config) { featureToggleStore.getFeature(featureName) .then(() => validateStrategy(updatedFeature)) .then(() => eventStore.store({ - type: eventType.featureUpdated, + type: FEATURE_UPDATED, createdBy: userName, data: updatedFeature, })) @@ -105,7 +105,7 @@ module.exports = function (app, config) { featureToggleStore.getFeature(featureName) .then(() => eventStore.store({ - type: eventType.featureArchived, + type: FEATURE_ARCHIVED, createdBy: userName, data: { name: featureName, diff --git a/lib/routes/strategy.js b/lib/routes/strategy.js index 5768b3f260..cad1d5ccd7 100644 --- a/lib/routes/strategy.js +++ b/lib/routes/strategy.js @@ -53,7 +53,7 @@ module.exports = function (app, config) { strategyStore.getStrategy(strategyName) .then(() => eventStore.store({ - type: eventType.strategyDeleted, + type: eventType.STRATEGY_DELETED, createdBy: extractUser(req), data: { name: strategyName, @@ -72,7 +72,7 @@ module.exports = function (app, config) { validateRequest(req) .then(validateStrategyName) .then(() => eventStore.store({ - type: eventType.strategyCreated, + type: eventType.STRATEGY_CREATED, createdBy: extractUser(req), data: newStrategy, }))