mirror of
https://github.com/anomalyco/opencode.git
synced 2026-04-23 22:34:53 +00:00
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.
This commit is contained in:
@@ -50,26 +50,30 @@ const Api = HttpApi.make("permission")
|
||||
}),
|
||||
)
|
||||
|
||||
const list = Effect.fn("PermissionHttpApi.list")(function* () {
|
||||
const svc = yield* Permission.Service
|
||||
return yield* svc.list()
|
||||
})
|
||||
const PermissionLive = HttpApiBuilder.group(
|
||||
Api,
|
||||
"permission",
|
||||
Effect.fn("PermissionHttpApi.handlers")(function* (handlers) {
|
||||
const svc = yield* Permission.Service
|
||||
|
||||
const reply = Effect.fn("PermissionHttpApi.reply")(function* (ctx: {
|
||||
params: { requestID: PermissionID }
|
||||
payload: Permission.ReplyBody
|
||||
}) {
|
||||
const svc = yield* Permission.Service
|
||||
yield* svc.reply({
|
||||
requestID: ctx.params.requestID,
|
||||
reply: ctx.payload.reply,
|
||||
message: ctx.payload.message,
|
||||
})
|
||||
return true
|
||||
})
|
||||
const list = Effect.fn("PermissionHttpApi.list")(function* () {
|
||||
return yield* svc.list()
|
||||
})
|
||||
|
||||
const PermissionLive = HttpApiBuilder.group(Api, "permission", (handlers) =>
|
||||
handlers.handle("list", list).handle("reply", reply),
|
||||
const reply = Effect.fn("PermissionHttpApi.reply")(function* (ctx: {
|
||||
params: { requestID: PermissionID }
|
||||
payload: Permission.ReplyBody
|
||||
}) {
|
||||
yield* svc.reply({
|
||||
requestID: ctx.params.requestID,
|
||||
reply: ctx.payload.reply,
|
||||
message: ctx.payload.message,
|
||||
})
|
||||
return true
|
||||
})
|
||||
|
||||
return handlers.handle("list", list).handle("reply", reply)
|
||||
}),
|
||||
)
|
||||
|
||||
const web = lazy(() =>
|
||||
|
||||
Reference in New Issue
Block a user