aboutsummaryrefslogtreecommitdiffstats
path: root/packages/web/server/api/trpc.ts
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-03-05 13:11:06 +0000
committerMohamedBassem <me@mbassem.com>2024-03-05 13:11:06 +0000
commit8a46ecb7373d6c5e7300861169ea51a7917cd2b4 (patch)
tree4ad318c3b5fc8b7a74cba6d0e37b6ade24db829a /packages/web/server/api/trpc.ts
parent224aa38d5976523f213e2860b6addc7630d472ba (diff)
downloadkarakeep-8a46ecb7373d6c5e7300861169ea51a7917cd2b4.tar.zst
refactor: Extract trpc logic into its package
Diffstat (limited to 'packages/web/server/api/trpc.ts')
-rw-r--r--packages/web/server/api/trpc.ts53
1 files changed, 0 insertions, 53 deletions
diff --git a/packages/web/server/api/trpc.ts b/packages/web/server/api/trpc.ts
deleted file mode 100644
index 0ba09e94..00000000
--- a/packages/web/server/api/trpc.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import { db } from "@hoarder/db";
-import serverConfig from "@hoarder/shared/config";
-import { TRPCError, initTRPC } from "@trpc/server";
-import { User } from "next-auth";
-import superjson from "superjson";
-
-export type Context = {
- user: User | null;
- db: typeof db;
-};
-
-// 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.context<Context>().create({
- transformer: superjson,
-});
-export const createCallerFactory = t.createCallerFactory;
-// Base router and procedure helpers
-export const router = t.router;
-export const procedure = t.procedure.use(function isDemoMode(opts) {
- if (serverConfig.demoMode && opts.type == "mutation") {
- throw new TRPCError({
- message: "Mutations are not allowed in demo mode",
- code: "FORBIDDEN",
- });
- }
- return opts.next();
-});
-export const publicProcedure = procedure;
-
-export const authedProcedure = procedure.use(function isAuthed(opts) {
- const user = opts.ctx.user;
-
- if (!user || !user.id) {
- throw new TRPCError({ code: "UNAUTHORIZED" });
- }
-
- return opts.next({
- ctx: {
- user,
- },
- });
-});
-
-export const adminProcedure = authedProcedure.use(function isAdmin(opts) {
- const user = opts.ctx.user;
- if (user.role != "admin") {
- throw new TRPCError({ code: "FORBIDDEN" });
- }
- return opts.next(opts);
-});