route.ts•1.48 kB
import { NextRequest, NextResponse } from 'next/server';
import {
getRecentItems,
getItemsByFeed,
getItemsByCategory,
searchItems,
getItemById
} from '@/lib/db';
export async function GET(request: NextRequest) {
try {
const { searchParams } = new URL(request.url);
const feedId = searchParams.get('feedId');
const category = searchParams.get('category');
const query = searchParams.get('query');
const id = searchParams.get('id');
const limitParam = searchParams.get('limit');
const limit = limitParam ? parseInt(limitParam, 10) : 50;
let items;
if (id) {
// Get a single item by ID
const item = getItemById(id);
if (!item) {
return NextResponse.json(
{ error: 'Item not found' },
{ status: 404 }
);
}
return NextResponse.json(item);
} else if (feedId) {
// Get items from a specific feed
items = getItemsByFeed(feedId, limit);
} else if (category) {
// Get items by category
items = getItemsByCategory(category, limit);
} else if (query) {
// Search items
items = searchItems(query, limit);
} else {
// Get recent items
items = getRecentItems(limit);
}
return NextResponse.json(items);
} catch (error) {
console.error('Error fetching items:', error);
return NextResponse.json(
{ error: 'Failed to fetch items' },
{ status: 500 }
);
}
}