import { Request, Response } from 'express'; import { prisma } from '../../../src/lib/prisma'; export async function searchArticles(req: Request, res: Response) { try { const { q, page = 1, limit = 9 } = req.query; const skip = ((page as number) - 1) * (limit as number); const where = { OR: [ { title: { contains: q as string, mode: 'insensitive' } }, { excerpt: { contains: q as string, mode: 'insensitive' } }, { content: { contains: q as string, mode: 'insensitive' } }, ] }; const [articles, total] = await Promise.all([ prisma.article.findMany({ where, include: { author: { select: { id: true, displayName: true, email: true } } }, skip, take: parseInt(limit as string), orderBy: { publishedAt: 'desc' } }), prisma.article.count({ where }) ]); res.json({ articles, totalPages: Math.ceil(total / (limit as number)), currentPage: parseInt(page as string) }); } catch { res.status(500).json({ error: 'Server error' }); } }