Files
butcem/src/app/api/health/route.ts
T
suphicakir 7d7dd61c60 feat(deploy): konteyner başlatma adımı ve sağlık kontrolünde replica set
- scripts/bootstrap.ts: replica set/PRIMARY kontrolü, migration'lar, production'da ilk admin
- esbuild ile tek dosya (dist/bootstrap.mjs), docker-entrypoint.sh ile uygulamadan önce
- /api/health yanıtında replicaSet alanı; healthcheck başlangıç payı 60 sn

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 02:13:10 +03:00

35 lines
1.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { connection } from "next/server";
import { getDb, pingDb } from "@/lib/db/mongo";
import { APP_COMMIT, APP_VERSION } from "@/lib/version";
/**
* Sağlık kontrolü (Dokploy / Docker HEALTHCHECK). Veritabanına erişilemezse 503.
* İç hata detayı döndürülmez.
*/
export async function GET() {
// Cache Components açıkken GET handler'ı build'de prerender edilmesin.
await connection();
const dbOk = await pingDb();
// Transaction'lar için replica set şart; adı yoksa (standalone) null.
let replicaSet: string | null = null;
if (dbOk) {
try {
const hello = await getDb().admin().command({ hello: 1 }, { timeoutMS: 2_000 });
replicaSet = typeof hello.setName === "string" ? hello.setName : null;
} catch {
replicaSet = null;
}
}
return Response.json(
{
status: dbOk ? "ok" : "degraded",
db: dbOk ? "ok" : "unreachable",
replicaSet,
version: APP_VERSION,
commit: APP_COMMIT,
time: new Date().toISOString(),
},
{ status: dbOk ? 200 : 503, headers: { "Cache-Control": "no-store" } },
);
}