1import * as Effect from "effect/Effect";
2import * as Layer from "effect/Layer";
3import { makeAmpWorkspaceHttpBinding } from "./BindingHttp.ts";
4import {
5 GetMetricMetadata,
6 type GetMetricMetadataRequest,
7} from "./GetMetricMetadata.ts";
8import type { PrometheusMetricMetadata } from "./PrometheusTypes.ts";
9
10export const GetMetricMetadataHttp = Layer.effect(
11 GetMetricMetadata,
12 makeAmpWorkspaceHttpBinding({
13 name: "GetMetricMetadata",
14 iamActions: ["aps:GetMetricMetadata"],
15 makeClient: (send) => (request: GetMetricMetadataRequest) =>
16 send({
17 method: "GET",
18 path: "api/v1/metadata",
19 query: {
20 metric: request.metric,
21 limit:
22 request.limit !== undefined ? String(request.limit) : undefined,
23 },
24 }).pipe(
25 Effect.map(
26 (data) => data as Record<string, PrometheusMetricMetadata[]>,
27 ),
28 ),
29 }),
30);