package engine import ( "fmt" "path/filepath" "github.com/deluan/navidrome/conf" "github.com/deluan/navidrome/consts" "github.com/deluan/navidrome/log" "github.com/djherbis/fscache" "github.com/dustin/go-humanize" ) func newFileCache(name, cacheSize, cacheFolder string, maxItems int) (fscache.Cache, error) { if cacheSize == "0" { log.Warn(fmt.Sprintf("%s cache disabled", name)) return nil, nil } size, err := humanize.ParseBytes(cacheSize) if err != nil { size = consts.DefaultCacheSize } lru := fscache.NewLRUHaunter(maxItems, int64(size), consts.DefaultCacheCleanUpInterval) h := fscache.NewLRUHaunterStrategy(lru) cacheFolder = filepath.Join(conf.Server.DataFolder, cacheFolder) log.Info(fmt.Sprintf("Creating %s cache", name), "path", cacheFolder, "maxSize", humanize.Bytes(size)) fs, err := fscache.NewFs(cacheFolder, 0755) if err != nil { return nil, err } return fscache.NewCacheWithHaunter(fs, h) }