linagora/openpaas-esn

View on GitHub
modules/linagora.esn.user.status/backend/lib/cron.js

Summary

Maintainability
A
1 hr
Test Coverage
'use strict';

const JOB_CRON_EXPRESSION = require('./constants').JOB_CRON_EXPRESSION;

module.exports = function(dependencies, lib) {

  const cron = dependencies('cron');
  const logger = dependencies('logger');
  const websocket = require('./websocket')(dependencies, lib);

  return {
    start
  };

  function start() {
    cron.submit('User status job', JOB_CRON_EXPRESSION, job, onJobComplete, (err, job) => {
      if (err) {
        return logger.error('Error while submitting the status job', err);
      }
      logger.debug('Status Job has been submitted', job);
    });
  }

  function job(callback) {
    websocket.updateLastActiveFromWebsocketConnections().then(result => {
      logger.debug('User status update job returned', result);
      callback(null, result);
    }, err => {
      logger.error('User status update job returned error', err);
      callback(err);
    });
  }

  function onJobComplete() {
    logger.debug('User status job is complete');
  }
};