add basic caching

main
Zynh0722 2024-02-01 00:52:42 -08:00
parent 5419a77c48
commit cd2da0aa5c
3 changed files with 58 additions and 5 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.cache/

3
clear_cache.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
rm -rf .cache

55
main.go
View File

@ -2,21 +2,70 @@ package main
import (
"encoding/json"
"errors"
"fmt"
"log"
"os"
"path"
"time"
"github.com/karashiiro/bingode"
"github.com/xivapi/godestone/v2"
)
const CachePath = "./.cache"
type CacheRecord struct {
Time time.Time `json:"time"`
Data string `json:"data"`
}
type Cache map[uint32]CacheRecord
func main() {
err := os.MkdirAll(CachePath, 0755)
if err != nil {
log.Fatal(err)
}
raw_cache, err := os.ReadFile(path.Join(CachePath, "cache.json"))
var cache Cache
if errors.Is(err, os.ErrNotExist) {
cache = make(Cache)
} else if err == nil {
err := json.Unmarshal(raw_cache, &cache)
if err != nil {
log.Fatalln(err)
}
} else {
log.Fatalln(err)
}
var id uint32 = 29932586
data, ok := cache[id]
if !ok {
log.Printf("Fetching fresh data for %d\n", id)
s := godestone.NewScraper(bingode.New(), godestone.EN)
c, err := s.FetchCharacter(29932586)
c, err := s.FetchCharacter(id)
if err != nil {
log.Fatalln(err)
}
data, _ := json.Marshal(c.ClassJobs)
fmt.Printf("%s\n", data)
raw_data, _ := json.Marshal(c.ClassJobs)
data = CacheRecord{Time: time.Now(), Data: string(raw_data)}
cache[id] = data
}
cache_as_stored, err := json.Marshal(cache)
if err != nil {
log.Fatalln(err)
}
err = os.WriteFile(path.Join(CachePath, "cache.json"), cache_as_stored, 0755)
if err != nil {
log.Fatalln(err)
}
fmt.Printf("%s\n", data.Data)
}