diff options
| author | MohamedBassem <me@mbassem.com> | 2024-02-10 03:48:19 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-02-10 03:48:19 +0000 |
| commit | c2f1d6d8b8a0f09820153fc736806b147d46abfe (patch) | |
| tree | 1067d96a0ab0df6701799261d3ca23148d28c832 /packages | |
| parent | a86156d805031f0fa3b131dc4fac5a7b10deb66f (diff) | |
| download | karakeep-c2f1d6d8b8a0f09820153fc736806b147d46abfe.tar.zst | |
api: Init trpc in prep for a migration
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/web/app/api/trpc/[trpc]/route.ts | 10 | ||||
| -rw-r--r-- | packages/web/package.json | 5 | ||||
| -rw-r--r-- | packages/web/server/routers/_app.ts | 17 | ||||
| -rw-r--r-- | packages/web/server/trpc.ts | 9 | ||||
| -rw-r--r-- | packages/web/server/utils.ts | 16 |
5 files changed, 57 insertions, 0 deletions
diff --git a/packages/web/app/api/trpc/[trpc]/route.ts b/packages/web/app/api/trpc/[trpc]/route.ts new file mode 100644 index 00000000..872da79a --- /dev/null +++ b/packages/web/app/api/trpc/[trpc]/route.ts @@ -0,0 +1,10 @@ +import { fetchRequestHandler } from '@trpc/server/adapters/fetch'; +import { appRouter } from '@/server/routers/_app'; +const handler = (req: Request) => + fetchRequestHandler({ + endpoint: '/api/trpc', + req, + router: appRouter, + createContext: () => ({}) + }); +export { handler as GET, handler as POST }; diff --git a/packages/web/package.json b/packages/web/package.json index 5762a476..a46e7344 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -18,6 +18,11 @@ "@radix-ui/react-label": "^2.0.2", "@radix-ui/react-slot": "^1.0.2", "@radix-ui/react-toast": "^1.1.5", + "@tanstack/react-query": "^5.18.1", + "@trpc/client": "11.0.0-next-beta.274", + "@trpc/next": "11.0.0-next-beta.274", + "@trpc/react-query": "11.0.0-next-beta.274", + "@trpc/server": "11.0.0-next-beta.274", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "install": "^0.13.0", diff --git a/packages/web/server/routers/_app.ts b/packages/web/server/routers/_app.ts new file mode 100644 index 00000000..47c586b7 --- /dev/null +++ b/packages/web/server/routers/_app.ts @@ -0,0 +1,17 @@ +import { z } from "zod"; +import { procedure, router } from "../trpc"; +export const appRouter = router({ + hello: procedure + .input( + z.object({ + text: z.string(), + }), + ) + .query((opts) => { + return { + greeting: `hello ${opts.input.text}`, + }; + }), +}); +// export type definition of API +export type AppRouter = typeof appRouter; diff --git a/packages/web/server/trpc.ts b/packages/web/server/trpc.ts new file mode 100644 index 00000000..b34424ed --- /dev/null +++ b/packages/web/server/trpc.ts @@ -0,0 +1,9 @@ +import { initTRPC } from '@trpc/server'; +// Avoid exporting the entire t-object +// since it's not very descriptive. +// For instance, the use of a t variable +// is common in i18n libraries. +const t = initTRPC.create(); +// Base router and procedure helpers +export const router = t.router; +export const procedure = t.procedure; diff --git a/packages/web/server/utils.ts b/packages/web/server/utils.ts new file mode 100644 index 00000000..70c06585 --- /dev/null +++ b/packages/web/server/utils.ts @@ -0,0 +1,16 @@ +import { httpBatchLink } from "@trpc/client"; +import { createTRPCNext } from "@trpc/next"; +import type { AppRouter } from "../server/routers/_app"; +import serverConfig from "@/lib/config"; + +export const trpc = createTRPCNext<AppRouter>({ + config(_opts) { + return { + links: [ + httpBatchLink({ + url: `${serverConfig.api_url}/api/trpc`, + }), + ], + }; + }, +}); |
