1import type * as batch from "@distilled.cloud/aws/batch";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { JobQueue } from "./JobQueue.ts";
5
6export interface DescribeJobsRequest extends batch.DescribeJobsRequest {}
7
8/**
9 * Describe submitted AWS Batch jobs (status polling from runtime code).
10 * `batch:DescribeJobs` has no resource-level IAM, so the policy is
11 * service-scoped; the queue anchors the binding's identity.
12 *
13 * ### Describing Jobs
14 * **Example:** Poll a job's status
15 * ```typescript
16 * const describeJobs = yield* Batch.DescribeJobs(queue);
17 * const { jobs } = yield* describeJobs({ jobs: [jobId] });
18 * const status = jobs?.[0]?.status;
19 * ```
20 *
21 * @binding
22 */
23export interface DescribeJobs extends Binding.Service<
24 DescribeJobs,
25 "AWS.Batch.DescribeJobs",
26 (
27 queue: JobQueue,
28 ) => Effect.Effect<
29 (
30 request: DescribeJobsRequest,
31 ) => Effect.Effect<batch.DescribeJobsResponse, batch.DescribeJobsError>
32 >
33> {}
34export const DescribeJobs = Binding.Service<DescribeJobs>(
35 "AWS.Batch.DescribeJobs",
36);