chore: add convert bytes to a human-readable string with the appropriate unit (bytes, MiB, or GiB)

This commit is contained in:
2024-12-12 13:28:09 +01:00
parent d880f40108
commit 1b60ca6fd2
11 changed files with 37 additions and 18 deletions

View File

@@ -83,12 +83,14 @@ func azureBackup(db *dbConfig, config *BackupConfig) {
} }
utils.Info("Backup name is %s", finalFileName)
utils.Info("Backup size: %s", utils.ConvertBytes(uint64(backupSize)))
utils.Info("Uploading backup archive to Azure Blob storage ... done ") utils.Info("Uploading backup archive to Azure Blob storage ... done ")
// Send notification // Send notification
utils.NotifySuccess(&utils.NotificationData{ utils.NotifySuccess(&utils.NotificationData{
File: finalFileName, File: finalFileName,
BackupSize: backupSize, BackupSize: utils.ConvertBytes(uint64(backupSize)),
Database: db.dbName, Database: db.dbName,
Storage: config.storage, Storage: config.storage,
BackupLocation: filepath.Join(config.remotePath, finalFileName), BackupLocation: filepath.Join(config.remotePath, finalFileName),

View File

@@ -268,7 +268,6 @@ func localBackup(db *dbConfig, config *BackupConfig) {
utils.Error("Error: %s", err) utils.Error("Error: %s", err)
} }
backupSize = fileInfo.Size() backupSize = fileInfo.Size()
utils.Info("Backup name is %s", finalFileName)
localStorage := local.NewStorage(local.Config{ localStorage := local.NewStorage(local.Config{
LocalPath: tmpPath, LocalPath: tmpPath,
RemotePath: storagePath, RemotePath: storagePath,
@@ -277,11 +276,13 @@ func localBackup(db *dbConfig, config *BackupConfig) {
if err != nil { if err != nil {
utils.Fatal("Error copying backup file: %s", err) utils.Fatal("Error copying backup file: %s", err)
} }
utils.Info("Backup name is %s", finalFileName)
utils.Info("Backup size: %s", utils.ConvertBytes(uint64(backupSize)))
utils.Info("Backup saved in %s", filepath.Join(storagePath, finalFileName)) utils.Info("Backup saved in %s", filepath.Join(storagePath, finalFileName))
// Send notification // Send notification
utils.NotifySuccess(&utils.NotificationData{ utils.NotifySuccess(&utils.NotificationData{
File: finalFileName, File: finalFileName,
BackupSize: backupSize, BackupSize: utils.ConvertBytes(uint64(backupSize)),
Database: db.dbName, Database: db.dbName,
Storage: config.storage, Storage: config.storage,
BackupLocation: filepath.Join(storagePath, finalFileName), BackupLocation: filepath.Join(storagePath, finalFileName),

View File

@@ -46,7 +46,6 @@ func sshBackup(db *dbConfig, config *BackupConfig) {
finalFileName = fmt.Sprintf("%s.%s", config.backupFileName, "gpg") finalFileName = fmt.Sprintf("%s.%s", config.backupFileName, "gpg")
} }
utils.Info("Uploading backup archive to remote storage ... ") utils.Info("Uploading backup archive to remote storage ... ")
utils.Info("Backup name is %s", finalFileName)
sshConfig, err := loadSSHConfig() sshConfig, err := loadSSHConfig()
if err != nil { if err != nil {
utils.Fatal("Error loading ssh config: %s", err) utils.Fatal("Error loading ssh config: %s", err)
@@ -74,6 +73,8 @@ func sshBackup(db *dbConfig, config *BackupConfig) {
utils.Error("Error: %s", err) utils.Error("Error: %s", err)
} }
backupSize = fileInfo.Size() backupSize = fileInfo.Size()
utils.Info("Backup name is %s", finalFileName)
utils.Info("Backup size: %s", utils.ConvertBytes(uint64(backupSize)))
utils.Info("Backup saved in %s", filepath.Join(config.remotePath, finalFileName)) utils.Info("Backup saved in %s", filepath.Join(config.remotePath, finalFileName))
// Delete backup file from tmp folder // Delete backup file from tmp folder
@@ -93,7 +94,7 @@ func sshBackup(db *dbConfig, config *BackupConfig) {
// Send notification // Send notification
utils.NotifySuccess(&utils.NotificationData{ utils.NotifySuccess(&utils.NotificationData{
File: finalFileName, File: finalFileName,
BackupSize: backupSize, BackupSize: utils.ConvertBytes(uint64(backupSize)),
Database: db.dbName, Database: db.dbName,
Storage: config.storage, Storage: config.storage,
BackupLocation: filepath.Join(config.remotePath, finalFileName), BackupLocation: filepath.Join(config.remotePath, finalFileName),
@@ -199,13 +200,14 @@ func ftpBackup(db *dbConfig, config *BackupConfig) {
} }
} }
utils.Info("Backup name is %s", finalFileName)
utils.Info("Backup size: %s", utils.ConvertBytes(uint64(backupSize)))
utils.Info("Uploading backup archive to the remote FTP server ... done ") utils.Info("Uploading backup archive to the remote FTP server ... done ")
// Send notification // Send notification
utils.NotifySuccess(&utils.NotificationData{ utils.NotifySuccess(&utils.NotificationData{
File: finalFileName, File: finalFileName,
BackupSize: backupSize, BackupSize: utils.ConvertBytes(uint64(backupSize)),
Database: db.dbName, Database: db.dbName,
Storage: config.storage, Storage: config.storage,
BackupLocation: filepath.Join(config.remotePath, finalFileName), BackupLocation: filepath.Join(config.remotePath, finalFileName),

View File

@@ -94,7 +94,7 @@ func s3Backup(db *dbConfig, config *BackupConfig) {
// Send notification // Send notification
utils.NotifySuccess(&utils.NotificationData{ utils.NotifySuccess(&utils.NotificationData{
File: finalFileName, File: finalFileName,
BackupSize: backupSize, BackupSize: utils.ConvertBytes(uint64(backupSize)),
Database: db.dbName, Database: db.dbName,
Storage: config.storage, Storage: config.storage,
BackupLocation: filepath.Join(config.remotePath, finalFileName), BackupLocation: filepath.Join(config.remotePath, finalFileName),

View File

@@ -45,14 +45,12 @@ var (
// dbHVars Required environment variables for database // dbHVars Required environment variables for database
var dbHVars = []string{ var dbHVars = []string{
"DB_HOST", "DB_HOST",
"DB_PORT",
"DB_PASSWORD", "DB_PASSWORD",
"DB_USERNAME", "DB_USERNAME",
"DB_NAME", "DB_NAME",
} }
var tdbRVars = []string{ var tdbRVars = []string{
"TARGET_DB_HOST", "TARGET_DB_HOST",
"TARGET_DB_PORT",
"TARGET_DB_NAME", "TARGET_DB_NAME",
"TARGET_DB_USERNAME", "TARGET_DB_USERNAME",
"TARGET_DB_PASSWORD", "TARGET_DB_PASSWORD",

View File

@@ -45,16 +45,16 @@
</head> </head>
<body> <body>
<h2>🔴 Urgent: Database Backup Failure Notification</h2> <h2>🔴 Urgent: Database Backup Failure Notification</h2>
<p>Dear Team,</p> <p>Hi,</p>
<p>An error occurred during the database backup process. Please review the details below and take the necessary actions:</p> <p>An error occurred during the database backup process. Please review the details below and take the necessary actions:</p>
<div class="details"> <div class="details">
<h3>Failure Details:</h3> <h3>Failure Details:</h3>
<ul> <ul>
<li><strong>Database Name:</strong> {{.DatabaseName}}</li> <li><strong>Database Name:</strong> {{.DatabaseName}}</li>
<li><strong>Error Message:</strong> {{.Error}}</li>
<li><strong>Date:</strong> {{.EndTime}}</li> <li><strong>Date:</strong> {{.EndTime}}</li>
<li><strong>Backup Reference:</strong> {{.BackupReference}}</li> <li><strong>Backup Reference:</strong> {{.BackupReference}}</li>
<li><strong>Error Message:</strong> {{.Error}}</li>
</ul> </ul>
</div> </div>

View File

@@ -45,7 +45,7 @@
</head> </head>
<body> <body>
<h2>✅ Database Backup Successful</h2> <h2>✅ Database Backup Successful</h2>
<p>Dear Team,</p> <p>Hi,</p>
<p>The backup process for the <strong>{{.Database}}</strong> database was successfully completed. Please find the details below:</p> <p>The backup process for the <strong>{{.Database}}</strong> database was successfully completed. Please find the details below:</p>
<div class="details"> <div class="details">
@@ -56,7 +56,7 @@
<li><strong>Backup End Time:</strong> {{.EndTime}}</li> <li><strong>Backup End Time:</strong> {{.EndTime}}</li>
<li><strong>Backup Storage:</strong> {{.Storage}}</li> <li><strong>Backup Storage:</strong> {{.Storage}}</li>
<li><strong>Backup Location:</strong> {{.BackupLocation}}</li> <li><strong>Backup Location:</strong> {{.BackupLocation}}</li>
<li><strong>Backup Size:</strong> {{.BackupSize}} bytes</li> <li><strong>Backup Size:</strong> {{.BackupSize}}</li>
<li><strong>Backup Reference:</strong> {{.BackupReference}}</li> <li><strong>Backup Reference:</strong> {{.BackupReference}}</li>
</ul> </ul>
</div> </div>

View File

@@ -1,6 +1,6 @@
🔴 Urgent: Database Backup Failure Notification 🔴 Urgent: Database Backup Failure Notification
Dear Team, Hi,
An error occurred during the database backup process. An error occurred during the database backup process.
Please review the details below and take the necessary actions: Please review the details below and take the necessary actions:
Failure Details: Failure Details:

View File

@@ -1,6 +1,6 @@
✅ Database Backup Successful ✅ Database Backup Successful
Dear Team, Hi,
The backup process for the {{.Database}} database was successfully completed. The backup process for the {{.Database}} database was successfully completed.
Please find the details below: Please find the details below:
@@ -10,7 +10,7 @@ Backup Details:
- Backup EndTime: {{.EndTime}} - Backup EndTime: {{.EndTime}}
- Backup Storage: {{.Storage}} - Backup Storage: {{.Storage}}
- Backup Location: {{.BackupLocation}} - Backup Location: {{.BackupLocation}}
- Backup Size: {{.BackupSize}} bytes - Backup Size: {{.BackupSize}}
- Backup Reference: {{.BackupReference}} - Backup Reference: {{.BackupReference}}
You can access the backup at the specified location if needed. You can access the backup at the specified location if needed.

View File

@@ -37,7 +37,7 @@ type MailConfig struct {
} }
type NotificationData struct { type NotificationData struct {
File string File string
BackupSize int64 BackupSize string
Database string Database string
StartTime string StartTime string
EndTime string EndTime string

View File

@@ -254,3 +254,19 @@ func CronNextTime(cronExpr string) time.Time {
next := schedule.Next(now) next := schedule.Next(now)
return next return next
} }
// ConvertBytes converts bytes to a human-readable string with the appropriate unit (bytes, MiB, or GiB).
func ConvertBytes(bytes uint64) string {
const (
MiB = 1024 * 1024
GiB = MiB * 1024
)
switch {
case bytes >= GiB:
return fmt.Sprintf("%.2f GiB", float64(bytes)/float64(GiB))
case bytes >= MiB:
return fmt.Sprintf("%.2f MiB", float64(bytes)/float64(MiB))
default:
return fmt.Sprintf("%d bytes", bytes)
}
}