/
db.go
51 lines (40 loc) · 1.02 KB
/
db.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package pkg
import (
"fmt"
"time"
tb "gopkg.in/tucnak/telebot.v2"
)
func constructBackupFilename(targetContainer, targetDatabase string) string {
backupFilenameStamp := time.Now().Format("2006_01_02__15_04_05")
backupFilename := fmt.Sprintf(
"%s_%s_%s.sql.gz",
targetContainer,
targetDatabase,
backupFilenameStamp,
)
return backupFilename
}
func sendBackupToTelegram(data *Data, filename string) {
file := &tb.Document{
File: tb.FromDisk(filename),
Caption: fmt.Sprintf("Compatible backend rev: %s", "TODO"), // FIXME
FileName: filename,
}
data.Send(file)
}
func BackupDatabase(data *Data) {
containerName := data.Config.ContainerName
databaseName := data.Config.Database
performDump(data, containerName, databaseName)
}
func PeriodicDBBackups(data *Data) {
defer data.Send("Periodic database backups exited.")
interval := data.Config.IntervalMinutes
if interval <= 0 {
return
}
ticker := time.NewTicker(time.Duration(interval) * time.Minute)
for range ticker.C {
BackupDatabase(data)
}
}