/** * Tasks Data API Endpoint * GET /api/data/tasks - Query tasks 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 projectId = searchParams.get('projectId'); const ticketId = searchParams.get('ticketId'); const assignedResourceId = searchParams.get('assignedResourceId'); const status = searchParams.get('status'); // Build where clause const where: Record = {}; if (projectId) { where.project_id = parseInt(projectId); } if (ticketId) { where.ticket_id = parseInt(ticketId); } if (assignedResourceId) { where.assigned_resource_id = parseInt(assignedResourceId); } if (status) { where.status = parseInt(status); } // Query tasks const tasks = await postgresClient.find( 'tasks', where, { limit, offset, orderBy: 'create_date_time DESC', } ); // Get total count const totalCount = await postgresClient.count('tasks', where); return NextResponse.json({ tasks, pagination: { limit, offset, total: totalCount, hasMore: offset + tasks.length < totalCount, }, }); } catch (error) { console.error('Failed to fetch tasks:', error); return NextResponse.json( { error: 'Failed to fetch tasks' }, { status: 500 } ); } }