package version

import (
	"time"

	"github.com/rs/zerolog/log"
)

type cachedStore struct {
	ReplenishFunc func(versionString string) ([]Info, error)
}

func (s *cachedStore) ReadVersions(version string, currentTime time.Time) ([]Info, error) {
	infos, err := readFromCache(version, currentTime)
	if err != nil {
		log.Debug().Msgf("failed to read local cache: %v", err)
		infos, err = s.ReplenishFunc(version)
		if err != nil {
			return nil, err
		}
		err = writeToCache(version, infos, currentTime)
		if err != nil {
			log.Debug().Msgf("failed to write local cache %v", err)
		}
	}
	return infos, nil
}