| 1 | import * as Effect from "effect/Effect"; |
| 2 | import * as Layer from "effect/Layer"; |
| 3 | import { makeAmpWorkspaceHttpBinding, toPromTime } from "./BindingHttp.ts"; |
| 4 | import { GetSeries, type GetSeriesRequest } from "./GetSeries.ts"; |
| 5 | import type { PrometheusSeries } from "./PrometheusTypes.ts"; |
| 6 | |
| 7 | export 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 | ); |