From dd26b219eb322deb511fcdecfdbecb6c963d20d2 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Fri, 23 Jan 2026 17:28:43 -0800 Subject: feat: Add database maintenance with backup/reset modes and triggers --- internal/config/config.go | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'internal/config') diff --git a/internal/config/config.go b/internal/config/config.go index f97add5..250827b 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -73,8 +73,24 @@ type ServerConfig struct { // StorageConfig contains database settings type StorageConfig struct { - Path string `yaml:"path"` - HistoryDays int `yaml:"history_days"` + Path string `yaml:"path"` + HistoryDays int `yaml:"history_days"` + Maintenance MaintenanceConfig `yaml:"maintenance,omitempty"` +} + +// MaintenanceConfig controls database maintenance/pruning behavior +type MaintenanceConfig struct { + // Mode: "never" (default), "backup" (rename with epoch suffix), "reset" (delete in place) + Mode string `yaml:"mode,omitempty"` + Triggers MaintenanceTriggers `yaml:"triggers,omitempty"` +} + +// MaintenanceTriggers defines when maintenance should occur (OR'd together) +type MaintenanceTriggers struct { + Size string `yaml:"size,omitempty"` // e.g., "100MB", "1GB" + Checks int64 `yaml:"checks,omitempty"` // total check count threshold + Cron string `yaml:"cron,omitempty"` // cron expression, e.g., "0 3 * * 0" + Daily string `yaml:"daily,omitempty"` // daily time, e.g., "03:00" } // GroupConfig represents a group of monitors -- cgit v1.2.3