From 545cac1967f6882780021407a474690fea3f11ed Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Tue, 1 Jul 2025 22:51:59 +0000 Subject: feat: Add per user bookmark count quota --- packages/trpc/routers/admin.ts | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'packages/trpc/routers/admin.ts') diff --git a/packages/trpc/routers/admin.ts b/packages/trpc/routers/admin.ts index 91f4a34f..f46e17f2 100644 --- a/packages/trpc/routers/admin.ts +++ b/packages/trpc/routers/admin.ts @@ -18,8 +18,8 @@ import { } from "@karakeep/shared/queues"; import { getSearchIdxClient } from "@karakeep/shared/search"; import { - changeRoleSchema, resetPasswordSchema, + updateUserSchema, zAdminCreateUserSchema, } from "@karakeep/shared/types/admin"; @@ -331,18 +331,36 @@ export const adminAppRouter = router({ .mutation(async ({ input, ctx }) => { return createUser(input, ctx, input.role); }), - changeRole: adminProcedure - .input(changeRoleSchema) + updateUser: adminProcedure + .input(updateUserSchema) .mutation(async ({ input, ctx }) => { if (ctx.user.id == input.userId) { throw new TRPCError({ code: "BAD_REQUEST", - message: "Cannot change own role", + message: "Cannot update own user", }); } + + const updateData: Partial = {}; + + if (input.role !== undefined) { + updateData.role = input.role; + } + + if (input.bookmarkQuota !== undefined) { + updateData.bookmarkQuota = input.bookmarkQuota; + } + + if (Object.keys(updateData).length === 0) { + throw new TRPCError({ + code: "BAD_REQUEST", + message: "No fields to update", + }); + } + const result = await ctx.db .update(users) - .set({ role: input.role }) + .set(updateData) .where(eq(users.id, input.userId)); if (!result.changes) { -- cgit v1.2.3-70-g09d2