@prohst-tech/nest-pg-boss
v0.5.5
Published
Use pg-boss in your NestJS app
Downloads
1,423
Readme
@prohst-tech/nest-pg-boss
Installation
npm install @prohst-tech/nest-pg-bossUsage
Setup
To begin using @prohst-tech/nest-pg-boss, initialize the root module:
import { PGBossModule } from "@prohst-tech/nest-pg-boss";
// app.module.ts
@Module({
imports: [
PGBossModule.forRootAsync({
application_name: "default",
useFactory: (config: ConfigService) => ({
// Connection details
host: config.get<string>("DB_HOST"),
user: config.get<string>("DB_USERNAME"),
password: config.get<string>("DB_PASSWORD"),
database: config.get<string>("DB_DATABASE"),
schema: "public",
max: config.get<number>("DB_POOL_MAX"),
}),
inject: [ConfigService],
}),
],
})
export class AppModule {}For a list of available settings, check out the pg-boss docs.
Jobs
// jobs.ts
import { createJob } from "@prohst-tech/nest-pg-boss"
interface IFoobarJobData {
foo: string
bar: boolean
}
const FoobarJob = createJob<IFoobarJobData>("foobar")Create new Jobs
// module.ts
import { PGBossModule } from "@prohst-tech/nest-pg-boss";
import { FoobarService } from "./service.ts";
@Module({
imports: PGBossModule.forJobs([FoobarJob]),
providers: [FoobarService]
})
class FoobarModule {}
// service.ts
import { JobService } from "@prohst-tech/nest-pg-boss";
import { FoobarJob, IFoobarJobData } from "./jobs.ts";
@Injectable()
class FoobarService {
constructor(
@FoobarJob.Inject()
private readonly foobarJobService: JobService<IFoobarJobData>,
) {}
async sendJob() {
await this.foobarJobService.send({ foo: "oof", bar: true });
}
}Process Jobs
Jobs can be processed by using the @FoobarJob.Handle() decorator.
// service.ts
@Injectable()
class FoobarService {
/* ... */
@FoobarJob.Handle()
async handleJob(job: Job<FoobarJobData>) {
// do something
}
}You can optionally pass an object with WorkOptions to .Handle():
@FoobarJob.Handle({ teamSize: 10, teamConcurrency: 2 })Test
# unit tests
$ npm run test
# e2e tests
$ npm run test:e2e
# test coverage
$ npm run test:covLicense
@prohst-tech/nest-pg-boss is MIT licensed.
