1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import BaseModule from "./BaseModule";
- import Job from "./Job";
- import JobQueue from "./JobQueue";
- import { Log } from "./LogBook";
- import { JobOptions } from "./types/JobOptions";
- import { Jobs, Modules } from "./types/Modules";
- export default class JobContext {
- public readonly job: Job;
- public readonly jobQueue: JobQueue;
- public constructor(job: Job) {
- this.job = job;
- this.jobQueue = JobQueue.getPrimaryInstance();
- }
- /**
- * Log a message in the context of the current job, which automatically sets the category and data
- *
- * @param log - Log message or object
- */
- public log(log: string | Omit<Log, "timestamp" | "category">) {
- return this.job.log(log);
- }
- /**
- * executeJob - Execute a job
- *
- * @param moduleName - Module name
- * @param jobName - Job name
- * @param params - Params
- */
- public async executeJob<
- ModuleNameType extends keyof Jobs & keyof Modules,
- JobNameType extends keyof Jobs[ModuleNameType] &
- keyof Omit<Modules[ModuleNameType], keyof BaseModule>,
- PayloadType extends "payload" extends keyof Jobs[ModuleNameType][JobNameType]
- ? Jobs[ModuleNameType][JobNameType]["payload"] extends undefined
- ? Record<string, never>
- : Jobs[ModuleNameType][JobNameType]["payload"]
- : Record<string, never>,
- ReturnType = "returns" extends keyof Jobs[ModuleNameType][JobNameType]
- ? Jobs[ModuleNameType][JobNameType]["returns"]
- : never
- >(
- moduleName: ModuleNameType,
- jobName: JobNameType,
- payload: PayloadType,
- options?: JobOptions
- ): Promise<ReturnType> {
- return new Job(
- jobName.toString(),
- moduleName,
- payload,
- options
- ).execute();
- }
- }
|