ヘルスチェック API
:LiTarget: 用途
API の生死確認エンドポイント。UptimeRobot 等の外部監視で利用。
:LiSparkle: 特徴
- シンプル GET /api/health
- 応答時間測定
- D1接続確認
:LiCode: 実コード(SCALE Base より自動抽出)
:LiInfo:
scale-crm:functions/api/health.tsの中身そのもの。コピペ即可。
// GET /api/health → ヘルスチェック (UptimeRobot用)
import { corsResponse, corsError, handleOptions } from '../_lib/cors';
interface Env { DB: D1Database }
export const onRequestOptions = () => handleOptions();
export const onRequestGet: PagesFunction<Env> = async ({ env }) => {
try {
const t0 = Date.now();
const row = await env.DB.prepare(
'UPDATE health_check SET last_ping = datetime(\'now\') WHERE id = 1 RETURNING last_ping'
).first();
const dbLatency = Date.now() - t0;
const counts = await env.DB.prepare(
'SELECT (SELECT COUNT(*) FROM app_data) AS app_data, (SELECT COUNT(*) FROM snapshots) AS snapshots, (SELECT COUNT(*) FROM error_log) AS errors'
).first();
return corsResponse({
ok: true,
time: new Date().toISOString(),
db_latency_ms: dbLatency,
last_ping: row?.last_ping,
counts,
});
} catch (e: any) {
return corsError('DB unhealthy: ' + e.message, 503);
}
};
:LiFolder: ソースファイルのパス
/Users/oogushiyuuki/株式会社SCALE/scale-lead/functions/api/health.ts
:LiHandPointer: 使い方
対象プロジェクトに該当ファイルをコピーして、props を流し込むだけ。
:LiAlertCircle: 注意事項
- 依存パッケージを忘れず追加