mirror of
https://github.com/qdm12/ddns-updater.git
synced 2026-08-03 02:58:41 -04:00
- Change database id to be `uint` instead of `int` - Define and use sentinel errors - Return `string` instead of `error` when appropriate (linode)
42 lines
989 B
Go
42 lines
989 B
Go
package data
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/qdm12/ddns-updater/internal/models"
|
|
"github.com/qdm12/ddns-updater/internal/records"
|
|
)
|
|
|
|
func (db *Database) GetEvents(domain, host string) (events []models.HistoryEvent, err error) {
|
|
return db.persistentDB.GetEvents(domain, host)
|
|
}
|
|
|
|
func (db *Database) Update(id uint, record records.Record) (err error) {
|
|
db.Lock()
|
|
defer db.Unlock()
|
|
if int(id) > len(db.data)-1 {
|
|
return fmt.Errorf("%w: for id %d", ErrRecordNotFound, id)
|
|
}
|
|
currentCount := len(db.data[id].History)
|
|
newCount := len(record.History)
|
|
db.data[id] = record
|
|
// new IP address added
|
|
if newCount > currentCount {
|
|
if err := db.persistentDB.StoreNewIP(
|
|
record.Settings.Domain(),
|
|
record.Settings.Host(),
|
|
record.History.GetCurrentIP(),
|
|
record.History.GetSuccessTime(),
|
|
); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (db *Database) Close() (err error) {
|
|
db.Lock() // ensure write operation finishes
|
|
defer db.Unlock()
|
|
return db.persistentDB.Close()
|
|
}
|