52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
import { NextResponse } from 'next/server';
|
|
import { getDbPool } from '@/lib/db';
|
|
import { RowDataPacket } from 'mysql2';
|
|
|
|
// GET /api/ausgaben/autocomplete - Fetch unique Wo and Was values for autocomplete
|
|
export async function GET(request: Request) {
|
|
try {
|
|
const { searchParams } = new URL(request.url);
|
|
const typ = searchParams.get('typ');
|
|
|
|
const pool = getDbPool();
|
|
|
|
let query = 'SELECT DISTINCT Wo, Was FROM Ausgaben';
|
|
const params: any[] = [];
|
|
|
|
if (typ !== null && typ !== undefined) {
|
|
query += ' WHERE TYP = ?';
|
|
params.push(parseInt(typ));
|
|
}
|
|
|
|
query += ' ORDER BY Wo, Was';
|
|
|
|
const [rows] = await pool.query<RowDataPacket[]>(query, params);
|
|
|
|
// Extract unique Wo and Was values
|
|
const woSet = new Set<string>();
|
|
const wasSet = new Set<string>();
|
|
|
|
rows.forEach((row) => {
|
|
if (row.Wo) woSet.add(row.Wo);
|
|
if (row.Was) wasSet.add(row.Was);
|
|
});
|
|
|
|
const wo = Array.from(woSet).sort();
|
|
const was = Array.from(wasSet).sort();
|
|
|
|
return NextResponse.json({
|
|
success: true,
|
|
data: {
|
|
wo,
|
|
was,
|
|
},
|
|
});
|
|
} catch (error) {
|
|
console.error('Database error:', error);
|
|
return NextResponse.json(
|
|
{ success: false, error: 'Database error' },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|