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