Feat: refactor routes.js express entrypoint config
Feat: express config script refactor Feat: add state and settingsCache files
This commit is contained in:
parent
c3f8f98c26
commit
85235eaa13
22 changed files with 807 additions and 1 deletions
42
lib/middlewares/populateSettings.js
Normal file
42
lib/middlewares/populateSettings.js
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
const state = require('./state')
|
||||
const settingsCache = require('./settingsCache')
|
||||
const newSettingsLoader = require('../new-settings-loader')
|
||||
const helpers = require('../route-helpers')
|
||||
|
||||
const SETTINGS_CACHE_REFRESH = 60 * 60 * 1000
|
||||
|
||||
const populateSettings = function (req, res, next) {
|
||||
const versionId = req.headers['config-version']
|
||||
if (versionId !== state.oldVersionId) {
|
||||
state.oldVersionId = versionId
|
||||
}
|
||||
|
||||
// Clear cache every hour
|
||||
if (Date.now() - settingsCache.getTimestamp() > SETTINGS_CACHE_REFRESH) {
|
||||
settingsCache.clearCache()
|
||||
}
|
||||
|
||||
if (!versionId && settingsCache.getCache()) {
|
||||
req.settings = settingsCache.getCache()
|
||||
return next()
|
||||
}
|
||||
|
||||
if (!versionId && !settingsCache.getCache()) {
|
||||
return newSettingsLoader.loadLatest()
|
||||
.then(settings => {
|
||||
settingsCache.setCache(settings)
|
||||
settingsCache.setTimestamp(Date.now())
|
||||
req.settings = settings
|
||||
})
|
||||
.then(() => next())
|
||||
.catch(next)
|
||||
}
|
||||
|
||||
newSettingsLoader.load(versionId)
|
||||
.then(settings => { req.settings = settings })
|
||||
.then(() => helpers.updateDeviceConfigVersion(versionId))
|
||||
.then(() => next())
|
||||
.catch(next)
|
||||
}
|
||||
|
||||
module.exports = populateSettings
|
||||
Loading…
Add table
Add a link
Reference in a new issue