Spaces:
Running
Running
File size: 2,986 Bytes
da957b0 42df2a9 da957b0 42df2a9 da957b0 42df2a9 da957b0 42df2a9 da957b0 42df2a9 da957b0 42df2a9 da957b0 42df2a9 da957b0 42df2a9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | import { saveAnnotation, deleteAnnotation, updateAnnotation } from '../../../utils/storage.js';
import { NextResponse } from 'next/server';
export async function POST(request) {
try {
const body = await request.json();
const {
dataset_name,
dataset_tag,
document_index,
page_number,
} = body;
if (
document_index === undefined || document_index === null ||
page_number === undefined ||
!dataset_name?.text ||
!dataset_tag
) {
return NextResponse.json(
{ error: 'Missing required fields: dataset_name.text, dataset_tag, document_index, page_number' },
{ status: 400 }
);
}
await saveAnnotation(body);
return NextResponse.json({ success: true });
} catch (error) {
console.error('Annotation error:', error);
return NextResponse.json({ error: 'Failed to save annotation: ' + error.message }, { status: 500 });
}
}
export async function DELETE(request) {
try {
const { searchParams } = new URL(request.url);
const timestamp = searchParams.get('timestamp');
const docIndex = parseInt(searchParams.get('doc'), 10);
const pageNumber = parseInt(searchParams.get('page'), 10);
if (!timestamp || isNaN(docIndex) || isNaN(pageNumber)) {
return NextResponse.json(
{ error: 'Missing timestamp, doc, or page parameter' },
{ status: 400 }
);
}
const deleted = await deleteAnnotation(timestamp, docIndex, pageNumber);
if (deleted) {
return NextResponse.json({ success: true });
}
return NextResponse.json({ error: 'Annotation not found' }, { status: 404 });
} catch (error) {
console.error('Delete annotation error:', error);
return NextResponse.json({ error: 'Failed to delete annotation: ' + error.message }, { status: 500 });
}
}
export async function PUT(request) {
try {
const body = await request.json();
const { timestamp, document_index, page_number, updates } = body;
if (!timestamp || document_index === undefined || page_number === undefined || !updates) {
return NextResponse.json(
{ error: 'Missing timestamp, document_index, page_number, or updates' },
{ status: 400 }
);
}
const updated = await updateAnnotation(timestamp, document_index, page_number, updates);
if (updated) {
return NextResponse.json({ success: true, annotation: updated });
}
return NextResponse.json({ error: 'Annotation not found' }, { status: 404 });
} catch (error) {
console.error('Update annotation error:', error);
return NextResponse.json({ error: 'Failed to update annotation: ' + error.message }, { status: 500 });
}
}
|