Files
backup-to-nextcloud/types.go
T
2026-09-13 14:19:23 +01:00

42 lines
1.0 KiB
Go

package main
import (
"fmt"
"time"
)
type Config struct {
NextcloudURL string `yaml:"nextcloudURL"`
Jobs []Job `yaml:"jobs"`
}
type Job struct {
SourceDirectory string `yaml:"sourceDirectory"`
DestinationDirectory string `yaml:"destinationDirectory"`
MaxItems *int `yaml:"maxItems"`
MaxAge *string `yaml:"maxAge"`
}
func (c Config) Validate() error {
if c.NextcloudURL == "" {
return fmt.Errorf("nextcloudURL is required")
}
for _, job := range c.Jobs {
if job.SourceDirectory == "" {
return fmt.Errorf("sourceDirectory is required for job")
}
if job.DestinationDirectory == "" {
return fmt.Errorf("destinationDirectory is required for job")
}
if job.MaxItems != nil && *job.MaxItems <= 0 {
return fmt.Errorf("maxItems must be greater than 0 for job")
}
if job.MaxAge != nil {
if _, err := time.ParseDuration(*job.MaxAge); err != nil {
return fmt.Errorf("maxAge must be a valid duration for job - %v", err)
}
}
}
return nil
}