jobs/clear.js

'use strict';

const job = require('../parts/jobs/job.js'),
    log = require('../utils/log.js')('job:clear');

/** Class for job of clearing old jobs **/
class ClearJob extends job.Job {
    /**
     * Run the job
     * @param {Db} db connection
     * @param {done} done callback
     */
    run(db, done) {
        log.d('Clearing jobs ...');
        var query = {
            $and: [
                {status: {$in: [job.STATUS.DONE, job.STATUS.CANCELLED]}},
                {
                    $or: [
                        {finished: {$exists: false}},
                        {finished: {$lt: Date.now() - 60 * 60 * 24 * 1000}},
                        {finished: null}
                    ]
                }
            ]
        };

        db.collection('jobs').deleteMany(query, (err, result) => {
            if (err) {
                log.e('Error while clearing jobs: ', err);
            }
            else {
                log.d('Done clearing old jobs done before %j:', query.$and[1].$or[1].finished.$lt, result.deletedCount);
            }
            done(err);
        });
    }
}

module.exports = ClearJob;