diff options
author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2024-04-21 18:46:40 -0700 |
---|---|---|
committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2024-04-21 18:46:40 -0700 |
commit | d14605d1388aaa7cc9ef1c230eae5ba14c9cef44 (patch) | |
tree | 59fcda0fae7899ca577eed1f72d89bff17d5ad5d /database/backups.go | |
download | backup-notify-d14605d1388aaa7cc9ef1c230eae5ba14c9cef44.tar.gz backup-notify-d14605d1388aaa7cc9ef1c230eae5ba14c9cef44.zip |
initial commit
Diffstat (limited to 'database/backups.go')
-rw-r--r-- | database/backups.go | 51 |
1 files changed, 51 insertions, 0 deletions
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 +} |