mirror of
https://github.com/photoprism/photoprism.git
synced 2025-10-01 15:15:02 +08:00
102 lines
2.5 KiB
Go
102 lines
2.5 KiB
Go
package config
|
|
|
|
import (
|
|
"path/filepath"
|
|
|
|
"github.com/photoprism/photoprism/pkg/clean"
|
|
"github.com/photoprism/photoprism/pkg/fs"
|
|
)
|
|
|
|
const (
|
|
DefaultBackupSchedule = "daily"
|
|
DefaultBackupRetain = 3
|
|
)
|
|
|
|
// DisableBackups checks if database and album backups as well as YAML sidecar files should not be created.
|
|
func (c *Config) DisableBackups() bool {
|
|
if !c.SidecarWritable() {
|
|
return true
|
|
}
|
|
|
|
return c.options.DisableBackups
|
|
}
|
|
|
|
// SidecarYaml checks if sidecar YAML files should be created and updated.
|
|
func (c *Config) SidecarYaml() bool {
|
|
if c.DisableBackups() {
|
|
return false
|
|
}
|
|
|
|
return c.options.SidecarYaml
|
|
}
|
|
|
|
// BackupPath returns the backup storage path based on the specified type, or the base path if none is specified.
|
|
func (c *Config) BackupPath(backupType string) string {
|
|
if s := clean.TypeLowerUnderscore(backupType); s == "" {
|
|
return c.BackupBasePath()
|
|
} else {
|
|
return filepath.Join(c.BackupBasePath(), s)
|
|
}
|
|
}
|
|
|
|
// BackupBasePath returns the backup storage base path.
|
|
func (c *Config) BackupBasePath() string {
|
|
if fs.PathWritable(c.options.BackupPath) {
|
|
return fs.Abs(c.options.BackupPath)
|
|
}
|
|
|
|
return filepath.Join(c.StoragePath(), fs.BackupDir)
|
|
}
|
|
|
|
// BackupSchedule returns the backup schedule in cron format, e.g. "0 12 * * *" for daily at noon.
|
|
func (c *Config) BackupSchedule() string {
|
|
return Schedule(c.options.BackupSchedule)
|
|
}
|
|
|
|
// BackupRetain returns the maximum number of SQL database dumps to keep, or -1 to keep all.
|
|
func (c *Config) BackupRetain() int {
|
|
if c.options.BackupRetain < 0 || c.DisableBackups() {
|
|
return -1
|
|
} else if c.options.BackupRetain == 0 {
|
|
return DefaultBackupRetain
|
|
}
|
|
|
|
return c.options.BackupRetain
|
|
}
|
|
|
|
// BackupDatabase checks if index database backups should be created based on the configured schedule.
|
|
func (c *Config) BackupDatabase() bool {
|
|
if c.DisableBackups() {
|
|
return false
|
|
}
|
|
|
|
return c.options.BackupDatabase
|
|
}
|
|
|
|
// BackupDatabasePath returns the backup path for index database dumps.
|
|
func (c *Config) BackupDatabasePath() string {
|
|
if driver := c.DatabaseDriver(); driver != "" {
|
|
return c.BackupPath(driver)
|
|
}
|
|
|
|
return c.BackupPath("index")
|
|
}
|
|
|
|
// BackupAlbums checks if album YAML file backups should be created based on the configured schedule.
|
|
func (c *Config) BackupAlbums() bool {
|
|
if c.DisableBackups() {
|
|
return false
|
|
}
|
|
|
|
return c.options.BackupAlbums
|
|
}
|
|
|
|
// BackupAlbumsPath returns the backup path for album YAML files.
|
|
func (c *Config) BackupAlbumsPath() string {
|
|
if dir := filepath.Join(c.StoragePath(), fs.AlbumsDir); fs.PathExists(dir) {
|
|
return dir
|
|
}
|
|
|
|
return c.BackupPath(fs.AlbumsDir)
|
|
}
|