diff --git a/apps/dokploy/components/dashboard/impersonation/impersonation-bar.tsx b/apps/dokploy/components/dashboard/impersonation/impersonation-bar.tsx index a5aae598c..b96b7c866 100644 --- a/apps/dokploy/components/dashboard/impersonation/impersonation-bar.tsx +++ b/apps/dokploy/components/dashboard/impersonation/impersonation-bar.tsx @@ -281,7 +281,7 @@ export const ImpersonationBar = () => {
diff --git a/apps/dokploy/components/layouts/user-nav.tsx b/apps/dokploy/components/layouts/user-nav.tsx index ca5854196..337e8f483 100644 --- a/apps/dokploy/components/layouts/user-nav.tsx +++ b/apps/dokploy/components/layouts/user-nav.tsx @@ -44,7 +44,7 @@ export const UserNav = () => { > diff --git a/packages/server/src/utils/notifications/volume-backup.ts b/packages/server/src/utils/notifications/volume-backup.ts index f95ecbf39..701563b6f 100644 --- a/packages/server/src/utils/notifications/volume-backup.ts +++ b/packages/server/src/utils/notifications/volume-backup.ts @@ -25,7 +25,14 @@ export const sendVolumeBackupNotifications = async ({ projectName: string; applicationName: string; volumeName: string; - serviceType: "application" | "postgres" | "mysql" | "mongodb" | "mariadb" | "redis" | "compose"; + serviceType: + | "application" + | "postgres" + | "mysql" + | "mongodb" + | "mariadb" + | "redis" + | "compose"; type: "error" | "success"; organizationId: string; errorMessage?: string; @@ -106,11 +113,15 @@ export const sendVolumeBackupNotifications = async ({ value: serviceType, inline: true, }, - ...(backupSize ? [{ - name: decorate("`📊`", "Backup Size"), - value: backupSize, - inline: true, - }] : []), + ...(backupSize + ? [ + { + name: decorate("`📊`", "Backup Size"), + value: backupSize, + inline: true, + }, + ] + : []), { name: decorate("`📅`", "Date"), value: ``, @@ -236,11 +247,15 @@ export const sendVolumeBackupNotifications = async ({ value: serviceType, short: true, }, - ...(backupSize ? [{ - title: "Backup Size", - value: backupSize, - short: true, - }] : []), + ...(backupSize + ? [ + { + title: "Backup Size", + value: backupSize, + short: true, + }, + ] + : []), { title: "Time", value: date.toLocaleString(), diff --git a/packages/server/src/utils/volume-backups/utils.ts b/packages/server/src/utils/volume-backups/utils.ts index 59fb3f6fa..c0b63602c 100644 --- a/packages/server/src/utils/volume-backups/utils.ts +++ b/packages/server/src/utils/volume-backups/utils.ts @@ -81,37 +81,52 @@ export const runVolumeBackup = async (volumeBackupId: string) => { // Send success notification try { - const projectName = volumeBackup.application?.environment?.project?.name || - volumeBackup.compose?.environment?.project?.name || - volumeBackup.postgres?.environment?.project?.name || - volumeBackup.mysql?.environment?.project?.name || - volumeBackup.mariadb?.environment?.project?.name || - volumeBackup.mongo?.environment?.project?.name || - volumeBackup.redis?.environment?.project?.name || - "Unknown Project"; - - const organizationId = volumeBackup.application?.environment?.project?.organizationId || - volumeBackup.compose?.environment?.project?.organizationId || - volumeBackup.postgres?.environment?.project?.organizationId || - volumeBackup.mysql?.environment?.project?.organizationId || - volumeBackup.mariadb?.environment?.project?.organizationId || - volumeBackup.mongo?.environment?.project?.organizationId || - volumeBackup.redis?.environment?.project?.organizationId || - ""; + const projectName = + volumeBackup.application?.environment?.project?.name || + volumeBackup.compose?.environment?.project?.name || + volumeBackup.postgres?.environment?.project?.name || + volumeBackup.mysql?.environment?.project?.name || + volumeBackup.mariadb?.environment?.project?.name || + volumeBackup.mongo?.environment?.project?.name || + volumeBackup.redis?.environment?.project?.name || + "Unknown Project"; + + const organizationId = + volumeBackup.application?.environment?.project?.organizationId || + volumeBackup.compose?.environment?.project?.organizationId || + volumeBackup.postgres?.environment?.project?.organizationId || + volumeBackup.mysql?.environment?.project?.organizationId || + volumeBackup.mariadb?.environment?.project?.organizationId || + volumeBackup.mongo?.environment?.project?.organizationId || + volumeBackup.redis?.environment?.project?.organizationId || + ""; // Map service type to match notification function expectations - const mappedServiceType = volumeBackup.serviceType === "mongo" ? "mongodb" : volumeBackup.serviceType; + const mappedServiceType = + volumeBackup.serviceType === "mongo" + ? "mongodb" + : volumeBackup.serviceType; await sendVolumeBackupNotifications({ projectName, applicationName: volumeBackup.name, volumeName: volumeBackup.volumeName, - serviceType: mappedServiceType as "application" | "postgres" | "mysql" | "mongodb" | "mariadb" | "redis" | "compose", + serviceType: mappedServiceType as + | "application" + | "postgres" + | "mysql" + | "mongodb" + | "mariadb" + | "redis" + | "compose", type: "success", organizationId, }); } catch (notificationError) { - console.error("Failed to send volume backup success notification:", notificationError); + console.error( + "Failed to send volume backup success notification:", + notificationError, + ); } } catch (error) { const { VOLUME_BACKUPS_PATH } = paths(!!serverId); @@ -130,38 +145,53 @@ export const runVolumeBackup = async (volumeBackupId: string) => { // Send error notification try { - const projectName = volumeBackup.application?.environment?.project?.name || - volumeBackup.compose?.environment?.project?.name || - volumeBackup.postgres?.environment?.project?.name || - volumeBackup.mysql?.environment?.project?.name || - volumeBackup.mariadb?.environment?.project?.name || - volumeBackup.mongo?.environment?.project?.name || - volumeBackup.redis?.environment?.project?.name || - "Unknown Project"; - - const organizationId = volumeBackup.application?.environment?.project?.organizationId || - volumeBackup.compose?.environment?.project?.organizationId || - volumeBackup.postgres?.environment?.project?.organizationId || - volumeBackup.mysql?.environment?.project?.organizationId || - volumeBackup.mariadb?.environment?.project?.organizationId || - volumeBackup.mongo?.environment?.project?.organizationId || - volumeBackup.redis?.environment?.project?.organizationId || - ""; + const projectName = + volumeBackup.application?.environment?.project?.name || + volumeBackup.compose?.environment?.project?.name || + volumeBackup.postgres?.environment?.project?.name || + volumeBackup.mysql?.environment?.project?.name || + volumeBackup.mariadb?.environment?.project?.name || + volumeBackup.mongo?.environment?.project?.name || + volumeBackup.redis?.environment?.project?.name || + "Unknown Project"; + + const organizationId = + volumeBackup.application?.environment?.project?.organizationId || + volumeBackup.compose?.environment?.project?.organizationId || + volumeBackup.postgres?.environment?.project?.organizationId || + volumeBackup.mysql?.environment?.project?.organizationId || + volumeBackup.mariadb?.environment?.project?.organizationId || + volumeBackup.mongo?.environment?.project?.organizationId || + volumeBackup.redis?.environment?.project?.organizationId || + ""; // Map service type to match notification function expectations - const mappedServiceType = volumeBackup.serviceType === "mongo" ? "mongodb" : volumeBackup.serviceType; + const mappedServiceType = + volumeBackup.serviceType === "mongo" + ? "mongodb" + : volumeBackup.serviceType; await sendVolumeBackupNotifications({ projectName, applicationName: volumeBackup.name, volumeName: volumeBackup.volumeName, - serviceType: mappedServiceType as "application" | "postgres" | "mysql" | "mongodb" | "mariadb" | "redis" | "compose", + serviceType: mappedServiceType as + | "application" + | "postgres" + | "mysql" + | "mongodb" + | "mariadb" + | "redis" + | "compose", type: "error", organizationId, errorMessage: error instanceof Error ? error.message : String(error), }); } catch (notificationError) { - console.error("Failed to send volume backup error notification:", notificationError); + console.error( + "Failed to send volume backup error notification:", + notificationError, + ); } console.error(error);