feat(notifications): implement notifications for gotify

This commit is contained in:
depado
2025-01-13 18:57:45 +01:00
parent 1f8a476264
commit e25d0c0c68
12 changed files with 4450 additions and 871 deletions

View File

@@ -1,3 +1,4 @@
import { error } from "node:console";
import { db } from "@dokploy/server/db";
import { notifications } from "@dokploy/server/db/schema";
import DatabaseBackupEmail from "@dokploy/server/emails/emails/database-backup";
@@ -6,6 +7,7 @@ import { and, eq } from "drizzle-orm";
import {
sendDiscordNotification,
sendEmailNotification,
sendGotifyNotification,
sendSlackNotification,
sendTelegramNotification,
} from "./utils";
@@ -37,11 +39,12 @@ export const sendDatabaseBackupNotifications = async ({
discord: true,
telegram: true,
slack: true,
gotify: true,
},
});
for (const notification of notificationList) {
const { email, discord, telegram, slack } = notification;
const { email, discord, telegram, slack, gotify } = notification;
if (email) {
const template = await renderAsync(
@@ -120,6 +123,24 @@ export const sendDatabaseBackupNotifications = async ({
});
}
if (gotify) {
const decorate = (decoration: string, text: string) =>
`${gotify.decoration ? decoration : ""} ${text}`.trim();
await sendGotifyNotification(
gotify,
decorate(
type === "success" ? "✅" : "❌",
`Database Backup ${type === "success" ? "Successful" : "Failed"}`,
),
`${decorate("🛠️", `Project: ${projectName}`)}
${decorate("⚙️", `Application: ${applicationName}`)}
${decorate("❔", `Type: ${databaseType}`)}
${decorate("🕒", `Date: ${date.toLocaleString()}`)}
${type === "error" && errorMessage ? decorate("❌", `Error:\n${errorMessage}`) : ""}`,
);
}
if (telegram) {
const statusEmoji = type === "success" ? "✅" : "❌";
const messageText = `