1import * as Effect from "effect/Effect";
2import * as Layer from "effect/Layer";
3import { makeAmpWorkspaceHttpBinding, toPromTime } from "./BindingHttp.ts";
4import { GetSeries, type GetSeriesRequest } from "./GetSeries.ts";
5import type { PrometheusSeries } from "./PrometheusTypes.ts";
6
7export const GetSeriesHttp = Layer.effect(
8 GetSeries,
9 makeAmpWorkspaceHttpBinding({
10 name: "GetSeries",
11 iamActions: ["aps:GetSeries"],
12 makeClient: (send) => (request: GetSeriesRequest) =>
13 send({
14 method: "GET",
15 path: "api/v1/series",
16 query: {
17 "match[]": request.match,
18 start:
19 request.start !== undefined ? toPromTime(request.start) : undefined,
20 end: request.end !== undefined ? toPromTime(request.end) : undefined,
21 },
22 }).pipe(Effect.map((data) => data as PrometheusSeries[])),
23 }),
24);