Added Caching Module

The Caching Module Caches the images that have been extracted and for
persistence writes the images to a cache file.

In the cache file the data is stored by tab separated values

        `%s\t%s\t%s`

the cache is first loaded in the memory ( CACHE_LIST ) during the start of application
and then extracted images are added to the map CACHE_LIST which is
writtern to the cache file before exiting the program.
This commit is contained in:
aditya-K2 2021-11-13 14:37:07 +05:30
parent ee7cc71879
commit 459b6b2f02
3 changed files with 59 additions and 0 deletions

41
cache/cache.go vendored Normal file
View File

@ -0,0 +1,41 @@
package cache
import (
"fmt"
"io/ioutil"
"os"
"strings"
)
var (
CACHE_LIST map[[2]string]string = make(map[[2]string]string)
)
func loadCache(path string) {
cacheFileContent, err := ioutil.ReadFile(path)
if err != nil {
fmt.Println("Could Not Read From Cache File")
}
lineSlice := strings.Split(string(cacheFileContent), "\n")
for _, line := range lineSlice {
if len(line) != 0 {
param := strings.Split(line, "\t")
if len(param) == 3 {
CACHE_LIST[[2]string{param[0], param[1]}] = param[2]
}
}
}
}
func writeToCache(path string) {
b, err := os.Create(path)
if err == nil {
for k, v := range CACHE_LIST {
b.Write([]byte(fmt.Sprintf("%s\t%s\t%s\n", k[0], k[1], v)))
}
}
}
func generateName(artist, album string) string {
return fmt.Sprintf("%s-%s.jpg", artist, album)
}

16
cache/cache_test.go vendored Normal file
View File

@ -0,0 +1,16 @@
package cache
import "testing"
func TestLoadCache(t *testing.T) {
expectedResult := [2]string{"hello/wer.jpg", "hello/iwer.jpg"}
loadCache("./testdata/cache.txt")
var i int = 0
for _, v := range CACHE_LIST {
if v != expectedResult[i] {
if v != expectedResult[i+1] {
t.Errorf("Didn't Get The Expected Value receieved %s", v)
}
}
}
}

2
cache/testdata/cache.txt vendored Normal file
View File

@ -0,0 +1,2 @@
Kanye West Life Of Pablo hello/wer.jpg
Niravana Heart Shaped Box hello/iwer.jpg