feat(RECIPE-0009): complete iteration 0 — deduplication, notifications, UI improvements
This commit is contained in:
@@ -50,15 +50,35 @@ export const POST: RequestHandler = async ({ request }) => {
|
||||
throw new ValidationError(validation.error || 'Invalid Instagram URL');
|
||||
}
|
||||
|
||||
// Enqueue the URL
|
||||
// Check for duplicate before enqueueing
|
||||
const existingItem = queueManager.findByUrl(url);
|
||||
|
||||
if (existingItem) {
|
||||
// Return info response for duplicate
|
||||
return json({
|
||||
duplicate: true,
|
||||
message: 'This recipe is already in the queue',
|
||||
item: {
|
||||
id: existingItem.id,
|
||||
url: existingItem.url,
|
||||
status: existingItem.status,
|
||||
enqueuedAt: existingItem.enqueuedAt
|
||||
}
|
||||
}, { status: 200 }); // 200 OK, not an error
|
||||
}
|
||||
|
||||
// Enqueue new URL
|
||||
const queueItem = queueManager.enqueue(url);
|
||||
|
||||
// Return minimal response (full details available at GET /api/queue/{id})
|
||||
// Return success response
|
||||
return json({
|
||||
id: queueItem.id,
|
||||
url: queueItem.url,
|
||||
status: queueItem.status,
|
||||
enqueuedAt: queueItem.enqueuedAt
|
||||
duplicate: false,
|
||||
item: {
|
||||
id: queueItem.id,
|
||||
url: queueItem.url,
|
||||
status: queueItem.status,
|
||||
enqueuedAt: queueItem.enqueuedAt
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
return handleApiError(error);
|
||||
|
||||
Reference in New Issue
Block a user