makearmy-app/app/api/health/directus/route.ts

38 lines
1.4 KiB
TypeScript

// app/api/health/directus/route.ts
import { NextResponse } from "next/server";
import { directusFetch } from "@/lib/directus";
export const runtime = "nodejs";
export async function GET() {
const out: any = { ok: true, checks: {} };
try {
// who am I?
try {
const who = await directusFetch<{ data: any }>(`/users/me?fields=id,email,role.name`);
out.checks.user = { ok: true, role: who?.data?.role?.name ?? null };
} catch (e: any) {
out.checks.user = { ok: false, error: e?.message || String(e) };
}
// can read folders?
try {
const folders = await directusFetch<{ data: any[] }>(`/folders?limit=1&fields=id,name`);
out.checks.folders = { ok: true, sample: folders?.data?.[0] ?? null };
} catch (e: any) {
out.checks.folders = { ok: false, error: e?.message || String(e) };
}
// can read files (not create; safe)
try {
const files = await directusFetch<{ data: any[] }>(`/files?limit=0`);
out.checks.files_read = { ok: true, totalKnown: files?.data?.length ?? 0 };
} catch (e: any) {
out.checks.files_read = { ok: false, error: e?.message || String(e) };
}
return NextResponse.json(out);
} catch (e: any) {
return NextResponse.json({ ok: false, error: e?.message || "health error", ...out }, { status: 500 });
}
}