diff --git a/cache.go b/cache.go index ed15468..0c4732e 100644 --- a/cache.go +++ b/cache.go @@ -109,13 +109,16 @@ func (c *cacheKV[K, V]) Get(ctx context.Context, k K) (V, error) { c.telemetry(k, "miss_src") return got, fmt.Errorf("get from source: %w", err) } - _ = c.Set(ctx, k, got) + c.cache.Set(k, got, c.cacheOptions(k)...) c.telemetry(k, "hit_src") return got, nil } -func (c *cacheKV[K, V]) Set(_ context.Context, k K, v V) error { +func (c *cacheKV[K, V]) Set(ctx context.Context, k K, v V) error { c.cache.Set(k, v, c.cacheOptions(k)...) + if c.src != nil { + return c.src.Set(ctx, k, v) + } return nil } @@ -127,8 +130,11 @@ func (c *cacheKV[K, V]) cacheOptions(k K) []cache.ItemOption { return opts } -func (c *cacheKV[K, V]) Del(_ context.Context, k K) error { +func (c *cacheKV[K, V]) Del(ctx context.Context, k K) error { c.cache.Delete(k) + if c.src != nil { + return c.src.Del(ctx, k) + } return nil } diff --git a/go.sum b/go.sum index f15f04a..a46efc5 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,3 @@ -github.com/chenyanchen/db v0.1.5 h1:ko8gPnzscRiNjmoF4AypEnrR6MV2PjqTb/1LklFA34k= -github.com/chenyanchen/db v0.1.5/go.mod h1:GlYW1OygQk4R9ijISgIuZuTYMfXXyPomYZbI8Dw17Lk= github.com/Code-Hex/go-generics-cache v1.3.1 h1:i8rLwyhoyhaerr7JpjtYjJZUcCbWOdiYO3fZXLiEC4g= github.com/Code-Hex/go-generics-cache v1.3.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= github.com/chenyanchen/sync v0.1.0 h1:kaLp5i97GAxTB7wGPKbrvza1KjC6c1FGAbW79IclmX0=