Initial version (#1)
Co-authored-by: Julien Valverdé <julien.valverde@mailo.com> Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
31
packages/server/src/server.ts
Normal file
31
packages/server/src/server.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import { NodeSdk } from "@effect/opentelemetry"
|
||||
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http"
|
||||
import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base"
|
||||
import { Effect, flow, Layer, Logger, Match } from "effect"
|
||||
import { ServerConfig } from "./config"
|
||||
import { HttpAppDevelopment, HttpAppProduction } from "./http"
|
||||
|
||||
|
||||
const ServerDevelopment = Layer.empty.pipe(
|
||||
Layer.provideMerge(NodeSdk.layer(() => ({
|
||||
resource: { serviceName: "server" },
|
||||
spanProcessor: new BatchSpanProcessor(new OTLPTraceExporter({ url: "http://tempo:4318/v1/traces" }))
|
||||
}))),
|
||||
Layer.provideMerge(HttpAppDevelopment),
|
||||
)
|
||||
|
||||
const ServerProduction = Layer.empty.pipe(
|
||||
Layer.provideMerge(HttpAppProduction),
|
||||
)
|
||||
|
||||
export const Server = ServerConfig.mode.pipe(
|
||||
Effect.map(flow(
|
||||
Match.value,
|
||||
Match.when("development", () => ServerDevelopment),
|
||||
Match.when("production", () => ServerProduction),
|
||||
Match.exhaustive,
|
||||
)),
|
||||
|
||||
Layer.unwrapEffect,
|
||||
Layer.provideMerge(Logger.pretty),
|
||||
)
|
||||
Reference in New Issue
Block a user