From 60e3c8e90c93e9da321a5386edbf49a5733e1aa8 Mon Sep 17 00:00:00 2001 From: ExplodingDragon Date: Tue, 25 Nov 2025 18:49:15 +0800 Subject: [PATCH] =?UTF-8?q?kv=20=E6=94=AF=E6=8C=81=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=B6=85=E6=97=B6=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/filters/goja/var_kv.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/pkg/filters/goja/var_kv.go b/pkg/filters/goja/var_kv.go index acbb484..0421b6f 100644 --- a/pkg/filters/goja/var_kv.go +++ b/pkg/filters/goja/var_kv.go @@ -2,6 +2,7 @@ package goja import ( "os" + "time" "github.com/dop251/goja" "github.com/pkg/errors" @@ -37,14 +38,24 @@ func kvResult(db kv.CursorPagedKV) func(ctx core.FilterContext, jsCtx *goja.Runt } return jsCtx.ToValue(get), nil }, - "set": func(key, value string) error { - return db.Put(ctx, key, value, kv.TTLKeep) + "set": func(key, value string, ttl ...int) error { + var t time.Duration + t = kv.TTLKeep + if len(ttl) > 0 && ttl[0] > 0 { + t = time.Duration(ttl[0]) * time.Millisecond + } + return db.Put(ctx, key, value, t) }, "delete": func(key string) (bool, error) { return db.Delete(ctx, key) }, - "putIfNotExists": func(key, value string) (bool, error) { - return db.PutIfNotExists(ctx, key, value, kv.TTLKeep) + "putIfNotExists": func(key, value string, ttl ...int) (bool, error) { + var t time.Duration + t = kv.TTLKeep + if len(ttl) > 0 && ttl[0] > 0 { + t = time.Duration(ttl[0]) * time.Millisecond + } + return db.PutIfNotExists(ctx, key, value, t) }, "compareAndSwap": func(key, oldValue, newValue string) (bool, error) { return db.CompareAndSwap(ctx, key, oldValue, newValue)