Feat: use pg-promise notify for poller update

This commit is contained in:
csrapr 2021-05-25 17:40:22 +01:00 committed by Sérgio Salgado
parent 4ce4a32502
commit 121ced632e
2 changed files with 14 additions and 2 deletions

View file

@ -15,6 +15,7 @@ const { asyncLocalStorage, defaultStore } = require('./async-storage')
const settingsLoader = require('./new-settings-loader')
const NodeCache = require('node-cache')
const util = require('util')
const db = require('./db')
const INCOMING_TX_INTERVAL = 30 * T.seconds
const LIVE_INCOMING_TX_INTERVAL = 5 * T.seconds
@ -74,11 +75,18 @@ cachedVariables.on('expired', (key, val) => {
}
})
db.connect({ direct: true }).then(sco => {
sco.client.on('notification', data => {
return reload(data.payload)
})
return sco.none('LISTEN $1:name', 'poller')
}).catch(console.error)
function reload (schema) {
const store = defaultStore()
store.set('schema', schema)
// set asyncLocalStorage so settingsLoader loads settings for the right schema
asyncLocalStorage.run(store, () => {
return asyncLocalStorage.run(store, () => {
return settingsLoader.loadLatest().then(settings => {
const pi = plugins(settings)
cachedVariables.set(schema, { settings, pi, isReloading: false })