UNPKG

express-post-task-scheduler

Version:

A lightweight npm package to create and manage scheduled tasks using Express middleware. Configure tasks via POST requests and execute them at specified times seamlessly.

35 lines (34 loc) 1.53 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.scheduleTask = scheduleTask; const node_schedule_1 = __importDefault(require("node-schedule")); const scheduleJobs_1 = require("./scheduleJobs"); const db_1 = require("./utils/db"); const logger_1 = require("./utils/logger"); /** * Schedule a task and wait for executing, return the job * @param date the date time to start task * @param data array with the params for task, for example: [{ id:1, value:1 }, { id:2, value:2 }, { id:3, value:3 }] * @param executor the callback function to execute, for example: (index: number) => { console.log(index) } */ function scheduleTask(date, data, executor, taskId) { const job = node_schedule_1.default.scheduleJob(date, async () => { const db = db_1.DB.init(); await db.startTask(taskId); for (const { id: itemId, value: itemValue } of data) { try { await executor(itemValue); await db.markItemSuccessful(taskId, itemId, JSON.stringify(itemValue)); } catch (e) { logger_1.logger.error(e?.message); await db.markItemFailed(taskId, itemId, JSON.stringify(itemValue), e?.message || "unknown error"); } } await db.finishTask(taskId); }); scheduleJobs_1.ScheduleJobs.appendJob(taskId, job, executor); }