From c03d01d9c8de2a125fbbfc56f53808cd16a603a9 Mon Sep 17 00:00:00 2001 From: ryan Date: Thu, 19 Jun 2025 14:48:37 +0300 Subject: [PATCH] feat(api): implement DELETE endpoint for removing specific items by URL --- .../urls/[encodedUrl]/items/[itemId]/route.ts | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/app/api/urls/[encodedUrl]/items/[itemId]/route.ts diff --git a/src/app/api/urls/[encodedUrl]/items/[itemId]/route.ts b/src/app/api/urls/[encodedUrl]/items/[itemId]/route.ts new file mode 100644 index 0000000..910db02 --- /dev/null +++ b/src/app/api/urls/[encodedUrl]/items/[itemId]/route.ts @@ -0,0 +1,44 @@ +//Handles DELETE requests for specific items +import { NextRequest, NextResponse } from 'next/server'; +import { deleteItemByUrl } from '@/lib/database'; + +// DELETE /api/urls/[encodedUrl]/items/[itemId] - Delete a specific item +export async function DELETE( + request: NextRequest, + { params }: { params: { encodedUrl: string; itemId: string } } +) { + const url = decodeURIComponent(params.encodedUrl); + const itemId = params.itemId; + + console.log('[API] Deleting item', itemId, 'from URL', url); + + try { + if (!itemId) { + return NextResponse.json( + { error: 'Item ID is required' }, + { status: 400 } + ); + } + + await deleteItemByUrl(url, itemId); + + console.log('[API] Successfully deleted item:', itemId); + + return NextResponse.json( + { message: 'Item deleted', itemId: itemId }, + { status: 200 } + ); + } catch (error) { + console.log('[API] Delete error:', error); + + return NextResponse.json( + { + error: 'Failed to delete item', + details: error instanceof Error ? error.message : 'Unknown error', + itemId: itemId, + url: url + }, + { status: 500 } + ); + } +} \ No newline at end of file