From d14605d1388aaa7cc9ef1c230eae5ba14c9cef44 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sun, 21 Apr 2024 18:46:40 -0700 Subject: initial commit --- database/backups.go | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 database/backups.go (limited to 'database/backups.go') diff --git a/database/backups.go b/database/backups.go new file mode 100644 index 0000000..ab2155f --- /dev/null +++ b/database/backups.go @@ -0,0 +1,51 @@ +package database + +import ( + "database/sql" + "log" + "time" +) + +type Backup struct { + Hostname string + ReceivedOn time.Time +} + +func ListBackups(dbConn *sql.DB) ([]Backup, error) { + log.Println("listing backups") + + rows, err := dbConn.Query(`SELECT hostname, received_on FROM backups;`) + if err != nil { + return nil, err + } + defer rows.Close() + + backups := []Backup{} + for rows.Next() { + var backup Backup + err := rows.Scan(&backup.Hostname, &backup.ReceivedOn) + if err != nil { + return nil, err + } + backups = append(backups, backup) + } + + return backups, nil +} + +func DeleteOldBackups(dbConn *sql.DB, days int) error { + log.Println("deleting old backups") + + duration := time.Duration(days) * 24 * time.Hour + _, err := dbConn.Exec(`DELETE FROM backups WHERE received_on < ?;`, time.Now().Add(-duration)) + + return err +} + +func ReceivedBackup(dbConn *sql.DB, hostname string) error { + log.Println("received backup for", hostname) + + _, err := dbConn.Exec(`INSERT INTO backups (hostname) VALUES (?);`, hostname) + + return err +} -- cgit v1.2.3-70-g09d2