From 24491f7e16c358e0241bcda9da384befcbc55677 Mon Sep 17 00:00:00 2001 From: Wesley Finck Date: Fri, 5 Sep 2025 14:23:25 -0700 Subject: [PATCH] refactor: update remove card from collection endpoint to use query parameters Co-authored-by: aider (anthropic/claude-sonnet-4-20250514) --- .../RemoveCardFromCollectionController.ts | 17 ++++++++++++++--- src/webapp/api-client/clients/CardClient.ts | 6 ++---- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/modules/cards/infrastructure/http/controllers/RemoveCardFromCollectionController.ts b/src/modules/cards/infrastructure/http/controllers/RemoveCardFromCollectionController.ts index 7259e935..edb614d2 100644 --- a/src/modules/cards/infrastructure/http/controllers/RemoveCardFromCollectionController.ts +++ b/src/modules/cards/infrastructure/http/controllers/RemoveCardFromCollectionController.ts @@ -13,7 +13,7 @@ export class RemoveCardFromCollectionController extends Controller { async executeImpl(req: AuthenticatedRequest, res: Response): Promise { try { const { cardId } = req.params; - const { collectionIds } = req.body; + const { collectionIds: collectionIdsParam } = req.query; const curatorId = req.did; if (!curatorId) { @@ -24,8 +24,19 @@ export class RemoveCardFromCollectionController extends Controller { return this.badRequest(res, 'Card ID is required'); } - if (!collectionIds || !Array.isArray(collectionIds)) { - return this.badRequest(res, 'Collection IDs array is required'); + if (!collectionIdsParam || typeof collectionIdsParam !== 'string') { + return this.badRequest( + res, + 'Collection IDs query parameter is required', + ); + } + + const collectionIds = collectionIdsParam + .split(',') + .filter((id) => id.trim() !== ''); + + if (collectionIds.length === 0) { + return this.badRequest(res, 'At least one collection ID is required'); } const result = await this.removeCardFromCollectionUseCase.execute({ diff --git a/src/webapp/api-client/clients/CardClient.ts b/src/webapp/api-client/clients/CardClient.ts index ffdabe81..30b7a2e5 100644 --- a/src/webapp/api-client/clients/CardClient.ts +++ b/src/webapp/api-client/clients/CardClient.ts @@ -69,12 +69,10 @@ export class CardClient extends BaseClient { async removeCardFromCollection( request: RemoveCardFromCollectionRequest, ): Promise { + const collectionIdsParam = request.collectionIds.join(','); return this.request( 'DELETE', - `/api/cards/${request.cardId}/collections`, - { - collectionIds: request.collectionIds, - }, + `/api/cards/${request.cardId}/collections?collectionIds=${encodeURIComponent(collectionIdsParam)}`, ); } } -- 2.51.2