52 lines · 1.3 KB · Go
RawDownload
package database import (	"database/sql"	"log"	"time" 	"github.com/robfig/cron/v3") // CleanupMetrics deletes metrics older than the retention periodfunc CleanupMetrics(db *sql.DB, retentionDays int) error {	cutoffDate := time.Now().AddDate(0, 0, -retentionDays)	cutoffDateStr := cutoffDate.UTC().Format(time.RFC3339Nano) 	containerQuery := `DELETE FROM container_metrics WHERE timestamp < ?`	_, err := db.Exec(containerQuery, cutoffDateStr)	if err != nil {		return err	} 	serverQuery := `DELETE FROM server_metrics WHERE timestamp < ?`	_, err = db.Exec(serverQuery, cutoffDateStr)	if err != nil {		return err	} 	log.Printf("Metrics deleted (older than %d days)", retentionDays)	log.Printf("Cutoff date for both tables: %s", cutoffDateStr)	return nil} // StartMetricsCleanup starts a cron job to periodically clean up metricsfunc StartMetricsCleanup(db *sql.DB, retentionDays int, cronExpression string) (*cron.Cron, error) {	c := cron.New() 	_, err := c.AddFunc(cronExpression, func() {		if err := CleanupMetrics(db, retentionDays); err != nil {			log.Printf("Error during metrics cleanup: %v", err)		}	}) 	if err != nil {		return nil, err	} 	c.Start()	log.Printf("Started metrics cleanup job (retention: %d days, cron: %s)",		retentionDays, cronExpression) 	return c, nil}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t