1import type * as scheduler from "@distilled.cloud/aws/scheduler";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { ScheduleGroup } from "./ScheduleGroup.ts";
5
6export interface GetScheduleRequest extends Omit<
7 scheduler.GetScheduleInput,
8 "GroupName"
9> {}
10
11/**
12 * Runtime binding for `scheduler:GetSchedule`.
13 *
14 * Pairs with {@link CreateSchedule} for the dynamic-scheduling pattern: a
15 * deployed Lambda inspects schedules it minted at runtime (is the reminder
16 * still pending?). Optionally scoped to a `ScheduleGroup`; without one it
17 * covers the default group.
18 * ### Reading Schedules At Runtime
19 * **Example:** Check A Pending Reminder
20 * ```typescript
21 * const getSchedule = yield* AWS.Scheduler.GetSchedule();
22 *
23 * // runtime
24 * const schedule = yield* getSchedule({ Name: `reminder-${userId}` });
25 * console.log(schedule.State, schedule.ScheduleExpression);
26 * ```
27 *
28 * **Example:** Scope Reads To A Schedule Group
29 * ```typescript
30 * const getSchedule = yield* AWS.Scheduler.GetSchedule(group);
31 * ```
32 *
33 * @binding
34 */
35export interface GetSchedule extends Binding.Service<
36 GetSchedule,
37 "AWS.Scheduler.GetSchedule",
38 (
39 group?: ScheduleGroup,
40 ) => Effect.Effect<
41 (
42 request: GetScheduleRequest,
43 ) => Effect.Effect<scheduler.GetScheduleOutput, scheduler.GetScheduleError>
44 >
45> {}
46export const GetSchedule = Binding.Service<GetSchedule>(
47 "AWS.Scheduler.GetSchedule",
48);