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