alepha
Version:
Easy-to-use modern TypeScript framework for building many kind of applications.
42 lines (37 loc) • 1 kB
text/typescript
import { $inject, Alepha } from "alepha";
import { DateTimeProvider } from "alepha/datetime";
import { $route } from "alepha/server";
import { healthSchema } from "../schemas/healthSchema.ts";
/**
* Register `/health` & `/healthz` endpoint.
*
* - Provides basic health information about the server.
*/
export class ServerHealthProvider {
protected readonly time: DateTimeProvider = $inject(DateTimeProvider);
protected readonly alepha = $inject(Alepha);
public readonly health = $route({
path: "/health",
schema: {
response: healthSchema,
},
silent: true,
handler: () => this.healthCheck(),
});
public readonly healthz = $route({
path: "/healthz",
schema: {
response: healthSchema,
},
silent: true,
handler: () => this.healthCheck(),
});
protected healthCheck() {
return {
message: "OK",
uptime: Math.floor(process.uptime()),
date: this.time.nowISOString(),
ready: this.alepha.isReady(),
};
}
}