moving to trpc

This commit is contained in:
2024-11-08 08:16:26 -07:00
parent 3f4d665dd2
commit 9503b208d2
18 changed files with 5151 additions and 8235 deletions

View File

@@ -0,0 +1,36 @@
"use client";
import { useState } from "react";
import superjson from "superjson";
import { httpBatchLink, httpLink } from "@trpc/client";
import { trpc } from "./utils";
import { getQueryClient } from "@/app/providersQueryClientUtils";
export default function TrpcProvider({
children,
}: {
children: React.ReactNode;
}) {
// NOTE: Your production URL environment variable may be different
const url = "/api/trpc";
// process.env.NEXT_PUBLIC_APP_DOMAIN &&
// !process.env.NEXT_PUBLIC_APP_DOMAIN.includes("localhost")
// ? `https://www.${process.env.NEXT_PUBLIC_APP_DOMAIN}/api/trpc/`
// : "http://localhost:3000/api/trpc/";
const [trpcClient] = useState(() =>
trpc.createClient({
links: [
httpLink({
url,
transformer: superjson,
}),
],
})
);
return (
<trpc.Provider client={trpcClient} queryClient={getQueryClient()}>
{children}
</trpc.Provider>
);
}

View File

@@ -0,0 +1,9 @@
import type { CreateNextContextOptions } from '@trpc/server/adapters/next';
export const createContext = async () => {
return {
};
};
export type Context = typeof createContext;

View File

@@ -0,0 +1,5 @@
import { procedure } from "../trpc";
const publicProcedure = procedure;
export default publicProcedure;

View File

@@ -0,0 +1,23 @@
import { createContext } from "../context";
import publicProcedure from "../procedures/public";
import { createCallerFactory, mergeRouters, router } from "../trpc";
export const helloRouter = router({
sayHello: publicProcedure.query(() => {
// runs on the server I think
console.log("hello world router on the server?");
return { greeting: `Hello World!` };
}),
});
export const appRouter = mergeRouters(helloRouter);
export const createCaller = createCallerFactory(appRouter);
export const createAsyncCaller = async () => {
const context = await createContext();
return createCaller(context);
};
export type AppRouter = typeof appRouter;

View File

@@ -0,0 +1,35 @@
import publicProcedure from "../procedures/public";
import { z } from "zod";
import { router } from "../trpc";
import { fileStorageService } from "@/services/fileStorage/fileStorageService";
export const courseItemRouter = router({
getAssignment: publicProcedure
.input(
z.object({
courseName: z.string(),
moduleName: z.string(),
assignmentName: z.string(),
})
)
.query(async ({ input: { courseName, moduleName, assignmentName } }) => {
return await fileStorageService.assignments.getAssignment(
courseName,
moduleName,
assignmentName
);
}),
getAllAssignments: publicProcedure
.input(
z.object({
courseName: z.string(),
moduleName: z.string(),
})
)
.query(async ({ input: { courseName, moduleName } }) => {
return await fileStorageService.assignments.getAssignments(
courseName,
moduleName
);
}),
});

View File

@@ -0,0 +1,13 @@
import { initTRPC } from "@trpc/server";
import superjson from 'superjson';
const t = initTRPC.create({
transformer: superjson,
});
export const middleware = t.middleware;
export const createCallerFactory = t.createCallerFactory;
export const mergeRouters = t.mergeRouters;
export const router = t.router;
export const procedure = t.procedure;

View File

@@ -0,0 +1,4 @@
import { createTRPCReact } from "@trpc/react-query";
import { AppRouter } from "./router/app";
export const trpc = createTRPCReact<AppRouter>();