From f9d1cf744e81a5c9f1a61b15ea59bf59a4b7d5ae Mon Sep 17 00:00:00 2001 From: David Ashby Date: Sun, 3 Apr 2022 17:54:59 -0400 Subject: [PATCH] refactor a bit --- database/records.go | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/database/records.go b/database/records.go index c1f50f6..add71c7 100644 --- a/database/records.go +++ b/database/records.go @@ -49,22 +49,10 @@ func NewDiscogsCache(token string, maxCacheAge time.Duration, username string, p persistFile: persistFile, } if cache.persistence && cache.persistFile != "" { - p := &persistence{} - f, err := os.Open(cache.persistFile) - if errors.Is(err, os.ErrNotExist) { - log.Printf("%s not found, skipping file load...", cache.persistFile) - return cache, nil - } + cache.cache, cache.lastRefresh, err = cache.loadRecordsFromFS(context.Background()) if err != nil { - return cache, fmt.Errorf("error opening cache file %s: %w", cache.persistFile, err) + return nil, fmt.Errorf("cache load failed: %w", err) } - err = gob.NewDecoder(f).Decode(p) - if err != nil { - return cache, fmt.Errorf("error readhing from cache file %s: %w", cache.persistFile, err) - } - log.Printf("loaded %d records from %s", len(p.CachedRecordSlice), cache.persistFile) - cache.cache = p.CachedRecordSlice - cache.lastRefresh = p.LastRefresh if time.Now().After(cache.lastRefresh.Add(cache.maxCacheAge)) { log.Printf("cache expired, running refresh...") go func() { @@ -102,6 +90,24 @@ func (c *DiscogsCache) GetAllRecords(ctx context.Context) ([]media.Record, error return c.cache, nil } +func (c *DiscogsCache) loadRecordsFromFS(ctx context.Context) ([]media.Record, time.Time, error) { + p := &persistence{} + f, err := os.Open(c.persistFile) + if errors.Is(err, os.ErrNotExist) { + log.Printf("%s not found, skipping file load...", c.persistFile) + return nil, time.Time{}, nil + } + if err != nil { + return nil, time.Time{}, fmt.Errorf("error opening cache file %s: %w", c.persistFile, err) + } + err = gob.NewDecoder(f).Decode(p) + if err != nil { + return nil, time.Time{}, fmt.Errorf("error readhing from cache file %s: %w", c.persistFile, err) + } + log.Printf("loaded %d records from %s", len(p.CachedRecordSlice), c.persistFile) + return p.CachedRecordSlice, p.LastRefresh, nil +} + func (c *DiscogsCache) saveRecordsToCache(ctx context.Context, records []media.Record) error { c.cache = records c.lastRefresh = time.Now()