24 lines
798 B
TypeScript
24 lines
798 B
TypeScript
|
// learn more: https://fly.io/docs/reference/configuration/#services-http_checks
|
||
|
import type { LoaderFunction } from "remix";
|
||
|
import { prisma } from "~/db.server";
|
||
|
|
||
|
export const loader: LoaderFunction = async ({ request }) => {
|
||
|
const host =
|
||
|
request.headers.get("X-Forwarded-Host") ?? request.headers.get("host");
|
||
|
|
||
|
try {
|
||
|
// if we can connect to the database and make a simple query
|
||
|
// and make a HEAD request to ourselves, then we're good.
|
||
|
await Promise.all([
|
||
|
prisma.user.count(),
|
||
|
fetch(`http://${host}`, { method: "HEAD" }).then((r) => {
|
||
|
if (!r.ok) return Promise.reject(r);
|
||
|
}),
|
||
|
]);
|
||
|
return new Response("OK");
|
||
|
} catch (error: unknown) {
|
||
|
console.log("healthcheck ❌", { error });
|
||
|
return new Response("ERROR", { status: 500 });
|
||
|
}
|
||
|
};
|