]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Migrate src/plugins/lua/neural.lua to lua_shape
authorVsevolod Stakhov <vsevolod@rspamd.com>
Tue, 18 Nov 2025 10:25:33 +0000 (10:25 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Tue, 18 Nov 2025 10:25:33 +0000 (10:25 +0000)
Replace tableshape with lua_shape in neural plugin.

Changes:
- ts.shape { ... } → T.table({ ... })
- ts.string, ts.number → T.string(), T.number()
- ts.array_of(x) → T.array(x)
- :is_optional() → :optional()
- Added comprehensive documentation to all fields

Schema: redis_profile_schema for neural network profiles stored in
Redis, including digest, symbols, version, and optional distance.

src/plugins/lua/neural.lua

index 3f0a3c7aa7737c7b575fd1d0a2bc901df8601b01..494ef43ef84c02d249f0d1588ca55e60e881a3ff 100644 (file)
@@ -29,7 +29,7 @@ local rspamd_logger = require "rspamd_logger"
 local rspamd_tensor = require "rspamd_tensor"
 local rspamd_text = require "rspamd_text"
 local rspamd_util = require "rspamd_util"
-local ts = require("tableshape").types
+local T = require "lua_shape.core"
 -- Load providers
 pcall(require, "plugins/neural/providers/llm")
 pcall(require, "plugins/neural/providers/symbols")
@@ -38,14 +38,14 @@ local N = "neural"
 
 local settings = neural_common.settings
 
-local redis_profile_schema = ts.shape {
-  digest = ts.string,
-  symbols = ts.array_of(ts.string),
-  version = ts.number,
-  redis_key = ts.string,
-  distance = ts.number:is_optional(),
-  providers_digest = ts.string:is_optional(),
-}
+local redis_profile_schema = T.table({
+  digest = T.string():doc({ summary = "Symbols digest" }),
+  symbols = T.array(T.string()):doc({ summary = "List of symbols" }),
+  version = T.number():doc({ summary = "Profile version" }),
+  redis_key = T.string():doc({ summary = "Redis key for ANN" }),
+  distance = T.number():optional():doc({ summary = "Distance metric" }),
+  providers_digest = T.string():optional():doc({ summary = "Providers digest" }),
+}):doc({ summary = "Neural network profile schema" })
 
 local has_blas = rspamd_tensor.has_blas()
 local text_cookie = rspamd_text.cookie