todo_app/app/api/tasks/route.ts

57 lines
1.7 KiB
TypeScript
Raw Permalink Normal View History

2026-06-04 17:18:27 +00:00
import { NextResponse } from 'next/server';
import { getAufgaben, addAufgabe, getAufgabenCount } from '@/lib/db';
// GET /api/tasks - Aufgaben mit Paginierung und Sortierung abrufen
export async function GET(request: Request) {
try {
const { searchParams } = new URL(request.url);
const page = parseInt(searchParams.get('page') || '1');
const limit = parseInt(searchParams.get('limit') || '10');
const sort = searchParams.get('sort') as 'text_asc' | 'text_desc' | 'datum_asc' | 'datum_desc' || 'datum_desc';
const offset = (page - 1) * limit;
const aufgaben = await getAufgaben(limit, offset, sort);
const total = await getAufgabenCount();
const totalPages = Math.ceil(total / limit);
return NextResponse.json({
aufgaben,
pagination: {
page,
limit,
total,
totalPages
}
});
} catch (error) {
console.error('Fehler beim Abrufen:', error);
return NextResponse.json(
{ error: 'Fehler beim Abrufen der Aufgaben' },
{ status: 500 }
);
}
}
// POST /api/tasks - Neue Aufgabe hinzufügen
export async function POST(request: Request) {
try {
const { beschreibung } = await request.json();
if (!beschreibung || typeof beschreibung !== 'string') {
return NextResponse.json(
{ error: 'Beschreibung ist erforderlich' },
{ status: 400 }
);
}
const neueAufgabe = await addAufgabe(beschreibung.trim());
return NextResponse.json(neueAufgabe, { status: 201 });
} catch (error) {
console.error('Fehler beim Hinzufügen:', error);
return NextResponse.json(
{ error: 'Fehler beim Hinzufügen der Aufgabe' },
{ status: 500 }
);
}
}