export const ServerLive = Layer.scopedDiscard(
Effect.gen(function* () {
const { port } = yield* appConfig // <-- Take config
const app = yield* Express
yield* Effect.acquireRelease(
Effect.sync(() => {
app.listen(port, () =>
console.log(`[Server] Listening on port ${port}`),
)
}),
() => Effect.sync(() => console.log("[Server] Stopping server")),
)
}),
)
const AppLive = ServerLive.pipe(
Layer.provide(RouterLive),
Layer.provide(ExpressLive),
Layer.provide(ServicesLive),
Layer.provide(DatabaseLive),
) // <-- type is Layer.Layer<never, ConfigError, never>
// Does nothing about error
Effect.runFork(Layer.launch(AppLive))
export const ServerLive = Layer.scopedDiscard(
Effect.gen(function* () {
const { port } = yield* appConfig // <-- Take config
const app = yield* Express
yield* Effect.acquireRelease(
Effect.sync(() => {
app.listen(port, () =>
console.log(`[Server] Listening on port ${port}`),
)
}),
() => Effect.sync(() => console.log("[Server] Stopping server")),
)
}),
)
const AppLive = ServerLive.pipe(
Layer.provide(RouterLive),
Layer.provide(ExpressLive),
Layer.provide(ServicesLive),
Layer.provide(DatabaseLive),
) // <-- type is Layer.Layer<never, ConfigError, never>
// Does nothing about error
Effect.runFork(Layer.launch(AppLive))