wavezync / nestjs-pgboss

State of Art PG Boss integration with NestJS
https://wavezync.com
MIT License
3 stars 0 forks source link
nestjs nestjs-backend nestjs-pgboss pg-boss pgboss postgresql postgresql-database

@wavezync/nestjs-pgboss

Use pg-boss in your Nest.js app!

Build Status NPM Version License

## Installation ```bash npm install pg-boss @wavezync/nestjs-pgboss ``` ## Usage ### Setup To begin using `@wavezync/nestjs-pgboss`, initialize the root module: ```ts import { PGBossModule } from "@wavezync/nestjs-pgboss"; // app.module.ts @Module({ imports: [ PgBossModule.forRootAsync({ imports: [ConfigModule], useFactory: async (configService: ConfigService) => ({ connectionString: configService.get('DATABASE_URL'), }), inject: [ConfigService], }), ], }) export class AppModule {} ``` #### Schedule a job using `PgBossService` ```ts import { Injectable } from '@nestjs/common'; import { PgBossService } from '@wavezync/nestjs-pgboss'; @Injectable() export class JobSchedulerService { constructor(private readonly pgBossService: PgBossService) {} async scheduleJob() { await this.pgBossService.scheduleJob('my-job', { key: 'value' }); } } ``` #### Access `boss` Directly You can access the `PgBoss` instance directly via `pgBossService.boss` #### Handle jobs using the `@Job` decorator ```ts import { Injectable, Logger } from '@nestjs/common'; import { Job } from '@wavezync/nestjs-pgboss'; @Injectable() export class MyJobHandler { private readonly logger = new Logger(MyJobHandler.name); @Job('my-job') async handleMyJob(job: { data: any }) { this.logger.log('Handling job with data:', job.data); } } ``` #### Handle cron jobs using the `@CronJob` decorator ```ts import { Injectable, Logger } from '@nestjs/common'; import { PgBossService, CronJob } from '@wavezync/nestjs-pgboss'; @Injectable() export class MyCronJobService { private readonly logger = new Logger(MyCronJobService.name); @CronJob('my-cron-job', '0 * * * *', { priority: 1 }) async handleCron() { this.logger.log('Executing cron job: my-cron-job'); } } ``` ## Test ```bash # unit tests $ npm run test ``` ## License `@wavezync/nestjs-pgboss` is [MIT licensed](LICENSE)