From e3dd80f9d4f46b7243bdaf9331d813334dc0fd1f Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 20 Apr 2026 14:31:56 +0100 Subject: [PATCH] refactor: share cron list page types --- src/cron/service-contract.ts | 24 ++---------------------- src/cron/service/list-page-types.ts | 24 ++++++++++++++++++++++++ src/cron/service/ops.ts | 29 +++++++---------------------- 3 files changed, 33 insertions(+), 44 deletions(-) create mode 100644 src/cron/service/list-page-types.ts diff --git a/src/cron/service-contract.ts b/src/cron/service-contract.ts index 81f47d5018d..4b96ded1c70 100644 --- a/src/cron/service-contract.ts +++ b/src/cron/service-contract.ts @@ -1,3 +1,4 @@ +import type { CronListPageOptions, CronListPageResult } from "./service/list-page-types.js"; import type { CronAddInput, CronAddResult, @@ -12,28 +13,7 @@ import type { } from "./service/state.js"; import type { CronJob } from "./types.js"; -type CronJobsEnabledFilter = "all" | "enabled" | "disabled"; -type CronJobsSortBy = "nextRunAtMs" | "updatedAtMs" | "name"; -type CronSortDir = "asc" | "desc"; - -export type CronListPageOptions = { - includeDisabled?: boolean; - limit?: number; - offset?: number; - query?: string; - enabled?: CronJobsEnabledFilter; - sortBy?: CronJobsSortBy; - sortDir?: CronSortDir; -}; - -export type CronListPageResult = { - jobs: CronJob[]; - total: number; - offset: number; - limit: number; - hasMore: boolean; - nextOffset: number | null; -}; +export type { CronListPageOptions, CronListPageResult } from "./service/list-page-types.js"; export type CronWakeResult = { ok: true } | { ok: false }; diff --git a/src/cron/service/list-page-types.ts b/src/cron/service/list-page-types.ts new file mode 100644 index 00000000000..da76033c51d --- /dev/null +++ b/src/cron/service/list-page-types.ts @@ -0,0 +1,24 @@ +import type { CronJob } from "../types.js"; + +export type CronJobsEnabledFilter = "all" | "enabled" | "disabled"; +export type CronJobsSortBy = "nextRunAtMs" | "updatedAtMs" | "name"; +export type CronSortDir = "asc" | "desc"; + +export type CronListPageOptions = { + includeDisabled?: boolean; + limit?: number; + offset?: number; + query?: string; + enabled?: CronJobsEnabledFilter; + sortBy?: CronJobsSortBy; + sortDir?: CronSortDir; +}; + +export type CronListPageResult = { + jobs: TJobs; + total: number; + offset: number; + limit: number; + hasMore: boolean; + nextOffset: number | null; +}; diff --git a/src/cron/service/ops.ts b/src/cron/service/ops.ts index 3cfd8243aa4..067cf35735f 100644 --- a/src/cron/service/ops.ts +++ b/src/cron/service/ops.ts @@ -21,6 +21,13 @@ import { recomputeNextRuns, recomputeNextRunsForMaintenance, } from "./jobs.js"; +import type { + CronJobsEnabledFilter, + CronJobsSortBy, + CronListPageOptions, + CronListPageResult, + CronSortDir, +} from "./list-page-types.js"; import { locked } from "./locked.js"; import type { CronServiceState } from "./state.js"; import { ensureLoaded, persist, warnIfDisabled } from "./store.js"; @@ -35,28 +42,6 @@ import { wake, } from "./timer.js"; -type CronJobsEnabledFilter = "all" | "enabled" | "disabled"; -type CronJobsSortBy = "nextRunAtMs" | "updatedAtMs" | "name"; -type CronSortDir = "asc" | "desc"; - -export type CronListPageOptions = { - includeDisabled?: boolean; - limit?: number; - offset?: number; - query?: string; - enabled?: CronJobsEnabledFilter; - sortBy?: CronJobsSortBy; - sortDir?: CronSortDir; -}; - -export type CronListPageResult = { - jobs: ReturnType; - total: number; - offset: number; - limit: number; - hasMore: boolean; - nextOffset: number | null; -}; function mergeManualRunSnapshotAfterReload(params: { state: CronServiceState; jobId: string;