33 lines
682 B
Go
33 lines
682 B
Go
package tariff
|
|
|
|
import (
|
|
"crypto/sha256"
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/evcc-io/evcc/api"
|
|
"github.com/evcc-io/evcc/server/db/cache"
|
|
)
|
|
|
|
type cached struct {
|
|
Type api.TariffType `json:"type"`
|
|
Rates api.Rates `json:"rates"`
|
|
Updated time.Time `json:"updated"`
|
|
}
|
|
|
|
func cacheKey(typ string, other map[string]any) string {
|
|
return fmt.Sprintf("%x", sha256.Sum256(fmt.Appendf(nil, "%s-%v", typ, other)))
|
|
}
|
|
|
|
func cachePut(key string, typ api.TariffType, rates api.Rates) error {
|
|
return cache.Put(key, &cached{
|
|
Type: typ,
|
|
Rates: rates,
|
|
Updated: time.Now(),
|
|
})
|
|
}
|
|
|
|
func cacheGet(key string) (*cached, error) {
|
|
var res cached
|
|
return &res, cache.Get(key, &res)
|
|
}
|