tRPC work

This commit is contained in:
Julien Valverdé
2024-07-02 14:38:27 +02:00
parent e2f357b4bb
commit dfba7ac01b

View File

@@ -1,30 +1,41 @@
import { initTRPC } from "@trpc/server"
import { Effect, FiberSet } from "effect"
import { Effect, FiberSet, Runtime } from "effect"
import { TodoRepository } from "./TodoRepository"
export const t = initTRPC.create()
export const run = <
Args extends unknown[],
A, E, R
>(
program: (...args: Args) => Effect.Effect<A, E, R>
) => FiberSet.makeRuntime<R>().pipe(
Effect.map(runFork =>
(...args: Args) => runFork(program(...args))
)
export const makeRunner = Effect.runtime().pipe(
Effect.map(Runtime.runFork)
)
// export const run = <
// Args extends unknown[],
// A, E, R
// >(
// program: (...args: Args) => Effect.Effect<A, E, R>
// ) => FiberSet.makeRuntime<R>().pipe(
// Effect.map(runFork =>
// (...args: Args) => runFork(program(...args))
// )
// )
const testRouter = Effect.gen(function*() {
const run = yield* makeRunner
return t.router({
test: t.procedure.query(
yield* run((opts) => Effect.gen(function*() {
// test1: t.procedure.query(
// yield* run((opts) => Effect.gen(function*() {
// const todos = yield* TodoRepository
// return "test"
// }))
// ),
test1: t.procedure.query(
(opts) => run(Effect.gen(function*() {
const todos = yield* TodoRepository
return "test"
}))
),
test2: t.procedure.query(opts => {}),
})
})