Files
2025-06-22 00:01:22 +03:00

55 lines
1.4 KiB
TypeScript

import { NextResponse } from "next/server"
import { healthCheck, getPoolStats } from "@/lib/database"
export async function GET() {
try {
const health = await healthCheck()
const poolStats = getPoolStats()
return NextResponse.json({
...health,
poolStats,
recommendations: generateRecommendations(poolStats),
})
} catch (error) {
console.error("Database health check error:", error)
return NextResponse.json(
{
status: "error",
error: error instanceof Error ? error.message : "Unknown error",
timestamp: new Date().toISOString(),
},
{ status: 500 },
)
}
}
function generateRecommendations(stats: any) {
const recommendations = []
if (!stats) {
recommendations.push("Unable to get pool statistics")
return recommendations
}
const utilizationRate = (stats.totalConnections - stats.freeConnections) / stats.connectionLimit
if (utilizationRate > 0.8) {
recommendations.push("High connection utilization - consider increasing connection limit")
}
if (stats.acquiringConnections > 5) {
recommendations.push("Many connections waiting - possible connection leak or high load")
}
if (stats.freeConnections === 0) {
recommendations.push("No free connections available - increase pool size or check for connection leaks")
}
if (recommendations.length === 0) {
recommendations.push("Database pool is healthy")
}
return recommendations
}