feat: add internal healthcheck api route for directus

This commit is contained in:
2025-07-20 22:53:21 -05:00
parent 129a59340a
commit 6c043630df
2 changed files with 25 additions and 0 deletions

1
src/env/schema.mjs vendored
View File

@@ -10,6 +10,7 @@ export const serverSchema = z.object({
GITHUB_API_TOKEN: z.string(),
DIRECTUS_API_TOKEN: z.string(),
DIRECTUS_REVALIDATE_KEY: z.string(),
HEALTHCHECK_SECRET: z.string(), // Added for healthcheck route
NODE_ENV: z.enum(["development", "test", "production"]),
TITLE: z.preprocess((value) => {
if (value === undefined || value === "") return null;

View File

@@ -0,0 +1,24 @@
import type { NextApiRequest, NextApiResponse } from "next";
import directus from "@/utils/directus";
import { env } from "@/env/server.mjs";
import { readItems } from "@directus/sdk";
export default async function handler(
req: NextApiRequest,
res: NextApiResponse,
) {
const secret = req.headers["authorization"];
if (typeof secret !== "string" || secret !== env.HEALTHCHECK_SECRET) {
return res.status(401).json({ error: "Unauthorized" });
}
try {
// Try a simple Directus API call (fetch one project)
await directus.request(readItems("project", { limit: 1 }));
return res.status(200).json({ status: "ok" });
} catch (error) {
return res
.status(500)
.json({ error: "Directus unhealthy", details: String(error) });
}
}