From 2ddbf91d486bfc9ca52bc289715a424499a5a7a5 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 18 Nov 2025 09:54:34 +0000 Subject: [PATCH] [Minor] Migrate src/plugins/lua/history_redis.lua to lua_shape MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Replace tableshape with lua_shape in history_redis plugin. Changes: - Uses lua_redis.enrich_schema() which now returns lua_shape with mixins - ts.string, ts.boolean, ts.number → T.string(), T.boolean(), T.number() - ts.number + ts.string / fn → T.one_of({T.number(), T.transform(T.string(), fn)}) - :is_optional() → :optional() - Added comprehensive documentation to all fields Schema: settings_schema with Redis common fields (via mixin) plus history-specific fields like key_prefix, nrows, compress, and subject privacy options. --- src/plugins/lua/history_redis.lua | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/plugins/lua/history_redis.lua b/src/plugins/lua/history_redis.lua index 44eb40ad9b..a0e83bd3ba 100644 --- a/src/plugins/lua/history_redis.lua +++ b/src/plugins/lua/history_redis.lua @@ -46,7 +46,7 @@ local lua_util = require "lua_util" local lua_redis = require "lua_redis" local fun = require "fun" local ucl = require "ucl" -local ts = (require "tableshape").types +local T = require "lua_shape.core" local E = {} local N = "history_redis" @@ -68,14 +68,17 @@ local settings = { } local settings_schema = lua_redis.enrich_schema({ - key_prefix = ts.string, - expire = (ts.number + ts.string / lua_util.parse_time_interval):is_optional(), - nrows = ts.number, - compress = ts.boolean, - subject_privacy = ts.boolean:is_optional(), - subject_privacy_alg = ts.string:is_optional(), - subject_privacy_prefix = ts.string:is_optional(), - subject_privacy_length = ts.number:is_optional(), + key_prefix = T.string():doc({ summary = "History key name template" }), + expire = T.one_of({ + T.number(), + T.transform(T.string(), lua_util.parse_time_interval) + }):optional():doc({ summary = "Expire time for inactive keys (seconds)" }), + nrows = T.number():doc({ summary = "History rows limit" }), + compress = T.boolean():doc({ summary = "Use zstd compression" }), + subject_privacy = T.boolean():optional():doc({ summary = "Obfuscate subjects for privacy" }), + subject_privacy_alg = T.string():optional():doc({ summary = "Hash algorithm for subject obfuscation" }), + subject_privacy_prefix = T.string():optional():doc({ summary = "Prefix for obfuscated subjects" }), + subject_privacy_length = T.number():optional():doc({ summary = "Hash length for obfuscated subjects" }), }) local function process_addr(addr) -- 2.47.3