1import type * as deadline from "@distilled.cloud/aws/deadline";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Queue } from "./Queue.ts";
5
6/**
7 * Runtime binding for `deadline:SearchJobs`.
8 *
9 * Searches the jobs of the bound {@link Queue} with filter and sort
10 * expressions (name, status, user, parameters, dates). The queue's
11 * `farmId`/`queueIds: [queueId]` are injected from the binding. Provide the
12 * implementation with `Effect.provide(AWS.Deadline.SearchJobsHttp)`.
13 * ### Monitoring Jobs
14 * **Example:** Find Failed Jobs
15 * ```typescript
16 * // init — bind the operation to the queue
17 * const searchJobs = yield* AWS.Deadline.SearchJobs(queue);
18 *
19 * // runtime
20 * const { jobs } = yield* searchJobs({
21 * itemOffset: 0,
22 * filterExpressions: {
23 * operator: "AND",
24 * filters: [
25 * {
26 * stringFilter: {
27 * name: "TASK_RUN_STATUS",
28 * operator: "EQUAL",
29 * value: "FAILED",
30 * },
31 * },
32 * ],
33 * },
34 * });
35 * ```
36 *
37 * @binding
38 */
39export interface SearchJobs extends Binding.Service<
40 SearchJobs,
41 "AWS.Deadline.SearchJobs",
42 (
43 queue: Queue,
44 ) => Effect.Effect<
45 (
46 request: Omit<deadline.SearchJobsRequest, "farmId" | "queueIds">,
47 ) => Effect.Effect<deadline.SearchJobsResponse, deadline.SearchJobsError>
48 >
49> {}
50export const SearchJobs = Binding.Service<SearchJobs>(
51 "AWS.Deadline.SearchJobs",
52);