diff --git a/lib/poller.js b/lib/poller.js index 2178255e..02834902 100644 --- a/lib/poller.js +++ b/lib/poller.js @@ -143,14 +143,41 @@ const readdirRec = rootPath => )) .then(_.flatten) +// @see lib/customers.js:updateIdCardData() +const cleanOldFailedPDF417Scans = () => { + let old = new Date() + old.setDate(old.getDate() - 2) // 2 days ago + old = old.getTime() + + /* NOTE: Small caveat to mtime: last time the file was written to. */ + const isOld = filestat => filestat.mtimeMs < old + + readdirRec(path.join(OPERATOR_DATA_DIR, 'id-operator')) + .then(entries => Promise.all( + entries + .filter(entry => entry.isFile()) + .map(entry => fs.stat(entry.path).then(_.set('path', entry.path))) + )) + .then(filestats => Promise.all( + filestats + .filter(isOld) + .map(_.flow(_.get(['path']), fs.unlink)) + )) + .catch(err => { + console.log("Error cleaning up failed PDF417 scans:", err) + }) +} + // @see lib/machine-loader.js:updateFailedQRScans() const cleanOldFailedQRScans = () => { const old = new Date() old.setDate(old.getDate() - 2) // 2 days ago + const isOld = filepath => { const then = new Date(path.basename(filepath).replace(/-[0-9]+\.jpg$/, '')) return then < old } + readdirRec(path.join(OPERATOR_DATA_DIR, 'failedQRScans')) .then(entries => Promise.all( entries @@ -244,6 +271,7 @@ function doPolling (schema) { addToQueue(updateCoinAtmRadar, RADAR_UPDATE_INTERVAL, schema, QUEUE.SLOW) addToQueue(pi().pruneMachinesHeartbeat, PRUNE_MACHINES_HEARTBEAT, schema, QUEUE.SLOW, settings) addToQueue(cleanOldFailedQRScans, FAILED_SCANS_INTERVAL, schema, QUEUE.SLOW, settings) + addToQueue(cleanOldFailedPDF417Scans, FAILED_SCANS_INTERVAL, schema, QUEUE.SLOW, settings) } function setup (schemasToAdd = [], schemasToRemove = []) {