Повестка дня JS | Есть ли способ обновить свойства данных задания?

Я создаю службу для создания PDF-файла с помощью Agenda Job/Queue и хотите обновить свойства задания, т. е. status,progress, поскольку обработчик выполнил код для создания PDF-файла.

Пример:

Определение работы:

agenda.define('generatePdf', async (job) => {
   const { unique_id, status, progress } = job.attrs.data;
   
   ...        
   await functionThatGeneratesThePDF(...);
   ...

});

Запуск рабочего процессора повестки дня:

agenda.start()

Создание/планирование задания:

let job = agenda.create('generatePdf',  { status: "CREATED", progress: 0, unique_id: <unique_id> });
job.save()

Теперь, по мере выполнения задания, я хочу обновить state и progress, но нет никакого API, который позволил бы мне это сделать.

Я попытался использовать .unique API, как было предложено здесь но проблемы с этим:

  • Я не могу обновить определенные свойства data, т.е. status, так как это удалит все остальные свойства, т.е. unique_id, progress

  • Я не могу использовать свойство, которое я указываю в уникальном свойстве данных задания.

           agenda
             .create(job.attrs.name, {status : "COMPLETED"}) <---- can not use unique_id as the data.
             .unique({ "data.unique_id": job.attrs.data.unique_id })
             .save();
    

Если кто-то еще столкнулся с этим или сделал что-то подобное, пожалуйста, укажите мне правильное направление. Спасибо.


person being_j    schedule 29.07.2021    source источник