Skip to content
This repository was archived by the owner on Jul 27, 2023. It is now read-only.

Dexare/cron

Folders and files

NameName
Last commit message
Last commit date
Jun 22, 2021
Jun 2, 2021
Jul 6, 2021
Jun 2, 2021
Jun 2, 2021
Jun 2, 2021
Jun 2, 2021
Jun 2, 2021
Jun 2, 2021
Jun 2, 2021
Jun 2, 2021
Jul 6, 2021
Jun 2, 2021
Jul 6, 2021
May 11, 2023
Jun 2, 2021

Repository files navigation

A Dexare module for managing crons.

npm install @dexare/cron
const { DexareClient } = require('dexare');
const CronModule = require('@dexare/cron');

const config = {
  // All props in this config are optional, defaults are shown unless told otherwise
  cron: {
    // The folder path to load upon loading the module, defaults to none
    // When registering crons in a folder, they must end with `.cron.js`
    loadFolder: './src/crons'
  }
}

const client = new DexareClient(config);
client.loadModules(CronModule);

const cron = client.modules.get('cron');
// You can choose to register crons from folders
cron.registerFromFolder('./src/crons');
// Or register a cron directly
cron.register({
  name: 'example-cron',
  time: '0 * * * *', // Hourly
  onTick: (client, job) => {
    console.log(`This cron executed at ${job.lastDate}`)
  }
});

Cron File Example

This example cron flushes throttle data within memory data managers. Options are the same as CronJob's constructor parameters, except a new parameter name must be given to identify the job, and context will not be used in the construction of a new cron job.

// ./src/crons/flushThrottles.cron.js

module.exports = {
  name: 'flush-throttles',
  time: '0 * * * *', // Hourly
  onTick: (client, job) => {
    this.client.data.flushThrottles()
  }
}