* feat: update prettier configuration for print width * chore: apply code formatting to entire repository * fix: remove build files * fix: format issue --------- Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
import { objectEntries } from "@homarr/common";
|
|
|
|
import type { createCronJob } from "./creator";
|
|
import { jobRegistry } from "./registry";
|
|
|
|
type Jobs = Record<string, ReturnType<ReturnType<typeof createCronJob>["withCallback"]>>;
|
|
|
|
export const createJobGroup = <TJobs extends Jobs>(jobs: TJobs) => {
|
|
for (const [name, job] of objectEntries(jobs)) {
|
|
if (typeof name !== "string") continue;
|
|
jobRegistry.set(name, {
|
|
name,
|
|
expression: job._expression,
|
|
active: false,
|
|
task: job._task,
|
|
});
|
|
}
|
|
|
|
return {
|
|
start: (name: keyof TJobs) => {
|
|
const job = jobRegistry.get(name as string);
|
|
if (!job) return;
|
|
job.active = true;
|
|
job.task.start();
|
|
},
|
|
startAll: () => {
|
|
for (const job of jobRegistry.values()) {
|
|
job.active = true;
|
|
job.task.start();
|
|
}
|
|
},
|
|
stop: (name: keyof TJobs) => {
|
|
const job = jobRegistry.get(name as string);
|
|
if (!job) return;
|
|
job.active = false;
|
|
job.task.stop();
|
|
},
|
|
stopAll: () => {
|
|
for (const job of jobRegistry.values()) {
|
|
job.active = false;
|
|
job.task.stop();
|
|
}
|
|
},
|
|
};
|
|
};
|