@@ -3,6 +3,7 @@ package commands
3
3
import (
4
4
"bytes"
5
5
"fmt"
6
+ "github.com/Azure/azure-storage-blob-go/azblob"
6
7
"github.com/Quaver/api2/azure"
7
8
"github.com/Quaver/api2/config"
8
9
"github.com/Quaver/api2/webhooks"
@@ -23,49 +24,37 @@ var DatabaseBackupCmd = &cobra.Command{
23
24
Use : "backup:database" ,
24
25
Short : "Backs up the database and uploads to azure" ,
25
26
Run : func (cmd * cobra.Command , args []string ) {
26
- currentTime := time .Now ()
27
-
28
27
if err := deletePreviousBackups (); err != nil {
29
28
logrus .Error (err )
29
+ _ = webhooks .SendBackupWebhook (false , err )
30
30
return
31
31
}
32
32
33
33
backupDir := fmt .Sprintf ("%v/backups" , config .Instance .Cache .DataDirectory )
34
+ path , _ := filepath .Abs (fmt .Sprintf ("%v/backup.sql" , backupDir ))
34
35
35
36
if err := os .MkdirAll (backupDir , os .ModePerm ); err != nil {
36
37
logrus .Error ("[Database Backup] Error creating backup directory" , err )
37
38
_ = webhooks .SendBackupWebhook (false , err )
38
39
return
39
40
}
40
41
41
- path , _ := filepath .Abs (fmt .Sprintf ("%v/backup.sql" , backupDir ))
42
-
43
42
if err := os .Remove (path ); err != nil {
44
43
logrus .Error ("[Database Backup] Error deleting existing backup" )
45
44
}
46
45
47
- logrus .Info ("[Database Backup] Dumping database..." )
48
-
49
46
if err := dumpDatabase (path ); err != nil {
50
47
logrus .Error ("[Database Backup] Error dumping database: " , err )
51
48
_ = webhooks .SendBackupWebhook (false , err )
52
49
return
53
50
}
54
51
55
- logrus .Info ("[Database Backup] Finished dumping database at path: " , path )
56
- logrus .Info ("[Database Backup] Uploading to azure...: " , path )
57
-
58
- fileName := fmt .Sprintf ("%d-%d-%d-time-%d-%d.sql" , currentTime .Year (), currentTime .Month (), currentTime .Day (), currentTime .Hour (), currentTime .Minute ())
59
-
60
- err := azure .Client .UploadFileFromDisk (databaseBackupContainer , fileName , path , nil )
61
-
62
- if err != nil {
52
+ if err := uploadToAzure (path ); err != nil {
63
53
logrus .Error ("[Database Backup] Error uploading database backup" , err )
64
54
_ = webhooks .SendBackupWebhook (false , err )
65
55
return
66
56
}
67
57
68
- logrus .Info ("[Database Backup] Database backup complete!" )
69
58
_ = webhooks .SendBackupWebhook (true )
70
59
},
71
60
}
@@ -90,6 +79,8 @@ func deletePreviousBackups() error {
90
79
}
91
80
92
81
func dumpDatabase (path string ) error {
82
+ logrus .Info ("[Database Backup] Dumping database..." )
83
+
93
84
hostSplit := strings .Split (config .Instance .SQL .Host , ":" )
94
85
95
86
cmd := exec .Command (
@@ -117,5 +108,23 @@ func dumpDatabase(path string) error {
117
108
return fmt .Errorf ("%v\n \n ```%v```" , err , stderr .String ())
118
109
}
119
110
111
+ logrus .Info ("[Database Backup] Finished dumping database at path: " , path )
112
+ return nil
113
+ }
114
+
115
+ func uploadToAzure (path string ) error {
116
+ logrus .Info ("[Database Backup] Uploading to azure...:" )
117
+
118
+ currentTime := time .Now ()
119
+
120
+ fileName := fmt .Sprintf ("%d-%d-%d-time-%d-%d.sql" , currentTime .Year (), currentTime .Month (), currentTime .Day (), currentTime .Hour (), currentTime .Minute ())
121
+
122
+ err := azure .Client .UploadFileFromDisk (databaseBackupContainer , fileName , path , azblob .AccessTierHot )
123
+
124
+ if err != nil {
125
+ return err
126
+ }
127
+
128
+ logrus .Info ("[Database Backup] Finished uploading to azure!" )
120
129
return nil
121
130
}
0 commit comments