fix: skip target database check for cluster restores

- Cluster restores restore multiple databases, not a single target
- Database existence check was failing with exit status 2
- Now shows "Will restore all databases from cluster backup" instead
- Removes confusing warning for cluster restore operations
This commit is contained in:
2025-11-07 10:18:39 +00:00
parent de13fdfafd
commit 07400f2828
3 changed files with 19 additions and 12 deletions

BIN
dbbackup

Binary file not shown.

Binary file not shown.

View File

@ -146,20 +146,27 @@ func runSafetyChecks(cfg *config.Config, log logger.Logger, archive ArchiveInfo,
} }
checks = append(checks, check) checks = append(checks, check)
// 4. Target database check // 4. Target database check (skip for cluster restores)
check = SafetyCheck{Name: "Target database", Status: "checking", Critical: false} if !archive.Format.IsClusterBackup() {
exists, err := safety.CheckDatabaseExists(ctx, targetDB) check = SafetyCheck{Name: "Target database", Status: "checking", Critical: false}
if err != nil { exists, err := safety.CheckDatabaseExists(ctx, targetDB)
check.Status = "warning" if err != nil {
check.Message = fmt.Sprintf("Cannot check: %v", err) check.Status = "warning"
} else if exists { check.Message = fmt.Sprintf("Cannot check: %v", err)
check.Status = "warning" } else if exists {
check.Message = fmt.Sprintf("Database '%s' exists - will be overwritten if clean-first enabled", targetDB) check.Status = "warning"
check.Message = fmt.Sprintf("Database '%s' exists - will be overwritten if clean-first enabled", targetDB)
} else {
check.Status = "passed"
check.Message = fmt.Sprintf("Database '%s' does not exist - will be created", targetDB)
}
checks = append(checks, check)
} else { } else {
check.Status = "passed" // For cluster restores, just show a general message
check.Message = fmt.Sprintf("Database '%s' does not exist - will be created", targetDB) check = SafetyCheck{Name: "Cluster restore", Status: "passed", Critical: false}
check.Message = "Will restore all databases from cluster backup"
checks = append(checks, check)
} }
checks = append(checks, check)
return safetyCheckCompleteMsg{checks: checks, canProceed: canProceed} return safetyCheckCompleteMsg{checks: checks, canProceed: canProceed}
} }