@pyramid-drama/nestjs-cron
v0.2.3
Published
NestJS CRON module that allows you to easily setup CRON for your controllers or services
Downloads
4
Readme
Fork from this repository
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.