From c3f06a6272bc1c7afe1a7c2766821733fef8e58b Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 5 Oct 2024 13:34:00 -0600 Subject: [PATCH] feat(cloud): add healtchecks --- apps/dokploy/server/api/routers/settings.ts | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/apps/dokploy/server/api/routers/settings.ts b/apps/dokploy/server/api/routers/settings.ts index a2ca281f..3076424a 100644 --- a/apps/dokploy/server/api/routers/settings.ts +++ b/apps/dokploy/server/api/routers/settings.ts @@ -9,6 +9,7 @@ import { apiTraefikConfig, apiUpdateDockerCleanup, } from "@/server/db/schema"; +import { db } from "@/server/db"; import { generateOpenApiDocument } from "@dokploy/trpc-openapi"; import { TRPCError } from "@trpc/server"; import { dump, load } from "js-yaml"; @@ -56,7 +57,13 @@ import { IS_CLOUD, } from "@dokploy/builders"; import packageInfo from "../../../package.json"; -import { adminProcedure, createTRPCRouter, protectedProcedure } from "../trpc"; +import { + adminProcedure, + createTRPCRouter, + protectedProcedure, + publicProcedure, +} from "../trpc"; +import { sql } from "drizzle-orm"; export const settingsRouter = createTRPCRouter({ reloadServer: adminProcedure.mutation(async () => { @@ -590,4 +597,16 @@ export const settingsRouter = createTRPCRouter({ isCloud: adminProcedure.query(async () => { return IS_CLOUD; }), + health: publicProcedure.query(async () => { + if (IS_CLOUD) { + try { + await db.execute(sql`SELECT 1`); + return { status: "ok" }; + } catch (error) { + console.error("Database connection error:", error); + throw error; + } + } + return { status: "not_cloud" }; + }), });