1.3.2 • Published 2 years ago

@ose4g/cron-manager v1.3.2

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

@ose4g/cron-manager

npm (scoped) npm npms.io (final) npms.io (final) Libraries.io dependency status for latest release, scoped npm package

This package is a package to manage cron-jobs in a node.js Typescript application. It is built using node-cron and reflect-metadata packages

Installation

npm i @ose4g/cron-manager

Usage

The package works with decorators and hance the following lines should be in your tsconfig.json file

"experimentalDecorators": true,
"emitDecoratorMetadata": true,

Annotate your Job class with @cronGroup and annotate each handler with @cronJob

import { cronGroup, cronJob, CronManager } from "@ose4g/cron-manager";


@cronGroup('jobs')
class JobService{
    constructor(private name:string){}

    @cronJob('*/1 * * * * *','print_name_func')
    printName(){
        console.log(this.name)
    }
}

@cronGroup('auth')
class AuthService{
    constructor(private users: any[]){}

    @cronJob('* * * * * *','my_unban_func')
    unbanUser(){
        console.log(`There are ${this.users.length} users in the application`)
    }
}
const manager = new CronManager();

const jobService = new JobService('Ose4g');
const authJob = new AuthService([])

manager.register(JobService, jobService)
manager.register(AuthService,authJob)


manager.startAll() //starts all jobs
manager.stopAll() //stops all jobs

//starting and stopping for specific groups
manager.startGroup('jobs') //starts only jobs in the class with tag equal to jobs
manager.stopGroup('jobs') //stops only jobs in the class with grouptag equal to jobs

//starting and stopping for specific handlers or jobs
manager.startHandler('my_unban_func') //starts the single job with tag equal to my_unban_func
manager.stopHandler('my_unban_func') //stop the single job with tag equal to my_unban_func

manager.getGroups() // returns ['auth','jobs']
manager.getHandlers() //returns ['my_unban_func','print_name_func']

Methods

  • @cronGroup( groupTag? : string )
    params
    • groupTag: tag to uniquely identify a a set of jobs. The same groupTag can be used for multiple classes.
  • @cronJob( cronExpression: string, handlerTag?: string)
    params
    • cronExpression: Expression describing the cron interval. The package uses node-cron in the background and hence the expression description is the same.
    • handlerTag: unique string to identify a single job. The job can be started and stopped using that tag.
  • manager.register(Class:Function, instance: any)
    It registers an instance of a class to the cron job manager.
    params
    • Class: The class we're registering
    • instance: An instance of that class
1.3.2

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.2.1

2 years ago

1.2.0

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.0

2 years ago