mirror of
https://github.com/nicotsx/ironmount.git
synced 2025-12-10 12:10:51 +01:00
* refactor: unify backend and frontend servers * refactor: correct paths for openapi & drizzle * refactor: move api-client to client * fix: drizzle paths * chore: fix linting issues * fix: form reset issue
32 lines
875 B
TypeScript
32 lines
875 B
TypeScript
import { intervalToDuration } from "date-fns";
|
|
|
|
export const getCronExpression = (frequency: string, dailyTime?: string, weeklyDay?: string): string => {
|
|
if (frequency === "hourly") {
|
|
return "0 * * * *";
|
|
}
|
|
|
|
if (!dailyTime) {
|
|
dailyTime = "02:00";
|
|
}
|
|
|
|
const [hours, minutes] = dailyTime.split(":");
|
|
|
|
if (frequency === "daily") {
|
|
return `${minutes} ${hours} * * *`;
|
|
}
|
|
|
|
return `${minutes} ${hours} * * ${weeklyDay ?? "0"}`;
|
|
};
|
|
|
|
export const formatDuration = (seconds: number) => {
|
|
const duration = intervalToDuration({ start: 0, end: seconds * 1000 });
|
|
const parts: string[] = [];
|
|
|
|
if (duration.days) parts.push(`${duration.days}d`);
|
|
if (duration.hours) parts.push(`${duration.hours}h`);
|
|
if (duration.minutes) parts.push(`${duration.minutes}m`);
|
|
if (duration.seconds || parts.length === 0) parts.push(`${duration.seconds || 0}s`);
|
|
|
|
return parts.join(" ");
|
|
};
|