32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
|
import { LinkQueryParams } from '../types';
|
|
import { getLinks } from './service';
|
|
|
|
export async function GET(request: NextRequest) {
|
|
try {
|
|
const searchParams = request.nextUrl.searchParams;
|
|
|
|
// Parse request parameters
|
|
const params: LinkQueryParams = {
|
|
limit: searchParams.has('limit') ? Number(searchParams.get('limit')) : 10,
|
|
page: searchParams.has('page') ? Number(searchParams.get('page')) : 1,
|
|
searchTerm: searchParams.get('search') || '',
|
|
tagFilter: searchParams.get('tag') || '',
|
|
};
|
|
|
|
// Handle active status filter
|
|
const activeFilter = searchParams.get('active');
|
|
if (activeFilter === 'true') params.isActive = true;
|
|
if (activeFilter === 'false') params.isActive = false;
|
|
|
|
// Get link data
|
|
const result = await getLinks(params);
|
|
return NextResponse.json(result);
|
|
} catch (error) {
|
|
console.error('Failed to fetch links:', error);
|
|
return NextResponse.json(
|
|
{ error: 'Failed to fetch links', message: (error as Error).message },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|