Skip to content

Commit 1347327

Browse files
committed
refactor(permission): use effectful HttpApi group builder
Build the permission HttpApi handlers with an effectful group callback so the permission service is resolved once at layer construction time and the endpoint handlers close over the resulting service methods.
1 parent da6e3a5 commit 1347327

1 file changed

Lines changed: 22 additions & 18 deletions

File tree

packages/opencode/src/server/instance/httpapi/permission.ts

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,26 +50,30 @@ const Api = HttpApi.make("permission")
5050
}),
5151
)
5252

53-
const list = Effect.fn("PermissionHttpApi.list")(function* () {
54-
const svc = yield* Permission.Service
55-
return yield* svc.list()
56-
})
53+
const PermissionLive = HttpApiBuilder.group(
54+
Api,
55+
"permission",
56+
Effect.fn("PermissionHttpApi.handlers")(function* (handlers) {
57+
const svc = yield* Permission.Service
5758

58-
const reply = Effect.fn("PermissionHttpApi.reply")(function* (ctx: {
59-
params: { requestID: PermissionID }
60-
payload: Permission.ReplyBody
61-
}) {
62-
const svc = yield* Permission.Service
63-
yield* svc.reply({
64-
requestID: ctx.params.requestID,
65-
reply: ctx.payload.reply,
66-
message: ctx.payload.message,
67-
})
68-
return true
69-
})
59+
const list = Effect.fn("PermissionHttpApi.list")(function* () {
60+
return yield* svc.list()
61+
})
7062

71-
const PermissionLive = HttpApiBuilder.group(Api, "permission", (handlers) =>
72-
handlers.handle("list", list).handle("reply", reply),
63+
const reply = Effect.fn("PermissionHttpApi.reply")(function* (ctx: {
64+
params: { requestID: PermissionID }
65+
payload: Permission.ReplyBody
66+
}) {
67+
yield* svc.reply({
68+
requestID: ctx.params.requestID,
69+
reply: ctx.payload.reply,
70+
message: ctx.payload.message,
71+
})
72+
return true
73+
})
74+
75+
return handlers.handle("list", list).handle("reply", reply)
76+
}),
7377
)
7478

7579
const web = lazy(() =>

0 commit comments

Comments
 (0)