0.2.3 • Published 3 years ago

@pyramid-drama/nestjs-cron v0.2.3

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

alt cover

Fork from this repository

npm version npm version

NestJS cron package allows you easily setup cron for your controllers or services.

npm i @pyramid-drama/nestjs-cron

To use cron, decorate your class with @Scheduled() and method with @Cron(). Your class has to be a provider or a controller that is declared in any module.

import { Cron, Scheduled } from 'nestjs-cron';

@Injectable()
@Scheduled()
export class MyClass {
	@Cron('* * * * * *')
	async myMethod() {
		//...
	}
}

'* * * * * *' - is a standart cron notation. In this example it will be triggered every second. Additionaly you can use options:

@Cron('* * * * * *', {
	delay: 10000,
	launchOnInit: true,
	sync: true,
})
async myMethod() {
	//...
}
  • delay - Launch job after a specified time (in milliseconds)
  • launchOnInit - Launch job one time right after start
  • sync - Wait for method to finish before launching next tick if your function takes more time than cron.

Cron Intercepter

To intercept cron you can use @CronIntercepter decorator. You pass class that implements CronIntercepterClass as a parameter. It has one intercept method that returns Promise<boolean>.

export class MyIntercepter implements CronIntercepterClass {
	async intercept() {
		return false;
	}
}

Usage example:

@Scheduled()
@Injectable()
export class AppService {
	@CronIntercepter(MyIntercepter)
	@Cron('* * * * * *')
	getHello() {
		console.log('test');
	}
}

If intercept method returns true your cron will run as planned. If false method run will be skipped.