feat: add tasks page (#692)
This commit is contained in:
10
packages/cron-job-status/src/index.ts
Normal file
10
packages/cron-job-status/src/index.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { createSubPubChannel } from "../../redis/src/lib/channel";
|
||||
|
||||
export interface TaskStatus {
|
||||
name: string;
|
||||
status: "running" | "idle";
|
||||
lastExecutionTimestamp: string;
|
||||
lastExecutionStatus: "success" | "error" | null;
|
||||
}
|
||||
|
||||
export const createCronJobStatusChannel = (name: string) => createSubPubChannel<TaskStatus>(`cron-job-status:${name}`);
|
||||
38
packages/cron-job-status/src/publisher.ts
Normal file
38
packages/cron-job-status/src/publisher.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import { createCronJobStatusChannel } from ".";
|
||||
|
||||
export const beforeCallbackAsync = async (name: string) => {
|
||||
const channel = createCronJobStatusChannel(name);
|
||||
|
||||
const previous = await channel.getLastDataAsync();
|
||||
|
||||
await channel.publishAsync({
|
||||
name,
|
||||
lastExecutionStatus: previous?.lastExecutionStatus ?? null,
|
||||
lastExecutionTimestamp: new Date().toISOString(),
|
||||
status: "running",
|
||||
});
|
||||
};
|
||||
|
||||
export const onCallbackSuccessAsync = async (name: string) => {
|
||||
const channel = createCronJobStatusChannel(name);
|
||||
|
||||
const previous = await channel.getLastDataAsync();
|
||||
await channel.publishAsync({
|
||||
name,
|
||||
lastExecutionStatus: "success",
|
||||
lastExecutionTimestamp: previous?.lastExecutionTimestamp ?? new Date().toISOString(),
|
||||
status: "idle",
|
||||
});
|
||||
};
|
||||
|
||||
export const onCallbackErrorAsync = async (name: string, _error: unknown) => {
|
||||
const channel = createCronJobStatusChannel(name);
|
||||
|
||||
const previous = await channel.getLastDataAsync();
|
||||
await channel.publishAsync({
|
||||
name,
|
||||
lastExecutionStatus: "error",
|
||||
lastExecutionTimestamp: previous?.lastExecutionTimestamp ?? new Date().toISOString(),
|
||||
status: "idle",
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user