From 39c32576d4d040647dfa1dbe24ddaffcdd1d8853 Mon Sep 17 00:00:00 2001 From: Linghua Zhang Date: Fri, 12 Jan 2024 23:11:41 +0900 Subject: [PATCH] fix: handle singleton in cache properly --- internal/cache/cache.go | 7 +++++++ internal/cache/file_cache.go | 9 +-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/internal/cache/cache.go b/internal/cache/cache.go index 46c776a..20ccbbc 100644 --- a/internal/cache/cache.go +++ b/internal/cache/cache.go @@ -1,6 +1,8 @@ package cache import ( + "sync" + "github.com/waynezhang/foto/internal/constants" ) @@ -10,6 +12,11 @@ type Cache interface { Clear() } +var ( + once sync.Once + instance Cache +) + func Shared() Cache { once.Do(func() { instance = NewFolderCache(constants.CacheDirectoryName) diff --git a/internal/cache/file_cache.go b/internal/cache/file_cache.go index d0d36e0..fb6b669 100644 --- a/internal/cache/file_cache.go +++ b/internal/cache/file_cache.go @@ -3,7 +3,6 @@ package cache import ( "fmt" "path/filepath" - "sync" cp "github.com/otiai10/copy" "github.com/rs/zerolog/log" @@ -16,16 +15,10 @@ type folderCache struct { directoryName string } -var ( - once sync.Once - instance Cache -) - func NewFolderCache(directoryName string) Cache { - instance = folderCache{ + return folderCache{ directoryName: directoryName, } - return instance } // `src` is used to compute checksum, `file` will be copied to the cache