diff --git a/packages/server/src/express.ts b/packages/server/src/express.ts index ca06478..583dcf2 100644 --- a/packages/server/src/express.ts +++ b/packages/server/src/express.ts @@ -1,7 +1,19 @@ -import { Context, Layer } from "effect" +import { Context, Effect, Layer } from "effect" import express from "express" export class Express extends Context.Tag("Express")>() {} - export const ExpressLive = Layer.sync(Express, () => express()) + + +export const ServerLive = Layer.scopedDiscard(Effect.gen(function*() { + const port = 8080 + const app = yield* Express + + yield* Effect.acquireRelease( + Effect.sync(() => + app.listen(port, () => console.log(`Example app listening on port ${ port }`)) + ), + server => Effect.sync(() => server.close()), + ) +}))