import { Request, Response, NextFunction } from 'express'; import prisma from '../config/database'; import { logger } from '../utils/logger'; export const apiLogger = async (req: Request, res: Response, next: NextFunction): Promise => { const startTime = Date.now(); res.on('finish', async () => { const responseTime = Date.now() - startTime; try { await prisma.apiLog.create({ data: { method: req.method, path: req.originalUrl.substring(0, 500), statusCode: res.statusCode, responseTime, ipAddress: (req.ip || req.socket.remoteAddress || '').substring(0, 45), userAgent: (req.headers['user-agent'] || '').substring(0, 500), userId: req.user?.userId || null, errorMessage: res.statusCode >= 400 ? (res.statusMessage || null) : null, }, }); } catch (err) { logger.error('Failed to log API request:', err); } }); next(); };