From 261726a5c6377a2d83c5de51db51797646b448df Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Thu, 2 Feb 2023 16:15:29 -0800 Subject: [PATCH] add GetExtendTTL --- backend/imagecache.go | 14 ++++++++++++++ backend/imagemanager.go | 3 ++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/backend/imagecache.go b/backend/imagecache.go index 23f117f..299ede6 100644 --- a/backend/imagecache.go +++ b/backend/imagecache.go @@ -95,6 +95,20 @@ func (i *ImageCache) GetResetTTL(key string, resetTTL bool) (image.Image, error) return nil, ErrNotFound } +// Gets the image if it exists and extends TTL to time.Now + ttl iff the image would expire before then +func (i *ImageCache) GetExtendTTL(key string, ttl time.Duration) (image.Image, error) { + i.mu.RLock() + defer i.mu.RUnlock() + if v, ok := i.cache[key]; ok { + v.lastAccessed = time.Now().Unix() + if v.expiresAt < time.Now().Add(ttl).Unix() { + v.expiresAt = time.Now().Add(ttl).Unix() + } + return v.val, nil + } + return nil, ErrNotFound +} + func (i *ImageCache) GetWithNewTTL(key string, newTtl time.Duration) (image.Image, error) { i.mu.RLock() defer i.mu.RUnlock() diff --git a/backend/imagemanager.go b/backend/imagemanager.go index 2f9d068..9a2a8ac 100644 --- a/backend/imagemanager.go +++ b/backend/imagemanager.go @@ -42,7 +42,8 @@ func NewImageManager(ctx context.Context, s *ServerManager, baseCacheDir string) } func (i *ImageManager) GetAlbumThumbnailFromCache(albumID string) (image.Image, bool) { - if img, err := i.thumbnailCache.GetResetTTL(albumID, true); err == nil && img != nil { + img, err := i.thumbnailCache.GetExtendTTL(albumID, i.thumbnailCache.DefaultTTL) + if err == nil && img != nil { return img, true } return nil, false