@sidequest/engine
Version:
@sidequest/engine is the core engine of SideQuest, a distributed background job processing system for Node.js and TypeScript.
36 lines (33 loc) • 1.5 kB
JavaScript
import { logger, UniquenessFactory } from '@sidequest/core';
import { inspect } from 'util';
/**
* Handles applying job transitions and updating jobs in the backend.
*/
class JobTransitioner {
/**
* Applies a transition to a job and updates it in the backend.
*
* This method checks if the transition should run based on the job's current state.
* If applicable, it applies the transition and updates the job in the backend.
*
* @param jobData The job data to update.
* @param transition The job transition to apply.
* @returns A promise resolving to the updated job data.
*/
static apply(backend, jobData, transition) {
if (!transition.shouldRun(jobData)) {
logger("JobTransitioner").debug(`Transition ${transition.constructor.name} not applicable for job ${jobData.id}. Returning original job data.`);
return jobData;
}
logger("JobTransitioner").debug(`Applying transition ${transition.constructor.name} to job ${jobData.id}`);
const newData = transition.apply(jobData);
if (newData.uniqueness_config) {
const uniqueness = UniquenessFactory.create(newData.uniqueness_config);
newData.unique_digest = uniqueness.digest(jobData);
}
logger("JobTransitioner").debug(`Updating with new job data: ${inspect(newData)}`);
return backend.updateJob(newData);
}
}
export { JobTransitioner };
//# sourceMappingURL=job-transitioner.js.map