From ba19b1c4a70780d58b5a338f793c264eabde92c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Mon, 1 Jul 2024 11:50:21 +0200 Subject: [PATCH] HTTP server work --- bun.lockb | Bin 157228 -> 157588 bytes packages/server/package.json | 1 + packages/server/src/api/trpc/index.ts | 0 packages/server/src/express.ts | 13 ++++++++----- packages/server/src/trpc.ts | 0 5 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 packages/server/src/api/trpc/index.ts create mode 100644 packages/server/src/trpc.ts diff --git a/bun.lockb b/bun.lockb index 14a1898c314af0ccf92eb4c344a20c0e1f3460cb..f5ce228ccce419df5f6bfec0d512c3ff3a63acd8 100755 GIT binary patch delta 7192 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 E1s3KmsQ>@~ diff --git a/packages/server/package.json b/packages/server/package.json index 0db6f00..ac397ca 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -8,6 +8,7 @@ "@effect/schema": "^0.68.12", "@thilawyn/thilalib": "^0.1.4", "@todo-tests/common": "workspace:*", + "@trpc/server": "^10.45.2", "effect": "^3.4.5", "express": "^4.19.2" }, diff --git a/packages/server/src/api/trpc/index.ts b/packages/server/src/api/trpc/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/server/src/express.ts b/packages/server/src/express.ts index 583dcf2..4ac33ab 100644 --- a/packages/server/src/express.ts +++ b/packages/server/src/express.ts @@ -1,4 +1,4 @@ -import { Context, Effect, Layer } from "effect" +import { Config, Context, Effect, Layer } from "effect" import express from "express" @@ -7,13 +7,16 @@ export const ExpressLive = Layer.sync(Express, () => express()) export const ServerLive = Layer.scopedDiscard(Effect.gen(function*() { - const port = 8080 - const app = yield* Express + const app = yield* Express + const port = yield* Config.number("PORT").pipe(Config.withDefault(8080)) yield* Effect.acquireRelease( Effect.sync(() => - app.listen(port, () => console.log(`Example app listening on port ${ port }`)) + app.listen(port, () => console.log(`HTTP server listening on ${ port }.`)) + ), + + server => Effect.sync(() => + server.close() ), - server => Effect.sync(() => server.close()), ) })) diff --git a/packages/server/src/trpc.ts b/packages/server/src/trpc.ts new file mode 100644 index 0000000..e69de29