FaasJS
Home
  • Guide
  • Documents
  • Templates
  • Changelog
  • Ecosystem

    • Docker Images
  • Github
  • Contributing
  • Sponsor
  • Security
Home
  • Guide
  • Documents
  • Templates
  • Changelog
  • Ecosystem

    • Docker Images
  • Github
  • Contributing
  • Sponsor
  • Security

Documents / @faasjs/jobs / defineJob

Function: defineJob()

defineJob<TSchema, TContext, THandler>(options): Job<TSchema, TContext, Awaited<ReturnType<THandler>>>

Define a PostgreSQL-backed background job.

The returned job can be loaded from a .job.ts file by startJobWorker and startJobScheduler. When schema is provided, handler params are inferred from the schema output type. Without schema, handler params are typed as Record<string, never>.

Type Parameters

TSchema

TSchema extends ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> | undefined = undefined

TContext

TContext = any

THandler

THandler extends (data) => any = (data) => any

Parameters

options

Omit<DefineJobOptions<TSchema, TContext, Awaited<ReturnType<THandler>>>, "handler"> & object

Job schema, defaults, cron rules, retry strategy, and handler.

Returns

Job<TSchema, TContext, Awaited<ReturnType<THandler>>>

A Job instance with normalized queue, retry, and cron metadata.

Example

import { defineJob } from '@faasjs/jobs'
import { z } from '@faasjs/utils'

export default defineJob({
  schema: z.object({ userId: z.string() }),
  async handler({ params, job, attempt, logger }) {
    logger.info('Sync %s from job %s attempt %s', params.userId, job.id, attempt)
  },
})