UNPKG

@penkov/tasks_queue

Version:

A lightweight PostgreSQL-backed task queue system with scheduling, retries, backoff strategies, and priority handling. Designed for efficiency and observability in modern Node.js applications.

41 lines (40 loc) 1.57 kB
import { none, option } from "scats"; import { ActiveChildState } from "./active-child-state.js"; export class MultiStepPayload { activeChild; workflowPayload; userPayload; static forUserPayload(userPayload) { return new MultiStepPayload(none, {}, userPayload); } constructor(activeChild, workflowPayload, userPayload) { this.activeChild = activeChild; this.workflowPayload = workflowPayload; this.userPayload = userPayload; } copy(o) { return new MultiStepPayload(option(o.activeChild).getOrElseValue(this.activeChild), option(o.workflowPayload).getOrElseValue(this.workflowPayload), option(o.userPayload).getOrElseValue(this.userPayload)); } get toJson() { const res = { workflowPayload: this.workflowPayload, userPayload: this.userPayload, }; this.activeChild.foreach((activeChild) => { res["activeChild"] = activeChild.toJson; }); return res; } static fromJson(j) { const o = option(j).map((x) => x); return new MultiStepPayload(o.flatMap((x) => ActiveChildState.fromJson(x["activeChild"]).match({ some: (activeChild) => option(activeChild), none: () => option(x["activeChildId"]).map((taskId) => new ActiveChildState(Number(taskId))), })), o .flatMap((x) => option(x["workflowPayload"])) .map((x) => x) .getOrElseValue({}), o .flatMap((x) => option(x["userPayload"])) .getOrElseValue({})); } }