aboutsummaryrefslogtreecommitdiffstats
path: root/packages/trpc/routers/lists.ts
diff options
context:
space:
mode:
authoromnitrix <gaobowei.ovo@gmail.com>2025-04-16 16:18:04 +0200
committerGitHub <noreply@github.com>2025-04-16 15:18:04 +0100
commit71a474268e6381f8630f6d906471c830342dc50f (patch)
treee7dc62795d4b7aad1daeff78c94c12e63c38f3ef /packages/trpc/routers/lists.ts
parentdd990b51f3f85f70298a9b437b16ee7bbb406d24 (diff)
downloadkarakeep-71a474268e6381f8630f6d906471c830342dc50f.tar.zst
feat(web): Add support for merging lists (#1231)
* feat: Support list merging * some fixes * move @hoarder to @karakeep --------- Co-authored-by: Mohamed Bassem <me@mbassem.com>
Diffstat (limited to 'packages/trpc/routers/lists.ts')
-rw-r--r--packages/trpc/routers/lists.ts13
1 files changed, 13 insertions, 0 deletions
diff --git a/packages/trpc/routers/lists.ts b/packages/trpc/routers/lists.ts
index f988eb8b..12960316 100644
--- a/packages/trpc/routers/lists.ts
+++ b/packages/trpc/routers/lists.ts
@@ -4,6 +4,7 @@ import { z } from "zod";
import {
zBookmarkListSchema,
zEditBookmarkListSchemaWithValidation,
+ zMergeListSchema,
zNewBookmarkListSchema,
} from "@karakeep/shared/types/lists";
@@ -39,6 +40,18 @@ export const listsAppRouter = router({
.mutation(async ({ input, ctx }) => {
return await ctx.list.update(input);
}),
+ merge: authedProcedure
+ .input(zMergeListSchema)
+ .mutation(async ({ input, ctx }) => {
+ const [sourceList, targetList] = await Promise.all([
+ List.fromId(ctx, input.sourceId),
+ List.fromId(ctx, input.targetId),
+ ]);
+ return await sourceList.mergeInto(
+ targetList,
+ input.deleteSourceAfterMerge,
+ );
+ }),
delete: authedProcedure
.input(
z.object({