diff --git a/app/agenda/jobs.js b/app/agenda/jobs.js index 34f50689..648013df 100644 --- a/app/agenda/jobs.js +++ b/app/agenda/jobs.js @@ -5,6 +5,7 @@ const DEFAULT_OPTIONS = { module.exports = function (agenda) { agenda.on('ready', async function() { agenda.every('2 minutes', 'syncMatriculas', {}, DEFAULT_OPTIONS) + agenda.every('5 days', 'clearAgendaDatabase', {}, DEFAULT_OPTIONS) agenda.start() }) } \ No newline at end of file diff --git a/app/agenda/processors/clearAgendaDatabase.js b/app/agenda/processors/clearAgendaDatabase.js new file mode 100644 index 00000000..95806455 --- /dev/null +++ b/app/agenda/processors/clearAgendaDatabase.js @@ -0,0 +1,28 @@ +const app = require('@/app') +const MongoClient = require('mongodb') +const moment = require('moment') + +module.exports = function (agenda) { + agenda.define('clearAgendaDatabase', app.helpers.agenda.wrap(clearAgendaDatabase)) +} + +async function clearAgendaDatabase () { + try { + const client = await MongoClient.connect( + app.config.MONGO_URL, + { useNewUrlParser: true, useUnifiedTopology: true }, + ) + + + // Keep the past 4 months (quad) of agenda history + const cutoffDate = moment().subtract(4, 'months').toDate() + const agendaCollection = client.db('ufabc-matricula').collection('agenda') + await agendaCollection.deleteMany({ lastRunAt: { $lte: cutoffDate }}) + + await client.close() + } catch(e) { + console.log(e) + } +} + +module.exports.clearAgendaDatabase = clearAgendaDatabase \ No newline at end of file