All checks were successful
Production Deployment (Zero Downtime) / deploy-production (push) Successful in 14m27s
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
|
import { getProjects } from '@/lib/directus';
|
|
|
|
export async function GET(request: NextRequest) {
|
|
try {
|
|
const { searchParams } = new URL(request.url);
|
|
const slug = searchParams.get('slug');
|
|
const search = searchParams.get('search');
|
|
const category = searchParams.get('category');
|
|
const locale = searchParams.get('locale') || 'en';
|
|
|
|
// Use Directus instead of Prisma
|
|
const projects = await getProjects(locale, {
|
|
featured: undefined,
|
|
published: true,
|
|
category: category && category !== 'All' ? category : undefined,
|
|
search: search || undefined,
|
|
});
|
|
|
|
if (!projects) {
|
|
// Directus not available or no projects found
|
|
return NextResponse.json({ projects: [] });
|
|
}
|
|
|
|
// Filter by slug if provided (since Directus query doesn't support slug filter directly)
|
|
if (slug) {
|
|
const project = projects.find(p => p.slug === slug);
|
|
return NextResponse.json({ projects: project ? [project] : [] });
|
|
}
|
|
|
|
return NextResponse.json({ projects });
|
|
} catch (error) {
|
|
console.error('Error searching projects:', error);
|
|
return NextResponse.json(
|
|
{ error: 'Failed to search projects' },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|