Skip to content

Commit 86ba597

Browse files
authored
Merge pull request #2907 from WalidDevIO/feat/notifications/dokploy-backup
feat[notifications]: Add Dokploy Backup notification type support
2 parents c7b5e73 + 365e055 commit 86ba597

File tree

9 files changed

+8899
-4
lines changed

9 files changed

+8899
-4
lines changed

apps/dokploy/components/dashboard/settings/notifications/handle-notifications.tsx

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ import { toast } from "sonner";
1212
import { z } from "zod";
1313
import {
1414
DiscordIcon,
15-
MattermostIcon,
1615
GotifyIcon,
1716
LarkIcon,
17+
MattermostIcon,
1818
NtfyIcon,
1919
PushoverIcon,
2020
ResendIcon,
@@ -54,6 +54,7 @@ const notificationBaseSchema = z.object({
5454
appDeploy: z.boolean().default(false),
5555
appBuildError: z.boolean().default(false),
5656
databaseBackup: z.boolean().default(false),
57+
dokployBackup: z.boolean().default(false),
5758
volumeBackup: z.boolean().default(false),
5859
dokployRestart: z.boolean().default(false),
5960
dockerCleanup: z.boolean().default(false),
@@ -355,6 +356,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
355356
appDeploy: notification.appDeploy,
356357
dokployRestart: notification.dokployRestart,
357358
databaseBackup: notification.databaseBackup,
359+
dokployBackup: notification.dokployBackup,
358360
volumeBackup: notification.volumeBackup,
359361
dockerCleanup: notification.dockerCleanup,
360362
webhookUrl: notification.slack?.webhookUrl,
@@ -369,6 +371,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
369371
appDeploy: notification.appDeploy,
370372
dokployRestart: notification.dokployRestart,
371373
databaseBackup: notification.databaseBackup,
374+
dokployBackup: notification.dokployBackup,
372375
volumeBackup: notification.volumeBackup,
373376
botToken: notification.telegram?.botToken,
374377
messageThreadId: notification.telegram?.messageThreadId || "",
@@ -384,6 +387,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
384387
appDeploy: notification.appDeploy,
385388
dokployRestart: notification.dokployRestart,
386389
databaseBackup: notification.databaseBackup,
390+
dokployBackup: notification.dokployBackup,
387391
volumeBackup: notification.volumeBackup,
388392
type: notification.notificationType,
389393
webhookUrl: notification.discord?.webhookUrl,
@@ -398,6 +402,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
398402
appDeploy: notification.appDeploy,
399403
dokployRestart: notification.dokployRestart,
400404
databaseBackup: notification.databaseBackup,
405+
dokployBackup: notification.dokployBackup,
401406
volumeBackup: notification.volumeBackup,
402407
type: notification.notificationType,
403408
smtpServer: notification.email?.smtpServer,
@@ -416,6 +421,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
416421
appDeploy: notification.appDeploy,
417422
dokployRestart: notification.dokployRestart,
418423
databaseBackup: notification.databaseBackup,
424+
dokployBackup: notification.dokployBackup,
419425
volumeBackup: notification.volumeBackup,
420426
type: notification.notificationType,
421427
apiKey: notification.resend?.apiKey,
@@ -431,6 +437,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
431437
appDeploy: notification.appDeploy,
432438
dokployRestart: notification.dokployRestart,
433439
databaseBackup: notification.databaseBackup,
440+
dokployBackup: notification.dokployBackup,
434441
volumeBackup: notification.volumeBackup,
435442
type: notification.notificationType,
436443
appToken: notification.gotify?.appToken,
@@ -446,6 +453,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
446453
appDeploy: notification.appDeploy,
447454
dokployRestart: notification.dokployRestart,
448455
databaseBackup: notification.databaseBackup,
456+
dokployBackup: notification.dokployBackup,
449457
volumeBackup: notification.volumeBackup,
450458
type: notification.notificationType,
451459
accessToken: notification.ntfy?.accessToken || "",
@@ -462,6 +470,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
462470
appDeploy: notification.appDeploy,
463471
dokployRestart: notification.dokployRestart,
464472
databaseBackup: notification.databaseBackup,
473+
dokployBackup: notification.dokployBackup,
465474
volumeBackup: notification.volumeBackup,
466475
type: notification.notificationType,
467476
webhookUrl: notification.mattermost?.webhookUrl,
@@ -477,6 +486,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
477486
appDeploy: notification.appDeploy,
478487
dokployRestart: notification.dokployRestart,
479488
databaseBackup: notification.databaseBackup,
489+
dokployBackup: notification.dokployBackup,
480490
type: notification.notificationType,
481491
webhookUrl: notification.lark?.webhookUrl,
482492
name: notification.name,
@@ -490,6 +500,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
490500
appDeploy: notification.appDeploy,
491501
dokployRestart: notification.dokployRestart,
492502
databaseBackup: notification.databaseBackup,
503+
dokployBackup: notification.dokployBackup,
493504
volumeBackup: notification.volumeBackup,
494505
type: notification.notificationType,
495506
webhookUrl: notification.teams?.webhookUrl,
@@ -503,6 +514,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
503514
appDeploy: notification.appDeploy,
504515
dokployRestart: notification.dokployRestart,
505516
databaseBackup: notification.databaseBackup,
517+
dokployBackup: notification.dokployBackup,
506518
type: notification.notificationType,
507519
endpoint: notification.custom?.endpoint || "",
508520
headers: notification.custom?.headers
@@ -524,6 +536,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
524536
appDeploy: notification.appDeploy,
525537
dokployRestart: notification.dokployRestart,
526538
databaseBackup: notification.databaseBackup,
539+
dokployBackup: notification.dokployBackup,
527540
volumeBackup: notification.volumeBackup,
528541
type: notification.notificationType,
529542
userKey: notification.pushover?.userKey,
@@ -562,6 +575,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
562575
appDeploy,
563576
dokployRestart,
564577
databaseBackup,
578+
dokployBackup,
565579
volumeBackup,
566580
dockerCleanup,
567581
serverThreshold,
@@ -573,6 +587,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
573587
appDeploy: appDeploy,
574588
dokployRestart: dokployRestart,
575589
databaseBackup: databaseBackup,
590+
dokployBackup: dokployBackup,
576591
volumeBackup: volumeBackup,
577592
webhookUrl: data.webhookUrl,
578593
channel: data.channel,
@@ -588,6 +603,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
588603
appDeploy: appDeploy,
589604
dokployRestart: dokployRestart,
590605
databaseBackup: databaseBackup,
606+
dokployBackup: dokployBackup,
591607
volumeBackup: volumeBackup,
592608
botToken: data.botToken,
593609
messageThreadId: data.messageThreadId || "",
@@ -604,6 +620,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
604620
appDeploy: appDeploy,
605621
dokployRestart: dokployRestart,
606622
databaseBackup: databaseBackup,
623+
dokployBackup: dokployBackup,
607624
volumeBackup: volumeBackup,
608625
webhookUrl: data.webhookUrl,
609626
decoration: data.decoration,
@@ -619,6 +636,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
619636
appDeploy: appDeploy,
620637
dokployRestart: dokployRestart,
621638
databaseBackup: databaseBackup,
639+
dokployBackup: dokployBackup,
622640
volumeBackup: volumeBackup,
623641
smtpServer: data.smtpServer,
624642
smtpPort: data.smtpPort,
@@ -638,6 +656,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
638656
appDeploy: appDeploy,
639657
dokployRestart: dokployRestart,
640658
databaseBackup: databaseBackup,
659+
dokployBackup: dokployBackup,
641660
volumeBackup: volumeBackup,
642661
apiKey: data.apiKey,
643662
fromAddress: data.fromAddress,
@@ -654,6 +673,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
654673
appDeploy: appDeploy,
655674
dokployRestart: dokployRestart,
656675
databaseBackup: databaseBackup,
676+
dokployBackup: dokployBackup,
657677
volumeBackup: volumeBackup,
658678
serverUrl: data.serverUrl,
659679
appToken: data.appToken,
@@ -670,6 +690,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
670690
appDeploy: appDeploy,
671691
dokployRestart: dokployRestart,
672692
databaseBackup: databaseBackup,
693+
dokployBackup: dokployBackup,
673694
volumeBackup: volumeBackup,
674695
serverUrl: data.serverUrl,
675696
accessToken: data.accessToken || "",
@@ -686,6 +707,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
686707
appDeploy: appDeploy,
687708
dokployRestart: dokployRestart,
688709
databaseBackup: databaseBackup,
710+
dokployBackup: dokployBackup,
689711
volumeBackup: volumeBackup,
690712
webhookUrl: data.webhookUrl,
691713
channel: data.channel || undefined,
@@ -702,6 +724,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
702724
appDeploy: appDeploy,
703725
dokployRestart: dokployRestart,
704726
databaseBackup: databaseBackup,
727+
dokployBackup: dokployBackup,
705728
volumeBackup: volumeBackup,
706729
webhookUrl: data.webhookUrl,
707730
name: data.name,
@@ -716,6 +739,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
716739
appDeploy: appDeploy,
717740
dokployRestart: dokployRestart,
718741
databaseBackup: databaseBackup,
742+
dokployBackup: dokployBackup,
719743
volumeBackup: volumeBackup,
720744
webhookUrl: data.webhookUrl,
721745
name: data.name,
@@ -742,6 +766,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
742766
appDeploy: appDeploy,
743767
dokployRestart: dokployRestart,
744768
databaseBackup: databaseBackup,
769+
dokployBackup: dokployBackup,
745770
volumeBackup: volumeBackup,
746771
endpoint: data.endpoint,
747772
headers: headersRecord,
@@ -761,6 +786,7 @@ export const HandleNotifications = ({ notificationId }: Props) => {
761786
appDeploy: appDeploy,
762787
dokployRestart: dokployRestart,
763788
databaseBackup: databaseBackup,
789+
dokployBackup: dokployBackup,
764790
volumeBackup: volumeBackup,
765791
userKey: data.userKey,
766792
apiToken: data.apiToken,
@@ -1856,6 +1882,27 @@ export const HandleNotifications = ({ notificationId }: Props) => {
18561882
)}
18571883
/>
18581884

1885+
<FormField
1886+
control={form.control}
1887+
name="dokployBackup"
1888+
render={({ field }) => (
1889+
<FormItem className="flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm gap-2">
1890+
<div className="space-y-0.5">
1891+
<FormLabel>Dokploy Backup</FormLabel>
1892+
<FormDescription>
1893+
Trigger the action when a dokploy backup is created.
1894+
</FormDescription>
1895+
</div>
1896+
<FormControl>
1897+
<Switch
1898+
checked={field.value}
1899+
onCheckedChange={field.onChange}
1900+
/>
1901+
</FormControl>
1902+
</FormItem>
1903+
)}
1904+
/>
1905+
18591906
<FormField
18601907
control={form.control}
18611908
name="volumeBackup"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE "notification" ADD COLUMN "dokployBackup" boolean DEFAULT false NOT NULL;

0 commit comments

Comments
 (0)