import * as Otel from "@effect/opentelemetry";
import { HttpApiBuilder, HttpMiddleware, HttpServer } from "@effect/platform";
import { Layer } from "effect";
import { Api } from "./api";
const LoggerMiddleware = HttpApiBuilder.middleware(HttpMiddleware.logger);
const OtelLayer = Otel.Tracer.layerGlobal.pipe(
Layer.provide([Otel.Resource.layer({ serviceName: "my-service" })]),
);
const HttpLive = HttpApiBuilder.api(Api).pipe(
Layer.provide([
GroupOneLive,
GroupTwoLive,
// etc...
]),
Layer.provide(LoggerMiddleware),
Layer.provide(OtelLayer),
Layer.merge(HttpServer.layerContext),
);
const { handler } = HttpApiBuilder.toWebHandler(HttpLive);
export {
handler as DELETE,
handler as GET,
handler as PATCH,
handler as POST,
handler as PUT,
};
import * as Otel from "@effect/opentelemetry";
import { HttpApiBuilder, HttpMiddleware, HttpServer } from "@effect/platform";
import { Layer } from "effect";
import { Api } from "./api";
const LoggerMiddleware = HttpApiBuilder.middleware(HttpMiddleware.logger);
const OtelLayer = Otel.Tracer.layerGlobal.pipe(
Layer.provide([Otel.Resource.layer({ serviceName: "my-service" })]),
);
const HttpLive = HttpApiBuilder.api(Api).pipe(
Layer.provide([
GroupOneLive,
GroupTwoLive,
// etc...
]),
Layer.provide(LoggerMiddleware),
Layer.provide(OtelLayer),
Layer.merge(HttpServer.layerContext),
);
const { handler } = HttpApiBuilder.toWebHandler(HttpLive);
export {
handler as DELETE,
handler as GET,
handler as PATCH,
handler as POST,
handler as PUT,
};