From 13a3905776d6cd2be81c0398f63cf8a9d597d4b4 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Wed, 3 Dec 2025 07:14:30 -0800 Subject: [PATCH] add batch weapon/summon methods to collection adapter and mutations --- src/lib/api/adapters/collection.adapter.ts | 34 +++++++++++++++++++ src/lib/api/mutations/collection.mutations.ts | 30 ++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/src/lib/api/adapters/collection.adapter.ts b/src/lib/api/adapters/collection.adapter.ts index 153d8b90..74efa643 100644 --- a/src/lib/api/adapters/collection.adapter.ts +++ b/src/lib/api/adapters/collection.adapter.ts @@ -195,6 +195,23 @@ export class CollectionAdapter extends BaseAdapter { }) } + /** + * Adds multiple weapons to the collection with quantity support + * Each quantity > 1 creates multiple collection entries + */ + async addWeapons( + inputs: Array + ): Promise { + // Expand inputs based on quantity + const expanded = inputs.flatMap((input) => { + const count = input.quantity ?? 1 + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { quantity, ...rest } = input + return Array(count).fill(rest) as CollectionWeaponInput[] + }) + return Promise.all(expanded.map((input) => this.addWeapon(input))) + } + /** * Updates a collection weapon */ @@ -257,6 +274,23 @@ export class CollectionAdapter extends BaseAdapter { }) } + /** + * Adds multiple summons to the collection with quantity support + * Each quantity > 1 creates multiple collection entries + */ + async addSummons( + inputs: Array + ): Promise { + // Expand inputs based on quantity + const expanded = inputs.flatMap((input) => { + const count = input.quantity ?? 1 + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { quantity, ...rest } = input + return Array(count).fill(rest) as CollectionSummonInput[] + }) + return Promise.all(expanded.map((input) => this.addSummon(input))) + } + /** * Updates a collection summon */ diff --git a/src/lib/api/mutations/collection.mutations.ts b/src/lib/api/mutations/collection.mutations.ts index e40fa070..03b5e9c4 100644 --- a/src/lib/api/mutations/collection.mutations.ts +++ b/src/lib/api/mutations/collection.mutations.ts @@ -147,6 +147,21 @@ export function useAddWeaponToCollection() { })) } +/** + * Add multiple weapons to collection mutation with quantity support + */ +export function useAddWeaponsToCollection() { + const queryClient = useQueryClient() + + return createMutation(() => ({ + mutationFn: (inputs: Array) => + collectionAdapter.addWeapons(inputs), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: collectionKeys.weapons() }) + } + })) +} + /** * Update collection weapon mutation */ @@ -194,6 +209,21 @@ export function useAddSummonToCollection() { })) } +/** + * Add multiple summons to collection mutation with quantity support + */ +export function useAddSummonsToCollection() { + const queryClient = useQueryClient() + + return createMutation(() => ({ + mutationFn: (inputs: Array) => + collectionAdapter.addSummons(inputs), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: collectionKeys.summons() }) + } + })) +} + /** * Update collection summon mutation */