31 lines
782 B
JavaScript
31 lines
782 B
JavaScript
import cron from 'node-cron';
|
|
|
|
const task_id_to_cron_job = new Map();
|
|
|
|
export function stop_all_cron_jobs() {
|
|
for (const job of task_id_to_cron_job.values()) {
|
|
job.stop();
|
|
}
|
|
task_id_to_cron_job.clear();
|
|
}
|
|
|
|
export function upsert_cron_job(schedule_task_id, cron_expression, on_tick) {
|
|
const existing = task_id_to_cron_job.get(schedule_task_id);
|
|
if (existing) {
|
|
existing.stop();
|
|
task_id_to_cron_job.delete(schedule_task_id);
|
|
}
|
|
|
|
const job = cron.schedule(cron_expression, on_tick, { scheduled: true });
|
|
task_id_to_cron_job.set(schedule_task_id, job);
|
|
}
|
|
|
|
export function remove_cron_job(schedule_task_id) {
|
|
const job = task_id_to_cron_job.get(schedule_task_id);
|
|
if (!job) {
|
|
return;
|
|
}
|
|
job.stop();
|
|
task_id_to_cron_job.delete(schedule_task_id);
|
|
}
|