aboutsummaryrefslogtreecommitdiffstats
path: root/packages/trpc/routers/admin.ts
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-07-01 22:51:59 +0000
committerMohamed Bassem <me@mbassem.com>2025-07-04 16:27:29 +0000
commit545cac1967f6882780021407a474690fea3f11ed (patch)
treec30ea2cbc05d061e6726df97baae946f3d6db920 /packages/trpc/routers/admin.ts
parent73a0c951375d38d84cb1eaf5253b558c35882288 (diff)
downloadkarakeep-545cac1967f6882780021407a474690fea3f11ed.tar.zst
feat: Add per user bookmark count quota
Diffstat (limited to 'packages/trpc/routers/admin.ts')
-rw-r--r--packages/trpc/routers/admin.ts28
1 files changed, 23 insertions, 5 deletions
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<typeof users.$inferInsert> = {};
+
+ 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) {