Files
ddns-updater/internal/data/persistence.go
Quentin McGaw bcbf0938c1 chore(lint): add revive linter and fix issues
- Export returned struct types
- Do not export interfaces for other packages to use
2022-08-28 22:18:19 +00:00

45 lines
1.0 KiB
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 int, record records.Record) (err error) {
db.Lock()
defer db.Unlock()
if id < 0 {
return fmt.Errorf("id %d cannot be lower than 0", id)
}
if id > len(db.data)-1 {
return fmt.Errorf("no record config found for id %d", 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()
}