/** * Contracts Data API Endpoint * GET /api/data/contracts - Query contracts from PostgreSQL */ import { NextRequest, NextResponse } from 'next/server'; import postgresClient from '@/lib/services/postgres-client'; export async function GET(request: NextRequest) { try { const searchParams = request.nextUrl.searchParams; const limit = parseInt(searchParams.get('limit') || '100'); const offset = parseInt(searchParams.get('offset') || '0'); const companyId = searchParams.get('companyId'); const status = searchParams.get('status'); // Build where clause const where: Record = {}; if (companyId) { where.company_id = parseInt(companyId); } if (status) { where.status = parseInt(status); } // Query contracts const contracts = await postgresClient.find( 'contracts', where, { limit, offset, orderBy: 'start_date DESC', } ); // Get total count const totalCount = await postgresClient.count('contracts', where); return NextResponse.json({ contracts, pagination: { limit, offset, total: totalCount, hasMore: offset + contracts.length < totalCount, }, }); } catch (error) { console.error('Failed to fetch contracts:', error); return NextResponse.json( { error: 'Failed to fetch contracts' }, { status: 500 } ); } }