summary refs log tree commit diff
diff options
context:
space:
mode:
authorHayden Young <hi@hbjy.dev>2021-10-14 18:47:05 +0100
committerHayden Young <hi@hbjy.dev>2021-10-14 18:47:05 +0100
commit4009e9d2dd95bda111f8ee007171c929c1653432 (patch)
tree5ba3fceb70f9d0d0213b74033420423de7a47e4f
parentfeat: initial addition of a healthz, readyz and metrics route (diff)
downloadserver-4009e9d2dd95bda111f8ee007171c929c1653432.tar.xz
feat: implement a database check on the healthz and readyz probes, remove /-/metrics
-rw-r--r--api/src/routes/-/healthz.ts9
-rw-r--r--api/src/routes/-/metrics.ts10
-rw-r--r--api/src/routes/-/readyz.ts9
3 files changed, 16 insertions, 12 deletions
diff --git a/api/src/routes/-/healthz.ts b/api/src/routes/-/healthz.ts
index bfd98a22..a42575f8 100644
--- a/api/src/routes/-/healthz.ts
+++ b/api/src/routes/-/healthz.ts
@@ -1,10 +1,17 @@
 import { Router, Response, Request } from "express";
 import { route } from "@fosscord/api";
+import { getConnection } from "typeorm";
 
 const router = Router();
 
 router.get("/", route({}), (req: Request, res: Response) => {
-	res.sendStatus(200);
+	try {
+		// test that the database is alive & responding
+		getConnection();
+		return res.sendStatus(200);
+	} catch(e) {
+		res.sendStatus(503);
+	}
 });
 
 export default router;
diff --git a/api/src/routes/-/metrics.ts b/api/src/routes/-/metrics.ts
deleted file mode 100644
index bfd98a22..00000000
--- a/api/src/routes/-/metrics.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Router, Response, Request } from "express";
-import { route } from "@fosscord/api";
-
-const router = Router();
-
-router.get("/", route({}), (req: Request, res: Response) => {
-	res.sendStatus(200);
-});
-
-export default router;
diff --git a/api/src/routes/-/readyz.ts b/api/src/routes/-/readyz.ts
index bfd98a22..a42575f8 100644
--- a/api/src/routes/-/readyz.ts
+++ b/api/src/routes/-/readyz.ts
@@ -1,10 +1,17 @@
 import { Router, Response, Request } from "express";
 import { route } from "@fosscord/api";
+import { getConnection } from "typeorm";
 
 const router = Router();
 
 router.get("/", route({}), (req: Request, res: Response) => {
-	res.sendStatus(200);
+	try {
+		// test that the database is alive & responding
+		getConnection();
+		return res.sendStatus(200);
+	} catch(e) {
+		res.sendStatus(503);
+	}
 });
 
 export default router;