a4de90def3
Extract the stateless, keep-side app-data backup primitives out of internal/backup/ into a new self-contained internal/appbackup/ package: - dbdump.go: DB dump discovery/execution (DiscoverDatabases, DumpOne, ...) - appdata.go: StackDataProvider + app-data/volume discovery, HumanizeBytes - paths.go: keep-side path helpers (AppDBDumpPath, AppVolumeDumpPath, AppDataDir) backup/ keeps every name available via type/const aliases + one-line function forwarders (appbackup_bridge.go), so the still-present delete-side code (restic, cross-drive, drive-mount) and the both-side consumers (web/api/report) compile unchanged. The keep-only consumers appexport and storage are rewired to import appbackup directly and no longer import backup. This is the Part-2 prerequisite for the Proxmox port: appbackup has zero references to restic/cross-drive/drive-mount and does not import backup, so the delete-side can later be removed without breaking app-data backup or appexport. Behaviour-preserving: pure move + import/qualifier rewrites, no logic edits. The four Manager methods (RunDBDumps/DumpAppVolumes/DumpAppVolumesSafe share the delete-side mutex/status state; RestoreAppFromTier2 reads the cross-drive mirror) intentionally stay on Manager and delegate to appbackup — for the re-platform step. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
43 lines
1.8 KiB
Go
43 lines
1.8 KiB
Go
package backup
|
|
|
|
import "path/filepath"
|
|
|
|
// Keep-side path helpers (FelhomDataDir, PrimaryBackupPath, AppDBDumpPath,
|
|
// AppVolumeDumpPath, AppDataDir) now live in internal/appbackup and are
|
|
// re-exposed here via aliases/forwarders in appbackup_bridge.go.
|
|
|
|
// PrimaryResticRepoPath returns the restic repo path on a drive's primary backup.
|
|
func PrimaryResticRepoPath(drivePath string) string {
|
|
return filepath.Join(drivePath, FelhomDataDir, "backups", "primary", "restic")
|
|
}
|
|
|
|
// SecondaryBackupPath returns the root secondary backup directory for a drive.
|
|
func SecondaryBackupPath(drivePath string) string {
|
|
return filepath.Join(drivePath, FelhomDataDir, "backups", "secondary")
|
|
}
|
|
|
|
// AppSecondaryRsyncPath returns the rsync destination for an app's secondary backup.
|
|
func AppSecondaryRsyncPath(drivePath, stackName string) string {
|
|
return filepath.Join(drivePath, FelhomDataDir, "backups", "secondary", stackName, "rsync")
|
|
}
|
|
|
|
// SecondaryResticRepoPath returns the restic repo path on a drive's secondary backup.
|
|
func SecondaryResticRepoPath(drivePath string) string {
|
|
return filepath.Join(drivePath, FelhomDataDir, "backups", "secondary", "restic")
|
|
}
|
|
|
|
// SecondaryInfraPath returns the infrastructure config mirror directory on a drive's secondary backup.
|
|
func SecondaryInfraPath(drivePath string) string {
|
|
return filepath.Join(drivePath, FelhomDataDir, "backups", "secondary", "_infra")
|
|
}
|
|
|
|
// InfraBackupDir returns the hidden infra backup directory on a drive.
|
|
func InfraBackupDir(mountPath string) string {
|
|
return filepath.Join(mountPath, ".felhom-infra-backup")
|
|
}
|
|
|
|
// InfraBackupHistoryDir returns the history subdirectory for versioned infra backups on a drive.
|
|
func InfraBackupHistoryDir(mountPath string) string {
|
|
return filepath.Join(mountPath, ".felhom-infra-backup", "history")
|
|
}
|