| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import BaseModule from "./BaseModule";
- import Job from "./Job";
- import JobQueue from "./JobQueue";
- import { Log } from "./LogBook";
- import { SessionSchema } from "./schemas/session";
- import { JobOptions } from "./types/JobOptions";
- import { Jobs, Modules } from "./types/Modules";
- export default class JobContext {
- public readonly job: Job;
- public readonly jobQueue: JobQueue;
- private session?: SessionSchema;
- public constructor(job: Job, session?: SessionSchema) {
- this.job = job;
- this.jobQueue = JobQueue.getPrimaryInstance();
- this.session = session;
- }
- /**
- * 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);
- }
- public getSession() {
- return this.session;
- }
- public setSession(session?: SessionSchema) {
- this.session = session;
- }
- /**
- * 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, {
- session: this.session,
- ...(options ?? {})
- }).execute();
- }
- }
|