aboutsummaryrefslogtreecommitdiffstats
path: root/packages/web/server
diff options
context:
space:
mode:
Diffstat (limited to 'packages/web/server')
-rw-r--r--packages/web/server/routers/_app.ts17
-rw-r--r--packages/web/server/trpc.ts9
-rw-r--r--packages/web/server/utils.ts16
3 files changed, 42 insertions, 0 deletions
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`,
+ }),
+ ],
+ };
+ },
+});