From 136d7c61c1ff080910fe3e113e21194d5263ae28 Mon Sep 17 00:00:00 2001 From: Kelvin Mwinuka Date: Sun, 12 Jan 2025 01:18:21 +0800 Subject: [PATCH] Extend SugarDB commands using JavaScript Modules (#161) Implemented extensibility with JavaScript modules - @kelvinmwinuka --- coverage/coverage.out | 6040 +++++++++++++++------- docker-compose.yaml | 11 + docs/docs/extension/js.mdx | 548 ++ docs/docs/extension/lua.mdx | 18 +- docs/src/components/load_module.tsx | 8 +- go.mod | 3 + go.sum | 6 + internal/types.go | 5 - internal/volumes/modules/js/example.js | 113 + internal/volumes/modules/js/hash.js | 136 + internal/volumes/modules/js/list.js | 128 + internal/volumes/modules/js/set.js | 177 + internal/volumes/modules/js/zset.js | 170 + internal/volumes/modules/lua/example.lua | 3 - internal/volumes/modules/lua/hash.lua | 3 - internal/volumes/modules/lua/list.lua | 3 - internal/volumes/modules/lua/set.lua | 7 +- internal/volumes/modules/lua/zset.lua | 5 +- sugardb/api_admin_test.go | 45 + sugardb/modules.go | 5 +- sugardb/plugin.go | 24 +- sugardb/plugin_javascript.go | 908 ++++ sugardb/plugin_lua.go | 58 +- sugardb/sugardb.go | 4 +- 24 files changed, 6446 insertions(+), 1982 deletions(-) create mode 100644 docs/docs/extension/js.mdx create mode 100644 internal/volumes/modules/js/example.js create mode 100644 internal/volumes/modules/js/hash.js create mode 100644 internal/volumes/modules/js/list.js create mode 100644 internal/volumes/modules/js/set.js create mode 100644 internal/volumes/modules/js/zset.js create mode 100644 sugardb/plugin_javascript.go diff --git a/coverage/coverage.out b/coverage/coverage.out index 3bcb25b..5d1cd5a 100644 --- a/coverage/coverage.out +++ b/coverage/coverage.out @@ -27,6 +27,13 @@ github.com/echovault/sugardb/cmd/main.go:30.16,32.3 1 0 github.com/echovault/sugardb/cmd/main.go:34.2,44.16 5 0 github.com/echovault/sugardb/cmd/main.go:44.16,46.3 1 0 github.com/echovault/sugardb/cmd/main.go:48.2,52.19 3 0 +github.com/echovault/sugardb/internal/clock/clock.go:14.23,16.43 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:16.43,18.3 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:19.2,19.20 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:24.34,26.2 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:28.58,30.2 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 0 +github.com/echovault/sugardb/internal/clock/clock.go:39.58,41.2 1 0 github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 0 github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 0 @@ -215,71 +222,6 @@ github.com/echovault/sugardb/internal/utils.go:486.15,488.3 1 0 github.com/echovault/sugardb/internal/utils.go:490.2,490.9 1 0 github.com/echovault/sugardb/internal/utils.go:491.18,492.47 1 0 github.com/echovault/sugardb/internal/utils.go:493.14,494.19 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:56.43,63.2 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:65.58,80.26 7 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:80.26,84.4 3 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:85.26,89.4 3 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:93.2,94.41 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:94.41,99.3 4 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:101.2,104.16 3 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:104.16,106.3 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:108.2,108.37 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:108.37,111.70 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:111.70,113.18 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:113.18,115.5 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:116.4,116.14 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:119.3,119.17 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:119.17,121.4 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:123.3,123.27 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:127.45,137.2 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:141.72,154.2 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:158.75,171.2 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:173.43,176.16 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:176.16,179.3 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:181.2,182.16 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:182.16,185.3 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:187.2,187.49 1 0 github.com/echovault/sugardb/internal/clock/clock.go:14.23,16.43 1 0 github.com/echovault/sugardb/internal/clock/clock.go:16.43,18.3 1 0 github.com/echovault/sugardb/internal/clock/clock.go:19.2,19.20 1 0 @@ -287,6 +229,486 @@ github.com/echovault/sugardb/internal/clock/clock.go:24.34,26.2 1 0 github.com/echovault/sugardb/internal/clock/clock.go:28.58,30.2 1 0 github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 0 github.com/echovault/sugardb/internal/clock/clock.go:39.58,41.2 1 0 +github.com/echovault/sugardb/internal/config/config.go:64.34,70.24 3 0 +github.com/echovault/sugardb/internal/config/config.go:70.24,72.35 2 0 +github.com/echovault/sugardb/internal/config/config.go:72.35,74.5 1 0 +github.com/echovault/sugardb/internal/config/config.go:75.4,75.22 1 0 +github.com/echovault/sugardb/internal/config/config.go:75.22,77.5 1 0 +github.com/echovault/sugardb/internal/config/config.go:78.4,79.14 2 0 +github.com/echovault/sugardb/internal/config/config.go:82.2,82.115 1 0 +github.com/echovault/sugardb/internal/config/config.go:82.115,85.3 2 0 +github.com/echovault/sugardb/internal/config/config.go:87.2,90.29 2 0 +github.com/echovault/sugardb/internal/config/config.go:90.29,91.86 1 0 +github.com/echovault/sugardb/internal/config/config.go:91.86,93.5 1 0 +github.com/echovault/sugardb/internal/config/config.go:93.7,95.5 1 0 +github.com/echovault/sugardb/internal/config/config.go:96.4,97.14 2 0 +github.com/echovault/sugardb/internal/config/config.go:100.2,103.59 2 0 +github.com/echovault/sugardb/internal/config/config.go:103.59,105.17 2 0 +github.com/echovault/sugardb/internal/config/config.go:105.17,107.4 1 0 +github.com/echovault/sugardb/internal/config/config.go:108.3,109.13 2 0 +github.com/echovault/sugardb/internal/config/config.go:112.2,121.88 2 0 +github.com/echovault/sugardb/internal/config/config.go:121.88,128.23 3 0 +github.com/echovault/sugardb/internal/config/config.go:128.23,130.5 1 0 +github.com/echovault/sugardb/internal/config/config.go:131.4,132.14 2 0 +github.com/echovault/sugardb/internal/config/config.go:135.2,139.24 2 0 +github.com/echovault/sugardb/internal/config/config.go:139.24,140.36 1 0 +github.com/echovault/sugardb/internal/config/config.go:140.36,142.5 1 0 +github.com/echovault/sugardb/internal/config/config.go:143.4,144.14 2 0 +github.com/echovault/sugardb/internal/config/config.go:147.2,188.14 23 0 +github.com/echovault/sugardb/internal/config/config.go:188.14,190.3 1 0 +github.com/echovault/sugardb/internal/config/config.go:191.2,192.14 2 0 +github.com/echovault/sugardb/internal/config/config.go:192.14,194.3 1 0 +github.com/echovault/sugardb/internal/config/config.go:196.2,226.22 2 0 +github.com/echovault/sugardb/internal/config/config.go:226.22,228.45 1 0 +github.com/echovault/sugardb/internal/config/config.go:228.45,229.14 1 0 +github.com/echovault/sugardb/internal/config/config.go:230.9,231.17 1 0 +github.com/echovault/sugardb/internal/config/config.go:231.17,232.36 1 0 +github.com/echovault/sugardb/internal/config/config.go:232.36,234.6 1 0 +github.com/echovault/sugardb/internal/config/config.go:237.4,239.22 2 0 +github.com/echovault/sugardb/internal/config/config.go:239.22,240.59 1 0 +github.com/echovault/sugardb/internal/config/config.go:240.59,242.6 1 0 +github.com/echovault/sugardb/internal/config/config.go:245.4,245.39 1 0 +github.com/echovault/sugardb/internal/config/config.go:245.39,246.59 1 0 +github.com/echovault/sugardb/internal/config/config.go:246.59,248.6 1 0 +github.com/echovault/sugardb/internal/config/config.go:254.2,256.45 2 0 +github.com/echovault/sugardb/internal/config/config.go:256.45,258.3 1 0 +github.com/echovault/sugardb/internal/config/config.go:260.2,260.18 1 0 +github.com/echovault/sugardb/internal/config/default.go:9.29,42.2 3 0 +github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 0 +github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 +github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 0 +github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 0 +github.com/echovault/sugardb/internal/types.go:49.14,52.24 2 0 +github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 0 +github.com/echovault/sugardb/internal/types.go:56.23,59.4 2 0 +github.com/echovault/sugardb/internal/types.go:62.31,63.53 1 0 +github.com/echovault/sugardb/internal/types.go:65.10,66.117 1 0 +github.com/echovault/sugardb/internal/types.go:69.2,69.18 1 0 +github.com/echovault/sugardb/internal/utils.go:41.38,45.16 2 0 +github.com/echovault/sugardb/internal/utils.go:45.16,47.3 1 0 +github.com/echovault/sugardb/internal/utils.go:49.2,49.15 1 0 +github.com/echovault/sugardb/internal/utils.go:49.15,52.3 2 0 +github.com/echovault/sugardb/internal/utils.go:54.2,56.10 2 0 +github.com/echovault/sugardb/internal/utils.go:59.43,63.16 3 0 +github.com/echovault/sugardb/internal/utils.go:63.16,65.3 1 0 +github.com/echovault/sugardb/internal/utils.go:67.2,68.42 2 0 +github.com/echovault/sugardb/internal/utils.go:68.42,70.3 1 0 +github.com/echovault/sugardb/internal/utils.go:72.2,72.17 1 0 +github.com/echovault/sugardb/internal/utils.go:75.47,82.6 4 0 +github.com/echovault/sugardb/internal/utils.go:82.6,84.43 2 0 +github.com/echovault/sugardb/internal/utils.go:84.43,85.9 1 0 +github.com/echovault/sugardb/internal/utils.go:87.3,87.17 1 0 +github.com/echovault/sugardb/internal/utils.go:87.17,89.4 1 0 +github.com/echovault/sugardb/internal/utils.go:90.3,91.21 2 0 +github.com/echovault/sugardb/internal/utils.go:91.21,92.9 1 0 +github.com/echovault/sugardb/internal/utils.go:94.3,94.15 1 0 +github.com/echovault/sugardb/internal/utils.go:97.2,97.37 1 0 +github.com/echovault/sugardb/internal/utils.go:100.120,102.20 2 0 +github.com/echovault/sugardb/internal/utils.go:102.20,104.3 1 0 +github.com/echovault/sugardb/internal/utils.go:105.2,105.16 1 0 +github.com/echovault/sugardb/internal/utils.go:105.16,107.3 1 0 +github.com/echovault/sugardb/internal/utils.go:108.2,108.24 1 0 +github.com/echovault/sugardb/internal/utils.go:108.24,110.3 1 0 +github.com/echovault/sugardb/internal/utils.go:111.2,111.21 1 0 +github.com/echovault/sugardb/internal/utils.go:111.21,113.3 1 0 +github.com/echovault/sugardb/internal/utils.go:114.2,114.16 1 0 +github.com/echovault/sugardb/internal/utils.go:117.37,119.16 2 0 +github.com/echovault/sugardb/internal/utils.go:119.16,121.3 1 0 +github.com/echovault/sugardb/internal/utils.go:122.2,122.15 1 0 +github.com/echovault/sugardb/internal/utils.go:122.15,123.37 1 0 +github.com/echovault/sugardb/internal/utils.go:123.37,125.4 1 0 +github.com/echovault/sugardb/internal/utils.go:128.2,130.23 2 0 +github.com/echovault/sugardb/internal/utils.go:133.72,134.65 1 0 +github.com/echovault/sugardb/internal/utils.go:134.65,137.3 1 0 +github.com/echovault/sugardb/internal/utils.go:138.2,138.18 1 0 +github.com/echovault/sugardb/internal/utils.go:138.18,141.3 1 0 +github.com/echovault/sugardb/internal/utils.go:142.2,142.49 1 0 +github.com/echovault/sugardb/internal/utils.go:142.49,143.52 1 0 +github.com/echovault/sugardb/internal/utils.go:143.52,145.4 1 0 +github.com/echovault/sugardb/internal/utils.go:147.2,147.71 1 0 +github.com/echovault/sugardb/internal/utils.go:150.66,152.2 1 0 +github.com/echovault/sugardb/internal/utils.go:154.24,155.11 1 0 +github.com/echovault/sugardb/internal/utils.go:155.11,157.3 1 0 +github.com/echovault/sugardb/internal/utils.go:158.2,158.10 1 0 +github.com/echovault/sugardb/internal/utils.go:162.49,166.16 3 0 +github.com/echovault/sugardb/internal/utils.go:166.16,168.3 1 0 +github.com/echovault/sugardb/internal/utils.go:170.2,171.17 2 0 +github.com/echovault/sugardb/internal/utils.go:172.12,173.19 1 0 +github.com/echovault/sugardb/internal/utils.go:174.12,175.26 1 0 +github.com/echovault/sugardb/internal/utils.go:176.12,177.33 1 0 +github.com/echovault/sugardb/internal/utils.go:178.12,179.40 1 0 +github.com/echovault/sugardb/internal/utils.go:180.12,181.47 1 0 +github.com/echovault/sugardb/internal/utils.go:182.10,183.91 1 0 +github.com/echovault/sugardb/internal/utils.go:186.2,186.30 1 0 +github.com/echovault/sugardb/internal/utils.go:190.64,191.20 1 0 +github.com/echovault/sugardb/internal/utils.go:191.20,193.3 1 0 +github.com/echovault/sugardb/internal/utils.go:196.2,196.33 1 0 +github.com/echovault/sugardb/internal/utils.go:196.33,198.3 1 0 +github.com/echovault/sugardb/internal/utils.go:203.2,206.37 2 0 +github.com/echovault/sugardb/internal/utils.go:210.100,211.36 1 0 +github.com/echovault/sugardb/internal/utils.go:211.36,213.26 2 0 +github.com/echovault/sugardb/internal/utils.go:213.26,215.35 1 0 +github.com/echovault/sugardb/internal/utils.go:215.35,216.13 1 0 +github.com/echovault/sugardb/internal/utils.go:219.4,219.30 1 0 +github.com/echovault/sugardb/internal/utils.go:219.30,221.5 1 0 +github.com/echovault/sugardb/internal/utils.go:223.3,223.36 1 0 +github.com/echovault/sugardb/internal/utils.go:223.36,225.4 1 0 +github.com/echovault/sugardb/internal/utils.go:227.2,227.14 1 0 +github.com/echovault/sugardb/internal/utils.go:232.43,233.14 1 0 +github.com/echovault/sugardb/internal/utils.go:233.14,235.3 1 0 +github.com/echovault/sugardb/internal/utils.go:236.2,236.30 1 0 +github.com/echovault/sugardb/internal/utils.go:236.30,238.3 1 0 +github.com/echovault/sugardb/internal/utils.go:239.2,239.30 1 0 +github.com/echovault/sugardb/internal/utils.go:239.30,241.3 1 0 +github.com/echovault/sugardb/internal/utils.go:243.2,244.21 2 0 +github.com/echovault/sugardb/internal/utils.go:244.21,246.3 1 0 +github.com/echovault/sugardb/internal/utils.go:248.2,249.29 2 0 +github.com/echovault/sugardb/internal/utils.go:249.29,251.13 2 0 +github.com/echovault/sugardb/internal/utils.go:251.13,252.9 1 0 +github.com/echovault/sugardb/internal/utils.go:256.2,256.10 1 0 +github.com/echovault/sugardb/internal/utils.go:259.41,261.28 2 0 +github.com/echovault/sugardb/internal/utils.go:261.28,263.3 1 0 +github.com/echovault/sugardb/internal/utils.go:264.2,264.20 1 0 +github.com/echovault/sugardb/internal/utils.go:267.47,270.16 3 0 +github.com/echovault/sugardb/internal/utils.go:270.16,272.3 1 0 +github.com/echovault/sugardb/internal/utils.go:273.2,273.24 1 0 +github.com/echovault/sugardb/internal/utils.go:276.52,279.16 3 0 +github.com/echovault/sugardb/internal/utils.go:279.16,281.3 1 0 +github.com/echovault/sugardb/internal/utils.go:282.2,282.24 1 0 +github.com/echovault/sugardb/internal/utils.go:285.50,288.16 3 0 +github.com/echovault/sugardb/internal/utils.go:288.16,290.3 1 0 +github.com/echovault/sugardb/internal/utils.go:291.2,291.25 1 0 +github.com/echovault/sugardb/internal/utils.go:294.52,297.16 3 0 +github.com/echovault/sugardb/internal/utils.go:297.16,299.3 1 0 +github.com/echovault/sugardb/internal/utils.go:300.2,300.23 1 0 +github.com/echovault/sugardb/internal/utils.go:303.51,306.16 3 0 +github.com/echovault/sugardb/internal/utils.go:306.16,308.3 1 0 +github.com/echovault/sugardb/internal/utils.go:309.2,309.22 1 0 +github.com/echovault/sugardb/internal/utils.go:312.59,316.16 3 0 +github.com/echovault/sugardb/internal/utils.go:316.16,318.3 1 0 +github.com/echovault/sugardb/internal/utils.go:320.2,320.16 1 0 +github.com/echovault/sugardb/internal/utils.go:320.16,322.3 1 0 +github.com/echovault/sugardb/internal/utils.go:324.2,324.39 1 0 +github.com/echovault/sugardb/internal/utils.go:324.39,326.3 1 0 +github.com/echovault/sugardb/internal/utils.go:328.2,329.30 2 0 +github.com/echovault/sugardb/internal/utils.go:329.30,330.17 1 0 +github.com/echovault/sugardb/internal/utils.go:330.17,332.12 2 0 +github.com/echovault/sugardb/internal/utils.go:334.3,334.22 1 0 +github.com/echovault/sugardb/internal/utils.go:336.2,336.17 1 0 +github.com/echovault/sugardb/internal/utils.go:339.67,342.16 3 0 +github.com/echovault/sugardb/internal/utils.go:342.16,344.3 1 0 +github.com/echovault/sugardb/internal/utils.go:345.2,345.16 1 0 +github.com/echovault/sugardb/internal/utils.go:345.16,347.3 1 0 +github.com/echovault/sugardb/internal/utils.go:348.2,349.31 2 0 +github.com/echovault/sugardb/internal/utils.go:349.31,350.18 1 0 +github.com/echovault/sugardb/internal/utils.go:350.18,352.12 2 0 +github.com/echovault/sugardb/internal/utils.go:354.3,355.33 2 0 +github.com/echovault/sugardb/internal/utils.go:355.33,357.4 1 0 +github.com/echovault/sugardb/internal/utils.go:358.3,358.17 1 0 +github.com/echovault/sugardb/internal/utils.go:360.2,360.17 1 0 +github.com/echovault/sugardb/internal/utils.go:363.57,366.16 3 0 +github.com/echovault/sugardb/internal/utils.go:366.16,368.3 1 0 +github.com/echovault/sugardb/internal/utils.go:369.2,369.16 1 0 +github.com/echovault/sugardb/internal/utils.go:369.16,371.3 1 0 +github.com/echovault/sugardb/internal/utils.go:372.2,373.30 2 0 +github.com/echovault/sugardb/internal/utils.go:373.30,374.17 1 0 +github.com/echovault/sugardb/internal/utils.go:374.17,376.12 2 0 +github.com/echovault/sugardb/internal/utils.go:378.3,378.23 1 0 +github.com/echovault/sugardb/internal/utils.go:380.2,380.17 1 0 +github.com/echovault/sugardb/internal/utils.go:383.58,386.16 3 0 +github.com/echovault/sugardb/internal/utils.go:386.16,388.3 1 0 +github.com/echovault/sugardb/internal/utils.go:389.2,389.16 1 0 +github.com/echovault/sugardb/internal/utils.go:389.16,391.3 1 0 +github.com/echovault/sugardb/internal/utils.go:392.2,393.30 2 0 +github.com/echovault/sugardb/internal/utils.go:393.30,394.17 1 0 +github.com/echovault/sugardb/internal/utils.go:394.17,396.12 2 0 +github.com/echovault/sugardb/internal/utils.go:398.3,398.20 1 0 +github.com/echovault/sugardb/internal/utils.go:400.2,400.17 1 0 +github.com/echovault/sugardb/internal/utils.go:403.70,404.32 1 0 +github.com/echovault/sugardb/internal/utils.go:404.32,405.60 1 0 +github.com/echovault/sugardb/internal/utils.go:405.60,407.4 1 0 +github.com/echovault/sugardb/internal/utils.go:407.6,409.4 1 0 +github.com/echovault/sugardb/internal/utils.go:411.2,411.30 1 0 +github.com/echovault/sugardb/internal/utils.go:411.30,412.62 1 0 +github.com/echovault/sugardb/internal/utils.go:412.62,414.4 1 0 +github.com/echovault/sugardb/internal/utils.go:414.6,416.4 1 0 +github.com/echovault/sugardb/internal/utils.go:418.2,418.13 1 0 +github.com/echovault/sugardb/internal/utils.go:421.33,423.16 2 0 +github.com/echovault/sugardb/internal/utils.go:423.16,425.3 1 0 +github.com/echovault/sugardb/internal/utils.go:427.2,428.16 2 0 +github.com/echovault/sugardb/internal/utils.go:428.16,430.3 1 0 +github.com/echovault/sugardb/internal/utils.go:431.2,431.15 1 0 +github.com/echovault/sugardb/internal/utils.go:431.15,433.3 1 0 +github.com/echovault/sugardb/internal/utils.go:435.2,435.42 1 0 +github.com/echovault/sugardb/internal/utils.go:438.61,443.12 4 0 +github.com/echovault/sugardb/internal/utils.go:443.12,444.7 1 0 +github.com/echovault/sugardb/internal/utils.go:444.7,446.73 2 0 +github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 0 +github.com/echovault/sugardb/internal/utils.go:450.4,450.9 1 0 +github.com/echovault/sugardb/internal/utils.go:452.3,452.21 1 0 +github.com/echovault/sugardb/internal/utils.go:455.2,456.15 2 0 +github.com/echovault/sugardb/internal/utils.go:456.15,458.3 1 0 +github.com/echovault/sugardb/internal/utils.go:460.2,460.9 1 0 +github.com/echovault/sugardb/internal/utils.go:461.18,462.47 1 0 +github.com/echovault/sugardb/internal/utils.go:463.14,464.19 1 0 +github.com/echovault/sugardb/internal/utils.go:468.84,473.12 4 0 +github.com/echovault/sugardb/internal/utils.go:473.12,474.7 1 0 +github.com/echovault/sugardb/internal/utils.go:474.7,476.73 2 0 +github.com/echovault/sugardb/internal/utils.go:476.73,478.13 1 0 +github.com/echovault/sugardb/internal/utils.go:480.4,480.9 1 0 +github.com/echovault/sugardb/internal/utils.go:482.3,482.21 1 0 +github.com/echovault/sugardb/internal/utils.go:485.2,486.15 2 0 +github.com/echovault/sugardb/internal/utils.go:486.15,488.3 1 0 +github.com/echovault/sugardb/internal/utils.go:490.2,490.9 1 0 +github.com/echovault/sugardb/internal/utils.go:491.18,492.47 1 0 +github.com/echovault/sugardb/internal/utils.go:493.14,494.19 1 0 +github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 0 +github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 +github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 0 +github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 0 +github.com/echovault/sugardb/internal/types.go:49.14,52.24 2 0 +github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 0 +github.com/echovault/sugardb/internal/types.go:56.23,59.4 2 0 +github.com/echovault/sugardb/internal/types.go:62.31,63.53 1 0 +github.com/echovault/sugardb/internal/types.go:65.10,66.117 1 0 +github.com/echovault/sugardb/internal/types.go:69.2,69.18 1 0 +github.com/echovault/sugardb/internal/utils.go:41.38,45.16 2 0 +github.com/echovault/sugardb/internal/utils.go:45.16,47.3 1 0 +github.com/echovault/sugardb/internal/utils.go:49.2,49.15 1 0 +github.com/echovault/sugardb/internal/utils.go:49.15,52.3 2 0 +github.com/echovault/sugardb/internal/utils.go:54.2,56.10 2 0 +github.com/echovault/sugardb/internal/utils.go:59.43,63.16 3 0 +github.com/echovault/sugardb/internal/utils.go:63.16,65.3 1 0 +github.com/echovault/sugardb/internal/utils.go:67.2,68.42 2 0 +github.com/echovault/sugardb/internal/utils.go:68.42,70.3 1 0 +github.com/echovault/sugardb/internal/utils.go:72.2,72.17 1 0 +github.com/echovault/sugardb/internal/utils.go:75.47,82.6 4 0 +github.com/echovault/sugardb/internal/utils.go:82.6,84.43 2 0 +github.com/echovault/sugardb/internal/utils.go:84.43,85.9 1 0 +github.com/echovault/sugardb/internal/utils.go:87.3,87.17 1 0 +github.com/echovault/sugardb/internal/utils.go:87.17,89.4 1 0 +github.com/echovault/sugardb/internal/utils.go:90.3,91.21 2 0 +github.com/echovault/sugardb/internal/utils.go:91.21,92.9 1 0 +github.com/echovault/sugardb/internal/utils.go:94.3,94.15 1 0 +github.com/echovault/sugardb/internal/utils.go:97.2,97.37 1 0 +github.com/echovault/sugardb/internal/utils.go:100.120,102.20 2 0 +github.com/echovault/sugardb/internal/utils.go:102.20,104.3 1 0 +github.com/echovault/sugardb/internal/utils.go:105.2,105.16 1 0 +github.com/echovault/sugardb/internal/utils.go:105.16,107.3 1 0 +github.com/echovault/sugardb/internal/utils.go:108.2,108.24 1 0 +github.com/echovault/sugardb/internal/utils.go:108.24,110.3 1 0 +github.com/echovault/sugardb/internal/utils.go:111.2,111.21 1 0 +github.com/echovault/sugardb/internal/utils.go:111.21,113.3 1 0 +github.com/echovault/sugardb/internal/utils.go:114.2,114.16 1 0 +github.com/echovault/sugardb/internal/utils.go:117.37,119.16 2 0 +github.com/echovault/sugardb/internal/utils.go:119.16,121.3 1 0 +github.com/echovault/sugardb/internal/utils.go:122.2,122.15 1 0 +github.com/echovault/sugardb/internal/utils.go:122.15,123.37 1 0 +github.com/echovault/sugardb/internal/utils.go:123.37,125.4 1 0 +github.com/echovault/sugardb/internal/utils.go:128.2,130.23 2 0 +github.com/echovault/sugardb/internal/utils.go:133.72,134.65 1 0 +github.com/echovault/sugardb/internal/utils.go:134.65,137.3 1 0 +github.com/echovault/sugardb/internal/utils.go:138.2,138.18 1 0 +github.com/echovault/sugardb/internal/utils.go:138.18,141.3 1 0 +github.com/echovault/sugardb/internal/utils.go:142.2,142.49 1 0 +github.com/echovault/sugardb/internal/utils.go:142.49,143.52 1 0 +github.com/echovault/sugardb/internal/utils.go:143.52,145.4 1 0 +github.com/echovault/sugardb/internal/utils.go:147.2,147.71 1 0 +github.com/echovault/sugardb/internal/utils.go:150.66,152.2 1 0 +github.com/echovault/sugardb/internal/utils.go:154.24,155.11 1 0 +github.com/echovault/sugardb/internal/utils.go:155.11,157.3 1 0 +github.com/echovault/sugardb/internal/utils.go:158.2,158.10 1 0 +github.com/echovault/sugardb/internal/utils.go:162.49,166.16 3 0 +github.com/echovault/sugardb/internal/utils.go:166.16,168.3 1 0 +github.com/echovault/sugardb/internal/utils.go:170.2,171.17 2 0 +github.com/echovault/sugardb/internal/utils.go:172.12,173.19 1 0 +github.com/echovault/sugardb/internal/utils.go:174.12,175.26 1 0 +github.com/echovault/sugardb/internal/utils.go:176.12,177.33 1 0 +github.com/echovault/sugardb/internal/utils.go:178.12,179.40 1 0 +github.com/echovault/sugardb/internal/utils.go:180.12,181.47 1 0 +github.com/echovault/sugardb/internal/utils.go:182.10,183.91 1 0 +github.com/echovault/sugardb/internal/utils.go:186.2,186.30 1 0 +github.com/echovault/sugardb/internal/utils.go:190.64,191.20 1 0 +github.com/echovault/sugardb/internal/utils.go:191.20,193.3 1 0 +github.com/echovault/sugardb/internal/utils.go:196.2,196.33 1 0 +github.com/echovault/sugardb/internal/utils.go:196.33,198.3 1 0 +github.com/echovault/sugardb/internal/utils.go:203.2,206.37 2 0 +github.com/echovault/sugardb/internal/utils.go:210.100,211.36 1 1 +github.com/echovault/sugardb/internal/utils.go:211.36,213.26 2 1 +github.com/echovault/sugardb/internal/utils.go:213.26,215.35 1 1 +github.com/echovault/sugardb/internal/utils.go:215.35,216.13 1 0 +github.com/echovault/sugardb/internal/utils.go:219.4,219.30 1 1 +github.com/echovault/sugardb/internal/utils.go:219.30,221.5 1 1 +github.com/echovault/sugardb/internal/utils.go:223.3,223.36 1 1 +github.com/echovault/sugardb/internal/utils.go:223.36,225.4 1 1 +github.com/echovault/sugardb/internal/utils.go:227.2,227.14 1 1 +github.com/echovault/sugardb/internal/utils.go:232.43,233.14 1 0 +github.com/echovault/sugardb/internal/utils.go:233.14,235.3 1 0 +github.com/echovault/sugardb/internal/utils.go:236.2,236.30 1 0 +github.com/echovault/sugardb/internal/utils.go:236.30,238.3 1 0 +github.com/echovault/sugardb/internal/utils.go:239.2,239.30 1 0 +github.com/echovault/sugardb/internal/utils.go:239.30,241.3 1 0 +github.com/echovault/sugardb/internal/utils.go:243.2,244.21 2 0 +github.com/echovault/sugardb/internal/utils.go:244.21,246.3 1 0 +github.com/echovault/sugardb/internal/utils.go:248.2,249.29 2 0 +github.com/echovault/sugardb/internal/utils.go:249.29,251.13 2 0 +github.com/echovault/sugardb/internal/utils.go:251.13,252.9 1 0 +github.com/echovault/sugardb/internal/utils.go:256.2,256.10 1 0 +github.com/echovault/sugardb/internal/utils.go:259.41,261.28 2 0 +github.com/echovault/sugardb/internal/utils.go:261.28,263.3 1 0 +github.com/echovault/sugardb/internal/utils.go:264.2,264.20 1 0 +github.com/echovault/sugardb/internal/utils.go:267.47,270.16 3 0 +github.com/echovault/sugardb/internal/utils.go:270.16,272.3 1 0 +github.com/echovault/sugardb/internal/utils.go:273.2,273.24 1 0 +github.com/echovault/sugardb/internal/utils.go:276.52,279.16 3 0 +github.com/echovault/sugardb/internal/utils.go:279.16,281.3 1 0 +github.com/echovault/sugardb/internal/utils.go:282.2,282.24 1 0 +github.com/echovault/sugardb/internal/utils.go:285.50,288.16 3 0 +github.com/echovault/sugardb/internal/utils.go:288.16,290.3 1 0 +github.com/echovault/sugardb/internal/utils.go:291.2,291.25 1 0 +github.com/echovault/sugardb/internal/utils.go:294.52,297.16 3 0 +github.com/echovault/sugardb/internal/utils.go:297.16,299.3 1 0 +github.com/echovault/sugardb/internal/utils.go:300.2,300.23 1 0 +github.com/echovault/sugardb/internal/utils.go:303.51,306.16 3 0 +github.com/echovault/sugardb/internal/utils.go:306.16,308.3 1 0 +github.com/echovault/sugardb/internal/utils.go:309.2,309.22 1 0 +github.com/echovault/sugardb/internal/utils.go:312.59,316.16 3 0 +github.com/echovault/sugardb/internal/utils.go:316.16,318.3 1 0 +github.com/echovault/sugardb/internal/utils.go:320.2,320.16 1 0 +github.com/echovault/sugardb/internal/utils.go:320.16,322.3 1 0 +github.com/echovault/sugardb/internal/utils.go:324.2,324.39 1 0 +github.com/echovault/sugardb/internal/utils.go:324.39,326.3 1 0 +github.com/echovault/sugardb/internal/utils.go:328.2,329.30 2 0 +github.com/echovault/sugardb/internal/utils.go:329.30,330.17 1 0 +github.com/echovault/sugardb/internal/utils.go:330.17,332.12 2 0 +github.com/echovault/sugardb/internal/utils.go:334.3,334.22 1 0 +github.com/echovault/sugardb/internal/utils.go:336.2,336.17 1 0 +github.com/echovault/sugardb/internal/utils.go:339.67,342.16 3 0 +github.com/echovault/sugardb/internal/utils.go:342.16,344.3 1 0 +github.com/echovault/sugardb/internal/utils.go:345.2,345.16 1 0 +github.com/echovault/sugardb/internal/utils.go:345.16,347.3 1 0 +github.com/echovault/sugardb/internal/utils.go:348.2,349.31 2 0 +github.com/echovault/sugardb/internal/utils.go:349.31,350.18 1 0 +github.com/echovault/sugardb/internal/utils.go:350.18,352.12 2 0 +github.com/echovault/sugardb/internal/utils.go:354.3,355.33 2 0 +github.com/echovault/sugardb/internal/utils.go:355.33,357.4 1 0 +github.com/echovault/sugardb/internal/utils.go:358.3,358.17 1 0 +github.com/echovault/sugardb/internal/utils.go:360.2,360.17 1 0 +github.com/echovault/sugardb/internal/utils.go:363.57,366.16 3 0 +github.com/echovault/sugardb/internal/utils.go:366.16,368.3 1 0 +github.com/echovault/sugardb/internal/utils.go:369.2,369.16 1 0 +github.com/echovault/sugardb/internal/utils.go:369.16,371.3 1 0 +github.com/echovault/sugardb/internal/utils.go:372.2,373.30 2 0 +github.com/echovault/sugardb/internal/utils.go:373.30,374.17 1 0 +github.com/echovault/sugardb/internal/utils.go:374.17,376.12 2 0 +github.com/echovault/sugardb/internal/utils.go:378.3,378.23 1 0 +github.com/echovault/sugardb/internal/utils.go:380.2,380.17 1 0 +github.com/echovault/sugardb/internal/utils.go:383.58,386.16 3 0 +github.com/echovault/sugardb/internal/utils.go:386.16,388.3 1 0 +github.com/echovault/sugardb/internal/utils.go:389.2,389.16 1 0 +github.com/echovault/sugardb/internal/utils.go:389.16,391.3 1 0 +github.com/echovault/sugardb/internal/utils.go:392.2,393.30 2 0 +github.com/echovault/sugardb/internal/utils.go:393.30,394.17 1 0 +github.com/echovault/sugardb/internal/utils.go:394.17,396.12 2 0 +github.com/echovault/sugardb/internal/utils.go:398.3,398.20 1 0 +github.com/echovault/sugardb/internal/utils.go:400.2,400.17 1 0 +github.com/echovault/sugardb/internal/utils.go:403.70,404.32 1 0 +github.com/echovault/sugardb/internal/utils.go:404.32,405.60 1 0 +github.com/echovault/sugardb/internal/utils.go:405.60,407.4 1 0 +github.com/echovault/sugardb/internal/utils.go:407.6,409.4 1 0 +github.com/echovault/sugardb/internal/utils.go:411.2,411.30 1 0 +github.com/echovault/sugardb/internal/utils.go:411.30,412.62 1 0 +github.com/echovault/sugardb/internal/utils.go:412.62,414.4 1 0 +github.com/echovault/sugardb/internal/utils.go:414.6,416.4 1 0 +github.com/echovault/sugardb/internal/utils.go:418.2,418.13 1 0 +github.com/echovault/sugardb/internal/utils.go:421.33,423.16 2 0 +github.com/echovault/sugardb/internal/utils.go:423.16,425.3 1 0 +github.com/echovault/sugardb/internal/utils.go:427.2,428.16 2 0 +github.com/echovault/sugardb/internal/utils.go:428.16,430.3 1 0 +github.com/echovault/sugardb/internal/utils.go:431.2,431.15 1 0 +github.com/echovault/sugardb/internal/utils.go:431.15,433.3 1 0 +github.com/echovault/sugardb/internal/utils.go:435.2,435.42 1 0 +github.com/echovault/sugardb/internal/utils.go:438.61,443.12 4 0 +github.com/echovault/sugardb/internal/utils.go:443.12,444.7 1 0 +github.com/echovault/sugardb/internal/utils.go:444.7,446.73 2 0 +github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 0 +github.com/echovault/sugardb/internal/utils.go:450.4,450.9 1 0 +github.com/echovault/sugardb/internal/utils.go:452.3,452.21 1 0 +github.com/echovault/sugardb/internal/utils.go:455.2,456.15 2 0 +github.com/echovault/sugardb/internal/utils.go:456.15,458.3 1 0 +github.com/echovault/sugardb/internal/utils.go:460.2,460.9 1 0 +github.com/echovault/sugardb/internal/utils.go:461.18,462.47 1 0 +github.com/echovault/sugardb/internal/utils.go:463.14,464.19 1 0 +github.com/echovault/sugardb/internal/utils.go:468.84,473.12 4 0 +github.com/echovault/sugardb/internal/utils.go:473.12,474.7 1 0 +github.com/echovault/sugardb/internal/utils.go:474.7,476.73 2 0 +github.com/echovault/sugardb/internal/utils.go:476.73,478.13 1 0 +github.com/echovault/sugardb/internal/utils.go:480.4,480.9 1 0 +github.com/echovault/sugardb/internal/utils.go:482.3,482.21 1 0 +github.com/echovault/sugardb/internal/utils.go:485.2,486.15 2 0 +github.com/echovault/sugardb/internal/utils.go:486.15,488.3 1 0 +github.com/echovault/sugardb/internal/utils.go:490.2,490.9 1 0 +github.com/echovault/sugardb/internal/utils.go:491.18,492.47 1 0 +github.com/echovault/sugardb/internal/utils.go:493.14,494.19 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:44.54,45.28 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:45.28,47.3 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:50.55,51.28 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:51.28,53.3 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:56.88,57.28 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:57.28,59.3 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:62.101,63.28 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:63.28,65.3 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:68.57,69.28 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:69.28,71.3 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:74.70,80.60 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:80.60,83.4 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:84.74,84.75 0 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:87.2,87.33 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:87.33,89.3 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:92.2,92.46 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:92.46,94.17 2 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:94.17,96.4 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:97.3,98.17 2 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:98.17,100.4 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:101.3,101.15 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:104.2,104.19 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:107.44,114.16 5 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:114.16,116.3 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:119.2,119.44 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:119.44,121.3 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:123.2,123.46 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:123.46,125.3 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:127.2,127.44 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:127.44,129.3 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:132.2,132.39 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:132.39,134.3 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:136.2,136.12 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:139.37,140.21 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:140.21,142.3 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:145.2,145.47 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:145.47,147.3 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:149.2,150.16 2 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:150.16,152.3 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:154.2,154.17 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:154.17,156.3 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:158.2,159.49 2 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:159.49,161.3 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:163.2,163.83 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:163.83,164.34 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:164.34,166.4 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:169.2,169.12 1 1 +github.com/echovault/sugardb/internal/aof/preamble/store.go:172.35,175.21 3 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:175.21,177.3 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:178.2,178.41 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:178.41,180.3 1 0 +github.com/echovault/sugardb/internal/aof/preamble/store.go:181.2,181.12 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:14.23,16.43 1 1 +github.com/echovault/sugardb/internal/clock/clock.go:16.43,18.3 1 1 +github.com/echovault/sugardb/internal/clock/clock.go:19.2,19.20 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:24.34,26.2 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:28.58,30.2 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 1 +github.com/echovault/sugardb/internal/clock/clock.go:39.58,41.2 1 0 github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 0 github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 0 @@ -801,493 +1223,71 @@ github.com/echovault/sugardb/internal/clock/clock.go:24.34,26.2 1 0 github.com/echovault/sugardb/internal/clock/clock.go:28.58,30.2 1 0 github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 1 github.com/echovault/sugardb/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 0 -github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 -github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 0 -github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 0 -github.com/echovault/sugardb/internal/types.go:49.14,52.24 2 0 -github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 0 -github.com/echovault/sugardb/internal/types.go:56.23,59.4 2 0 -github.com/echovault/sugardb/internal/types.go:62.31,63.53 1 0 -github.com/echovault/sugardb/internal/types.go:65.10,66.117 1 0 -github.com/echovault/sugardb/internal/types.go:69.2,69.18 1 0 -github.com/echovault/sugardb/internal/utils.go:41.38,45.16 2 0 -github.com/echovault/sugardb/internal/utils.go:45.16,47.3 1 0 -github.com/echovault/sugardb/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/sugardb/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/sugardb/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/sugardb/internal/utils.go:59.43,63.16 3 0 -github.com/echovault/sugardb/internal/utils.go:63.16,65.3 1 0 -github.com/echovault/sugardb/internal/utils.go:67.2,68.42 2 0 -github.com/echovault/sugardb/internal/utils.go:68.42,70.3 1 0 -github.com/echovault/sugardb/internal/utils.go:72.2,72.17 1 0 -github.com/echovault/sugardb/internal/utils.go:75.47,82.6 4 0 -github.com/echovault/sugardb/internal/utils.go:82.6,84.43 2 0 -github.com/echovault/sugardb/internal/utils.go:84.43,85.9 1 0 -github.com/echovault/sugardb/internal/utils.go:87.3,87.17 1 0 -github.com/echovault/sugardb/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/sugardb/internal/utils.go:90.3,91.21 2 0 -github.com/echovault/sugardb/internal/utils.go:91.21,92.9 1 0 -github.com/echovault/sugardb/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/sugardb/internal/utils.go:97.2,97.37 1 0 -github.com/echovault/sugardb/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/sugardb/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/sugardb/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/sugardb/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/sugardb/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/sugardb/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/sugardb/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/sugardb/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/sugardb/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/sugardb/internal/utils.go:117.37,119.16 2 0 -github.com/echovault/sugardb/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/sugardb/internal/utils.go:122.2,122.15 1 0 -github.com/echovault/sugardb/internal/utils.go:122.15,123.37 1 0 -github.com/echovault/sugardb/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/sugardb/internal/utils.go:128.2,130.23 2 0 -github.com/echovault/sugardb/internal/utils.go:133.72,134.65 1 0 -github.com/echovault/sugardb/internal/utils.go:134.65,137.3 1 0 -github.com/echovault/sugardb/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/sugardb/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/sugardb/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/sugardb/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/sugardb/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/sugardb/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/sugardb/internal/utils.go:150.66,152.2 1 0 -github.com/echovault/sugardb/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/sugardb/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/sugardb/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/sugardb/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/sugardb/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/sugardb/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/sugardb/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/sugardb/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/sugardb/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/sugardb/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/sugardb/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/sugardb/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/sugardb/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/sugardb/internal/utils.go:190.64,191.20 1 0 -github.com/echovault/sugardb/internal/utils.go:191.20,193.3 1 0 -github.com/echovault/sugardb/internal/utils.go:196.2,196.33 1 0 -github.com/echovault/sugardb/internal/utils.go:196.33,198.3 1 0 -github.com/echovault/sugardb/internal/utils.go:203.2,206.37 2 0 -github.com/echovault/sugardb/internal/utils.go:210.100,211.36 1 0 -github.com/echovault/sugardb/internal/utils.go:211.36,213.26 2 0 -github.com/echovault/sugardb/internal/utils.go:213.26,215.35 1 0 -github.com/echovault/sugardb/internal/utils.go:215.35,216.13 1 0 -github.com/echovault/sugardb/internal/utils.go:219.4,219.30 1 0 -github.com/echovault/sugardb/internal/utils.go:219.30,221.5 1 0 -github.com/echovault/sugardb/internal/utils.go:223.3,223.36 1 0 -github.com/echovault/sugardb/internal/utils.go:223.36,225.4 1 0 -github.com/echovault/sugardb/internal/utils.go:227.2,227.14 1 0 -github.com/echovault/sugardb/internal/utils.go:232.43,233.14 1 0 -github.com/echovault/sugardb/internal/utils.go:233.14,235.3 1 0 -github.com/echovault/sugardb/internal/utils.go:236.2,236.30 1 0 -github.com/echovault/sugardb/internal/utils.go:236.30,238.3 1 0 -github.com/echovault/sugardb/internal/utils.go:239.2,239.30 1 0 -github.com/echovault/sugardb/internal/utils.go:239.30,241.3 1 0 -github.com/echovault/sugardb/internal/utils.go:243.2,244.21 2 0 -github.com/echovault/sugardb/internal/utils.go:244.21,246.3 1 0 -github.com/echovault/sugardb/internal/utils.go:248.2,249.29 2 0 -github.com/echovault/sugardb/internal/utils.go:249.29,251.13 2 0 -github.com/echovault/sugardb/internal/utils.go:251.13,252.9 1 0 -github.com/echovault/sugardb/internal/utils.go:256.2,256.10 1 0 -github.com/echovault/sugardb/internal/utils.go:259.41,261.28 2 0 -github.com/echovault/sugardb/internal/utils.go:261.28,263.3 1 0 -github.com/echovault/sugardb/internal/utils.go:264.2,264.20 1 0 -github.com/echovault/sugardb/internal/utils.go:267.47,270.16 3 0 -github.com/echovault/sugardb/internal/utils.go:270.16,272.3 1 0 -github.com/echovault/sugardb/internal/utils.go:273.2,273.24 1 0 -github.com/echovault/sugardb/internal/utils.go:276.52,279.16 3 0 -github.com/echovault/sugardb/internal/utils.go:279.16,281.3 1 0 -github.com/echovault/sugardb/internal/utils.go:282.2,282.24 1 0 -github.com/echovault/sugardb/internal/utils.go:285.50,288.16 3 0 -github.com/echovault/sugardb/internal/utils.go:288.16,290.3 1 0 -github.com/echovault/sugardb/internal/utils.go:291.2,291.25 1 0 -github.com/echovault/sugardb/internal/utils.go:294.52,297.16 3 0 -github.com/echovault/sugardb/internal/utils.go:297.16,299.3 1 0 -github.com/echovault/sugardb/internal/utils.go:300.2,300.23 1 0 -github.com/echovault/sugardb/internal/utils.go:303.51,306.16 3 0 -github.com/echovault/sugardb/internal/utils.go:306.16,308.3 1 0 -github.com/echovault/sugardb/internal/utils.go:309.2,309.22 1 0 -github.com/echovault/sugardb/internal/utils.go:312.59,316.16 3 0 -github.com/echovault/sugardb/internal/utils.go:316.16,318.3 1 0 -github.com/echovault/sugardb/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/sugardb/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/sugardb/internal/utils.go:324.2,324.39 1 0 -github.com/echovault/sugardb/internal/utils.go:324.39,326.3 1 0 -github.com/echovault/sugardb/internal/utils.go:328.2,329.30 2 0 -github.com/echovault/sugardb/internal/utils.go:329.30,330.17 1 0 -github.com/echovault/sugardb/internal/utils.go:330.17,332.12 2 0 -github.com/echovault/sugardb/internal/utils.go:334.3,334.22 1 0 -github.com/echovault/sugardb/internal/utils.go:336.2,336.17 1 0 -github.com/echovault/sugardb/internal/utils.go:339.67,342.16 3 0 -github.com/echovault/sugardb/internal/utils.go:342.16,344.3 1 0 -github.com/echovault/sugardb/internal/utils.go:345.2,345.16 1 0 -github.com/echovault/sugardb/internal/utils.go:345.16,347.3 1 0 -github.com/echovault/sugardb/internal/utils.go:348.2,349.31 2 0 -github.com/echovault/sugardb/internal/utils.go:349.31,350.18 1 0 -github.com/echovault/sugardb/internal/utils.go:350.18,352.12 2 0 -github.com/echovault/sugardb/internal/utils.go:354.3,355.33 2 0 -github.com/echovault/sugardb/internal/utils.go:355.33,357.4 1 0 -github.com/echovault/sugardb/internal/utils.go:358.3,358.17 1 0 -github.com/echovault/sugardb/internal/utils.go:360.2,360.17 1 0 -github.com/echovault/sugardb/internal/utils.go:363.57,366.16 3 0 -github.com/echovault/sugardb/internal/utils.go:366.16,368.3 1 0 -github.com/echovault/sugardb/internal/utils.go:369.2,369.16 1 0 -github.com/echovault/sugardb/internal/utils.go:369.16,371.3 1 0 -github.com/echovault/sugardb/internal/utils.go:372.2,373.30 2 0 -github.com/echovault/sugardb/internal/utils.go:373.30,374.17 1 0 -github.com/echovault/sugardb/internal/utils.go:374.17,376.12 2 0 -github.com/echovault/sugardb/internal/utils.go:378.3,378.23 1 0 -github.com/echovault/sugardb/internal/utils.go:380.2,380.17 1 0 -github.com/echovault/sugardb/internal/utils.go:383.58,386.16 3 0 -github.com/echovault/sugardb/internal/utils.go:386.16,388.3 1 0 -github.com/echovault/sugardb/internal/utils.go:389.2,389.16 1 0 -github.com/echovault/sugardb/internal/utils.go:389.16,391.3 1 0 -github.com/echovault/sugardb/internal/utils.go:392.2,393.30 2 0 -github.com/echovault/sugardb/internal/utils.go:393.30,394.17 1 0 -github.com/echovault/sugardb/internal/utils.go:394.17,396.12 2 0 -github.com/echovault/sugardb/internal/utils.go:398.3,398.20 1 0 -github.com/echovault/sugardb/internal/utils.go:400.2,400.17 1 0 -github.com/echovault/sugardb/internal/utils.go:403.70,404.32 1 0 -github.com/echovault/sugardb/internal/utils.go:404.32,405.60 1 0 -github.com/echovault/sugardb/internal/utils.go:405.60,407.4 1 0 -github.com/echovault/sugardb/internal/utils.go:407.6,409.4 1 0 -github.com/echovault/sugardb/internal/utils.go:411.2,411.30 1 0 -github.com/echovault/sugardb/internal/utils.go:411.30,412.62 1 0 -github.com/echovault/sugardb/internal/utils.go:412.62,414.4 1 0 -github.com/echovault/sugardb/internal/utils.go:414.6,416.4 1 0 -github.com/echovault/sugardb/internal/utils.go:418.2,418.13 1 0 -github.com/echovault/sugardb/internal/utils.go:421.33,423.16 2 0 -github.com/echovault/sugardb/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/sugardb/internal/utils.go:427.2,428.16 2 0 -github.com/echovault/sugardb/internal/utils.go:428.16,430.3 1 0 -github.com/echovault/sugardb/internal/utils.go:431.2,431.15 1 0 -github.com/echovault/sugardb/internal/utils.go:431.15,433.3 1 0 -github.com/echovault/sugardb/internal/utils.go:435.2,435.42 1 0 -github.com/echovault/sugardb/internal/utils.go:438.61,443.12 4 0 -github.com/echovault/sugardb/internal/utils.go:443.12,444.7 1 0 -github.com/echovault/sugardb/internal/utils.go:444.7,446.73 2 0 -github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 0 -github.com/echovault/sugardb/internal/utils.go:450.4,450.9 1 0 -github.com/echovault/sugardb/internal/utils.go:452.3,452.21 1 0 -github.com/echovault/sugardb/internal/utils.go:455.2,456.15 2 0 -github.com/echovault/sugardb/internal/utils.go:456.15,458.3 1 0 -github.com/echovault/sugardb/internal/utils.go:460.2,460.9 1 0 -github.com/echovault/sugardb/internal/utils.go:461.18,462.47 1 0 -github.com/echovault/sugardb/internal/utils.go:463.14,464.19 1 0 -github.com/echovault/sugardb/internal/utils.go:468.84,473.12 4 0 -github.com/echovault/sugardb/internal/utils.go:473.12,474.7 1 0 -github.com/echovault/sugardb/internal/utils.go:474.7,476.73 2 0 -github.com/echovault/sugardb/internal/utils.go:476.73,478.13 1 0 -github.com/echovault/sugardb/internal/utils.go:480.4,480.9 1 0 -github.com/echovault/sugardb/internal/utils.go:482.3,482.21 1 0 -github.com/echovault/sugardb/internal/utils.go:485.2,486.15 2 0 -github.com/echovault/sugardb/internal/utils.go:486.15,488.3 1 0 -github.com/echovault/sugardb/internal/utils.go:490.2,490.9 1 0 -github.com/echovault/sugardb/internal/utils.go:491.18,492.47 1 0 -github.com/echovault/sugardb/internal/utils.go:493.14,494.19 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:14.23,16.43 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:16.43,18.3 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/sugardb/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/sugardb/internal/config/config.go:64.34,70.24 3 0 -github.com/echovault/sugardb/internal/config/config.go:70.24,72.35 2 0 -github.com/echovault/sugardb/internal/config/config.go:72.35,74.5 1 0 -github.com/echovault/sugardb/internal/config/config.go:75.4,75.22 1 0 -github.com/echovault/sugardb/internal/config/config.go:75.22,77.5 1 0 -github.com/echovault/sugardb/internal/config/config.go:78.4,79.14 2 0 -github.com/echovault/sugardb/internal/config/config.go:82.2,82.115 1 0 -github.com/echovault/sugardb/internal/config/config.go:82.115,85.3 2 0 -github.com/echovault/sugardb/internal/config/config.go:87.2,90.29 2 0 -github.com/echovault/sugardb/internal/config/config.go:90.29,91.86 1 0 -github.com/echovault/sugardb/internal/config/config.go:91.86,93.5 1 0 -github.com/echovault/sugardb/internal/config/config.go:93.7,95.5 1 0 -github.com/echovault/sugardb/internal/config/config.go:96.4,97.14 2 0 -github.com/echovault/sugardb/internal/config/config.go:100.2,103.59 2 0 -github.com/echovault/sugardb/internal/config/config.go:103.59,105.17 2 0 -github.com/echovault/sugardb/internal/config/config.go:105.17,107.4 1 0 -github.com/echovault/sugardb/internal/config/config.go:108.3,109.13 2 0 -github.com/echovault/sugardb/internal/config/config.go:112.2,121.88 2 0 -github.com/echovault/sugardb/internal/config/config.go:121.88,128.23 3 0 -github.com/echovault/sugardb/internal/config/config.go:128.23,130.5 1 0 -github.com/echovault/sugardb/internal/config/config.go:131.4,132.14 2 0 -github.com/echovault/sugardb/internal/config/config.go:135.2,139.24 2 0 -github.com/echovault/sugardb/internal/config/config.go:139.24,140.36 1 0 -github.com/echovault/sugardb/internal/config/config.go:140.36,142.5 1 0 -github.com/echovault/sugardb/internal/config/config.go:143.4,144.14 2 0 -github.com/echovault/sugardb/internal/config/config.go:147.2,188.14 23 0 -github.com/echovault/sugardb/internal/config/config.go:188.14,190.3 1 0 -github.com/echovault/sugardb/internal/config/config.go:191.2,192.14 2 0 -github.com/echovault/sugardb/internal/config/config.go:192.14,194.3 1 0 -github.com/echovault/sugardb/internal/config/config.go:196.2,226.22 2 0 -github.com/echovault/sugardb/internal/config/config.go:226.22,228.45 1 0 -github.com/echovault/sugardb/internal/config/config.go:228.45,229.14 1 0 -github.com/echovault/sugardb/internal/config/config.go:230.9,231.17 1 0 -github.com/echovault/sugardb/internal/config/config.go:231.17,232.36 1 0 -github.com/echovault/sugardb/internal/config/config.go:232.36,234.6 1 0 -github.com/echovault/sugardb/internal/config/config.go:237.4,239.22 2 0 -github.com/echovault/sugardb/internal/config/config.go:239.22,240.59 1 0 -github.com/echovault/sugardb/internal/config/config.go:240.59,242.6 1 0 -github.com/echovault/sugardb/internal/config/config.go:245.4,245.39 1 0 -github.com/echovault/sugardb/internal/config/config.go:245.39,246.59 1 0 -github.com/echovault/sugardb/internal/config/config.go:246.59,248.6 1 0 -github.com/echovault/sugardb/internal/config/config.go:254.2,256.45 2 0 -github.com/echovault/sugardb/internal/config/config.go:256.45,258.3 1 0 -github.com/echovault/sugardb/internal/config/config.go:260.2,260.18 1 0 -github.com/echovault/sugardb/internal/config/default.go:9.29,42.2 3 0 -github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 0 -github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 -github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 0 -github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 0 -github.com/echovault/sugardb/internal/types.go:49.14,52.24 2 0 -github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 0 -github.com/echovault/sugardb/internal/types.go:56.23,59.4 2 0 -github.com/echovault/sugardb/internal/types.go:62.31,63.53 1 0 -github.com/echovault/sugardb/internal/types.go:65.10,66.117 1 0 -github.com/echovault/sugardb/internal/types.go:69.2,69.18 1 0 -github.com/echovault/sugardb/internal/utils.go:41.38,45.16 2 0 -github.com/echovault/sugardb/internal/utils.go:45.16,47.3 1 0 -github.com/echovault/sugardb/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/sugardb/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/sugardb/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/sugardb/internal/utils.go:59.43,63.16 3 0 -github.com/echovault/sugardb/internal/utils.go:63.16,65.3 1 0 -github.com/echovault/sugardb/internal/utils.go:67.2,68.42 2 0 -github.com/echovault/sugardb/internal/utils.go:68.42,70.3 1 0 -github.com/echovault/sugardb/internal/utils.go:72.2,72.17 1 0 -github.com/echovault/sugardb/internal/utils.go:75.47,82.6 4 0 -github.com/echovault/sugardb/internal/utils.go:82.6,84.43 2 0 -github.com/echovault/sugardb/internal/utils.go:84.43,85.9 1 0 -github.com/echovault/sugardb/internal/utils.go:87.3,87.17 1 0 -github.com/echovault/sugardb/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/sugardb/internal/utils.go:90.3,91.21 2 0 -github.com/echovault/sugardb/internal/utils.go:91.21,92.9 1 0 -github.com/echovault/sugardb/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/sugardb/internal/utils.go:97.2,97.37 1 0 -github.com/echovault/sugardb/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/sugardb/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/sugardb/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/sugardb/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/sugardb/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/sugardb/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/sugardb/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/sugardb/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/sugardb/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/sugardb/internal/utils.go:117.37,119.16 2 0 -github.com/echovault/sugardb/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/sugardb/internal/utils.go:122.2,122.15 1 0 -github.com/echovault/sugardb/internal/utils.go:122.15,123.37 1 0 -github.com/echovault/sugardb/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/sugardb/internal/utils.go:128.2,130.23 2 0 -github.com/echovault/sugardb/internal/utils.go:133.72,134.65 1 0 -github.com/echovault/sugardb/internal/utils.go:134.65,137.3 1 0 -github.com/echovault/sugardb/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/sugardb/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/sugardb/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/sugardb/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/sugardb/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/sugardb/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/sugardb/internal/utils.go:150.66,152.2 1 0 -github.com/echovault/sugardb/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/sugardb/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/sugardb/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/sugardb/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/sugardb/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/sugardb/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/sugardb/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/sugardb/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/sugardb/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/sugardb/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/sugardb/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/sugardb/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/sugardb/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/sugardb/internal/utils.go:190.64,191.20 1 0 -github.com/echovault/sugardb/internal/utils.go:191.20,193.3 1 0 -github.com/echovault/sugardb/internal/utils.go:196.2,196.33 1 0 -github.com/echovault/sugardb/internal/utils.go:196.33,198.3 1 0 -github.com/echovault/sugardb/internal/utils.go:203.2,206.37 2 0 -github.com/echovault/sugardb/internal/utils.go:210.100,211.36 1 1 -github.com/echovault/sugardb/internal/utils.go:211.36,213.26 2 1 -github.com/echovault/sugardb/internal/utils.go:213.26,215.35 1 1 -github.com/echovault/sugardb/internal/utils.go:215.35,216.13 1 0 -github.com/echovault/sugardb/internal/utils.go:219.4,219.30 1 1 -github.com/echovault/sugardb/internal/utils.go:219.30,221.5 1 1 -github.com/echovault/sugardb/internal/utils.go:223.3,223.36 1 1 -github.com/echovault/sugardb/internal/utils.go:223.36,225.4 1 1 -github.com/echovault/sugardb/internal/utils.go:227.2,227.14 1 1 -github.com/echovault/sugardb/internal/utils.go:232.43,233.14 1 0 -github.com/echovault/sugardb/internal/utils.go:233.14,235.3 1 0 -github.com/echovault/sugardb/internal/utils.go:236.2,236.30 1 0 -github.com/echovault/sugardb/internal/utils.go:236.30,238.3 1 0 -github.com/echovault/sugardb/internal/utils.go:239.2,239.30 1 0 -github.com/echovault/sugardb/internal/utils.go:239.30,241.3 1 0 -github.com/echovault/sugardb/internal/utils.go:243.2,244.21 2 0 -github.com/echovault/sugardb/internal/utils.go:244.21,246.3 1 0 -github.com/echovault/sugardb/internal/utils.go:248.2,249.29 2 0 -github.com/echovault/sugardb/internal/utils.go:249.29,251.13 2 0 -github.com/echovault/sugardb/internal/utils.go:251.13,252.9 1 0 -github.com/echovault/sugardb/internal/utils.go:256.2,256.10 1 0 -github.com/echovault/sugardb/internal/utils.go:259.41,261.28 2 0 -github.com/echovault/sugardb/internal/utils.go:261.28,263.3 1 0 -github.com/echovault/sugardb/internal/utils.go:264.2,264.20 1 0 -github.com/echovault/sugardb/internal/utils.go:267.47,270.16 3 0 -github.com/echovault/sugardb/internal/utils.go:270.16,272.3 1 0 -github.com/echovault/sugardb/internal/utils.go:273.2,273.24 1 0 -github.com/echovault/sugardb/internal/utils.go:276.52,279.16 3 0 -github.com/echovault/sugardb/internal/utils.go:279.16,281.3 1 0 -github.com/echovault/sugardb/internal/utils.go:282.2,282.24 1 0 -github.com/echovault/sugardb/internal/utils.go:285.50,288.16 3 0 -github.com/echovault/sugardb/internal/utils.go:288.16,290.3 1 0 -github.com/echovault/sugardb/internal/utils.go:291.2,291.25 1 0 -github.com/echovault/sugardb/internal/utils.go:294.52,297.16 3 0 -github.com/echovault/sugardb/internal/utils.go:297.16,299.3 1 0 -github.com/echovault/sugardb/internal/utils.go:300.2,300.23 1 0 -github.com/echovault/sugardb/internal/utils.go:303.51,306.16 3 0 -github.com/echovault/sugardb/internal/utils.go:306.16,308.3 1 0 -github.com/echovault/sugardb/internal/utils.go:309.2,309.22 1 0 -github.com/echovault/sugardb/internal/utils.go:312.59,316.16 3 0 -github.com/echovault/sugardb/internal/utils.go:316.16,318.3 1 0 -github.com/echovault/sugardb/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/sugardb/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/sugardb/internal/utils.go:324.2,324.39 1 0 -github.com/echovault/sugardb/internal/utils.go:324.39,326.3 1 0 -github.com/echovault/sugardb/internal/utils.go:328.2,329.30 2 0 -github.com/echovault/sugardb/internal/utils.go:329.30,330.17 1 0 -github.com/echovault/sugardb/internal/utils.go:330.17,332.12 2 0 -github.com/echovault/sugardb/internal/utils.go:334.3,334.22 1 0 -github.com/echovault/sugardb/internal/utils.go:336.2,336.17 1 0 -github.com/echovault/sugardb/internal/utils.go:339.67,342.16 3 0 -github.com/echovault/sugardb/internal/utils.go:342.16,344.3 1 0 -github.com/echovault/sugardb/internal/utils.go:345.2,345.16 1 0 -github.com/echovault/sugardb/internal/utils.go:345.16,347.3 1 0 -github.com/echovault/sugardb/internal/utils.go:348.2,349.31 2 0 -github.com/echovault/sugardb/internal/utils.go:349.31,350.18 1 0 -github.com/echovault/sugardb/internal/utils.go:350.18,352.12 2 0 -github.com/echovault/sugardb/internal/utils.go:354.3,355.33 2 0 -github.com/echovault/sugardb/internal/utils.go:355.33,357.4 1 0 -github.com/echovault/sugardb/internal/utils.go:358.3,358.17 1 0 -github.com/echovault/sugardb/internal/utils.go:360.2,360.17 1 0 -github.com/echovault/sugardb/internal/utils.go:363.57,366.16 3 0 -github.com/echovault/sugardb/internal/utils.go:366.16,368.3 1 0 -github.com/echovault/sugardb/internal/utils.go:369.2,369.16 1 0 -github.com/echovault/sugardb/internal/utils.go:369.16,371.3 1 0 -github.com/echovault/sugardb/internal/utils.go:372.2,373.30 2 0 -github.com/echovault/sugardb/internal/utils.go:373.30,374.17 1 0 -github.com/echovault/sugardb/internal/utils.go:374.17,376.12 2 0 -github.com/echovault/sugardb/internal/utils.go:378.3,378.23 1 0 -github.com/echovault/sugardb/internal/utils.go:380.2,380.17 1 0 -github.com/echovault/sugardb/internal/utils.go:383.58,386.16 3 0 -github.com/echovault/sugardb/internal/utils.go:386.16,388.3 1 0 -github.com/echovault/sugardb/internal/utils.go:389.2,389.16 1 0 -github.com/echovault/sugardb/internal/utils.go:389.16,391.3 1 0 -github.com/echovault/sugardb/internal/utils.go:392.2,393.30 2 0 -github.com/echovault/sugardb/internal/utils.go:393.30,394.17 1 0 -github.com/echovault/sugardb/internal/utils.go:394.17,396.12 2 0 -github.com/echovault/sugardb/internal/utils.go:398.3,398.20 1 0 -github.com/echovault/sugardb/internal/utils.go:400.2,400.17 1 0 -github.com/echovault/sugardb/internal/utils.go:403.70,404.32 1 0 -github.com/echovault/sugardb/internal/utils.go:404.32,405.60 1 0 -github.com/echovault/sugardb/internal/utils.go:405.60,407.4 1 0 -github.com/echovault/sugardb/internal/utils.go:407.6,409.4 1 0 -github.com/echovault/sugardb/internal/utils.go:411.2,411.30 1 0 -github.com/echovault/sugardb/internal/utils.go:411.30,412.62 1 0 -github.com/echovault/sugardb/internal/utils.go:412.62,414.4 1 0 -github.com/echovault/sugardb/internal/utils.go:414.6,416.4 1 0 -github.com/echovault/sugardb/internal/utils.go:418.2,418.13 1 0 -github.com/echovault/sugardb/internal/utils.go:421.33,423.16 2 0 -github.com/echovault/sugardb/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/sugardb/internal/utils.go:427.2,428.16 2 0 -github.com/echovault/sugardb/internal/utils.go:428.16,430.3 1 0 -github.com/echovault/sugardb/internal/utils.go:431.2,431.15 1 0 -github.com/echovault/sugardb/internal/utils.go:431.15,433.3 1 0 -github.com/echovault/sugardb/internal/utils.go:435.2,435.42 1 0 -github.com/echovault/sugardb/internal/utils.go:438.61,443.12 4 0 -github.com/echovault/sugardb/internal/utils.go:443.12,444.7 1 0 -github.com/echovault/sugardb/internal/utils.go:444.7,446.73 2 0 -github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 0 -github.com/echovault/sugardb/internal/utils.go:450.4,450.9 1 0 -github.com/echovault/sugardb/internal/utils.go:452.3,452.21 1 0 -github.com/echovault/sugardb/internal/utils.go:455.2,456.15 2 0 -github.com/echovault/sugardb/internal/utils.go:456.15,458.3 1 0 -github.com/echovault/sugardb/internal/utils.go:460.2,460.9 1 0 -github.com/echovault/sugardb/internal/utils.go:461.18,462.47 1 0 -github.com/echovault/sugardb/internal/utils.go:463.14,464.19 1 0 -github.com/echovault/sugardb/internal/utils.go:468.84,473.12 4 0 -github.com/echovault/sugardb/internal/utils.go:473.12,474.7 1 0 -github.com/echovault/sugardb/internal/utils.go:474.7,476.73 2 0 -github.com/echovault/sugardb/internal/utils.go:476.73,478.13 1 0 -github.com/echovault/sugardb/internal/utils.go:480.4,480.9 1 0 -github.com/echovault/sugardb/internal/utils.go:482.3,482.21 1 0 -github.com/echovault/sugardb/internal/utils.go:485.2,486.15 2 0 -github.com/echovault/sugardb/internal/utils.go:486.15,488.3 1 0 -github.com/echovault/sugardb/internal/utils.go:490.2,490.9 1 0 -github.com/echovault/sugardb/internal/utils.go:491.18,492.47 1 0 -github.com/echovault/sugardb/internal/utils.go:493.14,494.19 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:44.54,45.28 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:45.28,47.3 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:50.55,51.28 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:51.28,53.3 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:56.88,57.28 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:57.28,59.3 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:62.101,63.28 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:63.28,65.3 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:68.57,69.28 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:69.28,71.3 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:74.70,80.60 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:80.60,83.4 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:84.74,84.75 0 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:87.2,87.33 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:87.33,89.3 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:92.2,92.46 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:92.46,94.17 2 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:94.17,96.4 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:97.3,98.17 2 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:98.17,100.4 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:101.3,101.15 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:104.2,104.19 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:107.44,114.16 5 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:114.16,116.3 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:119.2,119.44 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:119.44,121.3 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:123.2,123.46 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:123.46,125.3 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:127.2,127.44 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:127.44,129.3 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:132.2,132.39 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:132.39,134.3 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:136.2,136.12 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:139.37,140.21 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:140.21,142.3 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:145.2,145.47 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:145.47,147.3 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:149.2,150.16 2 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:150.16,152.3 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:154.2,154.17 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:154.17,156.3 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:158.2,159.49 2 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:159.49,161.3 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:163.2,163.83 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:163.83,164.34 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:164.34,166.4 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:169.2,169.12 1 1 -github.com/echovault/sugardb/internal/aof/preamble/store.go:172.35,175.21 3 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:175.21,177.3 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:178.2,178.41 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:178.41,180.3 1 0 -github.com/echovault/sugardb/internal/aof/preamble/store.go:181.2,181.12 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/sugardb/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/sugardb/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 1 -github.com/echovault/sugardb/internal/clock/clock.go:39.58,41.2 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:32.88,35.9 2 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:35.9,37.3 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:39.2,39.33 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:40.18,42.56 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:43.20,45.62 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:46.10,47.15 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:52.60,55.16 2 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:55.16,58.3 2 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:60.2,60.12 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:64.55,66.2 0 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:42.47,46.2 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:49.54,59.16 3 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:59.16,61.3 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:63.2,63.10 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:67.54,69.55 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:69.55,72.3 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:74.2,74.20 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:75.18,77.39 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:77.39,80.4 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:81.3,82.17 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:82.17,84.4 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:86.19,88.39 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:88.39,91.4 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:93.3,99.67 3 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:99.67,101.4 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:103.20,105.39 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:105.39,108.4 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:110.3,115.17 3 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:115.17,118.4 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:120.3,120.67 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:120.67,122.4 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:127.71,129.2 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:132.56,135.2 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:138.68,140.2 0 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:33.62,37.2 1 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:40.71,42.2 1 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:45.72,52.16 4 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:52.16,55.3 2 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:57.2,59.16 2 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:59.16,61.3 1 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:65.74,67.2 0 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:56.43,63.2 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:65.58,80.26 7 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:80.26,84.4 3 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:85.26,89.4 3 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:93.2,94.41 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:94.41,99.3 4 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:101.2,104.16 3 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:104.16,106.3 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:108.2,108.37 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:108.37,111.70 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:111.70,113.18 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:113.18,115.5 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:116.4,116.14 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:119.3,119.17 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:119.17,121.4 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:123.3,123.27 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:127.45,137.2 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:141.72,154.2 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:158.75,171.2 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:173.43,176.16 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:176.16,179.3 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:181.2,182.16 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:182.16,185.3 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:187.2,187.49 1 0 github.com/echovault/sugardb/internal/eviction/lfu.go:39.30,47.2 3 1 github.com/echovault/sugardb/internal/eviction/lfu.go:49.58,51.69 1 0 github.com/echovault/sugardb/internal/eviction/lfu.go:51.69,53.3 1 0 @@ -1336,18 +1336,18 @@ github.com/echovault/sugardb/internal/eviction/lru.go:119.19,121.3 1 0 github.com/echovault/sugardb/internal/eviction/lru.go:124.50,127.2 2 1 github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 1 github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 -github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 1 -github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 1 +github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 0 +github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 0 github.com/echovault/sugardb/internal/types.go:49.14,52.24 2 1 -github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 1 -github.com/echovault/sugardb/internal/types.go:56.23,59.4 2 1 -github.com/echovault/sugardb/internal/types.go:62.31,63.53 1 1 +github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 0 +github.com/echovault/sugardb/internal/types.go:56.23,59.4 2 0 +github.com/echovault/sugardb/internal/types.go:62.31,63.53 1 0 github.com/echovault/sugardb/internal/types.go:65.10,66.117 1 0 github.com/echovault/sugardb/internal/types.go:69.2,69.18 1 1 github.com/echovault/sugardb/internal/utils.go:41.38,45.16 2 1 github.com/echovault/sugardb/internal/utils.go:45.16,47.3 1 1 -github.com/echovault/sugardb/internal/utils.go:49.2,49.15 1 1 -github.com/echovault/sugardb/internal/utils.go:49.15,52.3 2 1 +github.com/echovault/sugardb/internal/utils.go:49.2,49.15 1 0 +github.com/echovault/sugardb/internal/utils.go:49.15,52.3 2 0 github.com/echovault/sugardb/internal/utils.go:54.2,56.10 2 0 github.com/echovault/sugardb/internal/utils.go:59.43,63.16 3 1 github.com/echovault/sugardb/internal/utils.go:63.16,65.3 1 1 @@ -1387,9 +1387,9 @@ github.com/echovault/sugardb/internal/utils.go:142.49,143.52 1 1 github.com/echovault/sugardb/internal/utils.go:143.52,145.4 1 1 github.com/echovault/sugardb/internal/utils.go:147.2,147.71 1 0 github.com/echovault/sugardb/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/sugardb/internal/utils.go:154.24,155.11 1 1 +github.com/echovault/sugardb/internal/utils.go:154.24,155.11 1 0 github.com/echovault/sugardb/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/sugardb/internal/utils.go:158.2,158.10 1 1 +github.com/echovault/sugardb/internal/utils.go:158.2,158.10 1 0 github.com/echovault/sugardb/internal/utils.go:162.49,166.16 3 0 github.com/echovault/sugardb/internal/utils.go:166.16,168.3 1 0 github.com/echovault/sugardb/internal/utils.go:170.2,171.17 2 0 @@ -1405,15 +1405,15 @@ github.com/echovault/sugardb/internal/utils.go:191.20,193.3 1 1 github.com/echovault/sugardb/internal/utils.go:196.2,196.33 1 0 github.com/echovault/sugardb/internal/utils.go:196.33,198.3 1 0 github.com/echovault/sugardb/internal/utils.go:203.2,206.37 2 0 -github.com/echovault/sugardb/internal/utils.go:210.100,211.36 1 1 -github.com/echovault/sugardb/internal/utils.go:211.36,213.26 2 1 -github.com/echovault/sugardb/internal/utils.go:213.26,215.35 1 1 -github.com/echovault/sugardb/internal/utils.go:215.35,216.13 1 1 +github.com/echovault/sugardb/internal/utils.go:210.100,211.36 1 0 +github.com/echovault/sugardb/internal/utils.go:211.36,213.26 2 0 +github.com/echovault/sugardb/internal/utils.go:213.26,215.35 1 0 +github.com/echovault/sugardb/internal/utils.go:215.35,216.13 1 0 github.com/echovault/sugardb/internal/utils.go:219.4,219.30 1 0 github.com/echovault/sugardb/internal/utils.go:219.30,221.5 1 0 -github.com/echovault/sugardb/internal/utils.go:223.3,223.36 1 1 +github.com/echovault/sugardb/internal/utils.go:223.3,223.36 1 0 github.com/echovault/sugardb/internal/utils.go:223.36,225.4 1 0 -github.com/echovault/sugardb/internal/utils.go:227.2,227.14 1 1 +github.com/echovault/sugardb/internal/utils.go:227.2,227.14 1 0 github.com/echovault/sugardb/internal/utils.go:232.43,233.14 1 0 github.com/echovault/sugardb/internal/utils.go:233.14,235.3 1 0 github.com/echovault/sugardb/internal/utils.go:236.2,236.30 1 0 @@ -1527,7 +1527,7 @@ github.com/echovault/sugardb/internal/clock/clock.go:16.43,18.3 1 1 github.com/echovault/sugardb/internal/clock/clock.go:19.2,19.20 1 0 github.com/echovault/sugardb/internal/clock/clock.go:24.34,26.2 1 0 github.com/echovault/sugardb/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 1 +github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 0 github.com/echovault/sugardb/internal/clock/clock.go:39.58,41.2 1 0 github.com/echovault/sugardb/internal/memberlist/broadcast.go:32.88,35.9 2 0 github.com/echovault/sugardb/internal/memberlist/broadcast.go:35.9,37.3 1 0 @@ -1594,99 +1594,75 @@ github.com/echovault/sugardb/internal/memberlist/memberlist.go:176.16,179.3 2 0 github.com/echovault/sugardb/internal/memberlist/memberlist.go:181.2,182.16 2 0 github.com/echovault/sugardb/internal/memberlist/memberlist.go:182.16,185.3 2 0 github.com/echovault/sugardb/internal/memberlist/memberlist.go:187.2,187.49 1 0 -github.com/echovault/sugardb/internal/modules/admin/commands.go:27.78,33.29 4 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:33.29,34.54 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:34.54,40.42 4 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:40.42,42.5 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:44.4,47.12 3 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:50.3,50.36 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:50.36,57.43 5 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:57.43,59.5 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:61.4,63.21 2 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:67.2,69.25 2 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:72.76,76.35 3 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:76.35,77.65 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:77.65,78.41 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:78.41,80.5 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:81.4,81.12 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:83.3,83.13 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:86.2,86.51 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:89.75,90.29 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:91.9,96.36 4 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:96.36,97.66 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:97.66,98.52 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:98.52,102.6 3 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:103.5,103.13 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:105.4,106.14 2 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:108.3,109.26 2 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:111.9,115.56 3 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:115.56,117.4 1 0 -github.com/echovault/sugardb/internal/modules/admin/commands.go:118.3,118.53 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:118.53,122.37 3 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:122.37,123.67 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:123.67,124.53 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:124.53,125.59 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:125.59,129.8 3 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:131.6,131.14 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:133.5,133.54 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:133.54,136.6 2 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:138.9,138.61 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:138.61,142.37 3 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:142.37,143.67 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:143.67,144.53 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:144.53,146.24 2 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:146.24,149.8 2 0 -github.com/echovault/sugardb/internal/modules/admin/commands.go:151.6,151.14 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:153.5,153.33 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:153.33,156.6 2 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:158.9,158.60 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:158.60,162.37 3 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:162.37,163.67 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:163.67,164.53 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:164.53,165.55 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:165.55,169.8 3 0 -github.com/echovault/sugardb/internal/modules/admin/commands.go:171.6,171.14 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:173.5,173.50 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:173.50,176.6 2 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:178.9,180.4 1 0 -github.com/echovault/sugardb/internal/modules/admin/commands.go:181.3,182.26 2 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:183.10,184.54 1 0 -github.com/echovault/sugardb/internal/modules/admin/commands.go:188.75,190.2 1 0 -github.com/echovault/sugardb/internal/modules/admin/commands.go:192.36,201.84 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:201.84,205.5 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:215.84,219.5 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:227.86,231.7 1 0 -github.com/echovault/sugardb/internal/modules/admin/commands.go:240.86,244.7 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:254.86,258.7 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:270.84,274.5 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:275.73,276.49 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:276.49,278.6 1 0 -github.com/echovault/sugardb/internal/modules/admin/commands.go:279.5,279.45 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:289.84,293.5 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:294.73,296.18 2 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:296.18,298.6 1 0 -github.com/echovault/sugardb/internal/modules/admin/commands.go:299.5,299.53 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:309.84,313.5 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:314.73,315.47 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:315.47,317.6 1 0 -github.com/echovault/sugardb/internal/modules/admin/commands.go:318.5,318.45 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:327.84,331.5 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:341.86,345.7 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:346.75,347.34 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:347.34,349.8 1 0 -github.com/echovault/sugardb/internal/modules/admin/commands.go:350.7,351.34 2 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:351.34,353.8 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:354.7,354.75 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:354.75,356.8 1 0 -github.com/echovault/sugardb/internal/modules/admin/commands.go:357.7,357.47 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:367.86,371.7 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:372.75,373.35 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:373.35,375.8 1 0 -github.com/echovault/sugardb/internal/modules/admin/commands.go:376.7,377.47 2 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:386.86,390.7 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:391.75,394.38 3 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:394.38,396.8 1 1 -github.com/echovault/sugardb/internal/modules/admin/commands.go:397.7,397.30 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:28.68,29.56 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:29.56,31.3 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:32.2,33.9 2 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:33.9,35.3 1 0 +github.com/echovault/sugardb/internal/modules/connection/commands.go:36.2,39.116 3 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:39.116,41.3 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:42.2,42.42 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:45.68,46.29 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:47.10,48.54 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:49.9,50.34 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:51.9,52.94 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:56.68,57.30 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:57.30,59.3 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:60.2,60.93 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:63.69,64.65 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:64.65,66.3 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:68.2,68.30 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:68.30,72.3 3 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:74.2,90.16 2 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:90.16,92.3 1 0 +github.com/echovault/sugardb/internal/modules/connection/commands.go:95.2,96.16 2 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:96.16,98.3 1 0 +github.com/echovault/sugardb/internal/modules/connection/commands.go:99.2,99.45 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:99.45,101.3 1 0 +github.com/echovault/sugardb/internal/modules/connection/commands.go:102.2,105.31 2 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:105.31,107.10 2 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:107.10,109.4 1 0 +github.com/echovault/sugardb/internal/modules/connection/commands.go:110.3,116.17 3 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:116.17,118.4 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:122.2,128.60 5 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:131.70,132.30 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:132.30,134.3 1 0 +github.com/echovault/sugardb/internal/modules/connection/commands.go:136.2,137.16 2 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:137.16,139.3 1 0 +github.com/echovault/sugardb/internal/modules/connection/commands.go:140.2,140.18 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:140.18,142.3 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:144.2,147.42 3 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:150.70,151.30 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:151.30,153.3 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:155.2,156.16 2 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:156.16,158.3 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:160.2,161.16 2 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:161.16,163.3 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:165.2,165.36 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:165.36,167.3 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:169.2,171.42 2 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:174.36,185.84 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:185.84,191.5 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:203.84,209.5 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:219.84,225.5 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:237.84,243.5 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:253.84,259.5 1 1 +github.com/echovault/sugardb/internal/modules/connection/commands.go:277.84,283.5 1 1 +github.com/echovault/sugardb/internal/modules/connection/utils.go:20.80,21.19 1 1 +github.com/echovault/sugardb/internal/modules/connection/utils.go:21.19,23.3 1 1 +github.com/echovault/sugardb/internal/modules/connection/utils.go:24.2,24.33 1 1 +github.com/echovault/sugardb/internal/modules/connection/utils.go:25.14,26.19 1 1 +github.com/echovault/sugardb/internal/modules/connection/utils.go:26.19,28.4 1 0 +github.com/echovault/sugardb/internal/modules/connection/utils.go:29.3,32.43 4 1 +github.com/echovault/sugardb/internal/modules/connection/utils.go:33.17,34.19 1 1 +github.com/echovault/sugardb/internal/modules/connection/utils.go:34.19,36.4 1 0 +github.com/echovault/sugardb/internal/modules/connection/utils.go:37.3,38.43 2 1 +github.com/echovault/sugardb/internal/modules/connection/utils.go:39.10,40.76 1 0 +github.com/echovault/sugardb/internal/modules/connection/utils.go:44.104,47.34 2 1 +github.com/echovault/sugardb/internal/modules/connection/utils.go:47.34,50.3 1 1 +github.com/echovault/sugardb/internal/modules/connection/utils.go:50.8,53.3 1 1 +github.com/echovault/sugardb/internal/modules/connection/utils.go:55.2,62.44 8 1 +github.com/echovault/sugardb/internal/modules/connection/utils.go:62.44,64.3 1 1 +github.com/echovault/sugardb/internal/modules/connection/utils.go:65.2,65.12 1 1 github.com/echovault/sugardb/internal/raft/fsm.go:48.36,52.2 1 0 github.com/echovault/sugardb/internal/raft/fsm.go:55.50,56.18 1 0 github.com/echovault/sugardb/internal/raft/fsm.go:57.10,57.10 0 0 @@ -2561,497 +2537,6 @@ github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 0 github.com/echovault/sugardb/internal/types.go:49.14,52.24 2 1 github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 0 github.com/echovault/sugardb/internal/types.go:56.23,59.4 2 0 -github.com/echovault/sugardb/internal/types.go:62.31,63.53 1 0 -github.com/echovault/sugardb/internal/types.go:65.10,66.117 1 0 -github.com/echovault/sugardb/internal/types.go:69.2,69.18 1 1 -github.com/echovault/sugardb/internal/utils.go:41.38,45.16 2 1 -github.com/echovault/sugardb/internal/utils.go:45.16,47.3 1 1 -github.com/echovault/sugardb/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/sugardb/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/sugardb/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/sugardb/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/sugardb/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/sugardb/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/sugardb/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/sugardb/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/sugardb/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/sugardb/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/sugardb/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/sugardb/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/sugardb/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/sugardb/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/sugardb/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/sugardb/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/sugardb/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/sugardb/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/sugardb/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/sugardb/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/sugardb/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/sugardb/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/sugardb/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/sugardb/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/sugardb/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/sugardb/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/sugardb/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/sugardb/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/sugardb/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/sugardb/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/sugardb/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/sugardb/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/sugardb/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/sugardb/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/sugardb/internal/utils.go:138.2,138.18 1 1 -github.com/echovault/sugardb/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/sugardb/internal/utils.go:142.2,142.49 1 1 -github.com/echovault/sugardb/internal/utils.go:142.49,143.52 1 1 -github.com/echovault/sugardb/internal/utils.go:143.52,145.4 1 1 -github.com/echovault/sugardb/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/sugardb/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/sugardb/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/sugardb/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/sugardb/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/sugardb/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/sugardb/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/sugardb/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/sugardb/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/sugardb/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/sugardb/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/sugardb/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/sugardb/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/sugardb/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/sugardb/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/sugardb/internal/utils.go:190.64,191.20 1 1 -github.com/echovault/sugardb/internal/utils.go:191.20,193.3 1 1 -github.com/echovault/sugardb/internal/utils.go:196.2,196.33 1 0 -github.com/echovault/sugardb/internal/utils.go:196.33,198.3 1 0 -github.com/echovault/sugardb/internal/utils.go:203.2,206.37 2 0 -github.com/echovault/sugardb/internal/utils.go:210.100,211.36 1 0 -github.com/echovault/sugardb/internal/utils.go:211.36,213.26 2 0 -github.com/echovault/sugardb/internal/utils.go:213.26,215.35 1 0 -github.com/echovault/sugardb/internal/utils.go:215.35,216.13 1 0 -github.com/echovault/sugardb/internal/utils.go:219.4,219.30 1 0 -github.com/echovault/sugardb/internal/utils.go:219.30,221.5 1 0 -github.com/echovault/sugardb/internal/utils.go:223.3,223.36 1 0 -github.com/echovault/sugardb/internal/utils.go:223.36,225.4 1 0 -github.com/echovault/sugardb/internal/utils.go:227.2,227.14 1 0 -github.com/echovault/sugardb/internal/utils.go:232.43,233.14 1 0 -github.com/echovault/sugardb/internal/utils.go:233.14,235.3 1 0 -github.com/echovault/sugardb/internal/utils.go:236.2,236.30 1 0 -github.com/echovault/sugardb/internal/utils.go:236.30,238.3 1 0 -github.com/echovault/sugardb/internal/utils.go:239.2,239.30 1 0 -github.com/echovault/sugardb/internal/utils.go:239.30,241.3 1 0 -github.com/echovault/sugardb/internal/utils.go:243.2,244.21 2 0 -github.com/echovault/sugardb/internal/utils.go:244.21,246.3 1 0 -github.com/echovault/sugardb/internal/utils.go:248.2,249.29 2 0 -github.com/echovault/sugardb/internal/utils.go:249.29,251.13 2 0 -github.com/echovault/sugardb/internal/utils.go:251.13,252.9 1 0 -github.com/echovault/sugardb/internal/utils.go:256.2,256.10 1 0 -github.com/echovault/sugardb/internal/utils.go:259.41,261.28 2 1 -github.com/echovault/sugardb/internal/utils.go:261.28,263.3 1 1 -github.com/echovault/sugardb/internal/utils.go:264.2,264.20 1 1 -github.com/echovault/sugardb/internal/utils.go:267.47,270.16 3 0 -github.com/echovault/sugardb/internal/utils.go:270.16,272.3 1 0 -github.com/echovault/sugardb/internal/utils.go:273.2,273.24 1 0 -github.com/echovault/sugardb/internal/utils.go:276.52,279.16 3 1 -github.com/echovault/sugardb/internal/utils.go:279.16,281.3 1 0 -github.com/echovault/sugardb/internal/utils.go:282.2,282.24 1 1 -github.com/echovault/sugardb/internal/utils.go:285.50,288.16 3 0 -github.com/echovault/sugardb/internal/utils.go:288.16,290.3 1 0 -github.com/echovault/sugardb/internal/utils.go:291.2,291.25 1 0 -github.com/echovault/sugardb/internal/utils.go:294.52,297.16 3 0 -github.com/echovault/sugardb/internal/utils.go:297.16,299.3 1 0 -github.com/echovault/sugardb/internal/utils.go:300.2,300.23 1 0 -github.com/echovault/sugardb/internal/utils.go:303.51,306.16 3 0 -github.com/echovault/sugardb/internal/utils.go:306.16,308.3 1 0 -github.com/echovault/sugardb/internal/utils.go:309.2,309.22 1 0 -github.com/echovault/sugardb/internal/utils.go:312.59,316.16 3 0 -github.com/echovault/sugardb/internal/utils.go:316.16,318.3 1 0 -github.com/echovault/sugardb/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/sugardb/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/sugardb/internal/utils.go:324.2,324.39 1 0 -github.com/echovault/sugardb/internal/utils.go:324.39,326.3 1 0 -github.com/echovault/sugardb/internal/utils.go:328.2,329.30 2 0 -github.com/echovault/sugardb/internal/utils.go:329.30,330.17 1 0 -github.com/echovault/sugardb/internal/utils.go:330.17,332.12 2 0 -github.com/echovault/sugardb/internal/utils.go:334.3,334.22 1 0 -github.com/echovault/sugardb/internal/utils.go:336.2,336.17 1 0 -github.com/echovault/sugardb/internal/utils.go:339.67,342.16 3 0 -github.com/echovault/sugardb/internal/utils.go:342.16,344.3 1 0 -github.com/echovault/sugardb/internal/utils.go:345.2,345.16 1 0 -github.com/echovault/sugardb/internal/utils.go:345.16,347.3 1 0 -github.com/echovault/sugardb/internal/utils.go:348.2,349.31 2 0 -github.com/echovault/sugardb/internal/utils.go:349.31,350.18 1 0 -github.com/echovault/sugardb/internal/utils.go:350.18,352.12 2 0 -github.com/echovault/sugardb/internal/utils.go:354.3,355.33 2 0 -github.com/echovault/sugardb/internal/utils.go:355.33,357.4 1 0 -github.com/echovault/sugardb/internal/utils.go:358.3,358.17 1 0 -github.com/echovault/sugardb/internal/utils.go:360.2,360.17 1 0 -github.com/echovault/sugardb/internal/utils.go:363.57,366.16 3 0 -github.com/echovault/sugardb/internal/utils.go:366.16,368.3 1 0 -github.com/echovault/sugardb/internal/utils.go:369.2,369.16 1 0 -github.com/echovault/sugardb/internal/utils.go:369.16,371.3 1 0 -github.com/echovault/sugardb/internal/utils.go:372.2,373.30 2 0 -github.com/echovault/sugardb/internal/utils.go:373.30,374.17 1 0 -github.com/echovault/sugardb/internal/utils.go:374.17,376.12 2 0 -github.com/echovault/sugardb/internal/utils.go:378.3,378.23 1 0 -github.com/echovault/sugardb/internal/utils.go:380.2,380.17 1 0 -github.com/echovault/sugardb/internal/utils.go:383.58,386.16 3 0 -github.com/echovault/sugardb/internal/utils.go:386.16,388.3 1 0 -github.com/echovault/sugardb/internal/utils.go:389.2,389.16 1 0 -github.com/echovault/sugardb/internal/utils.go:389.16,391.3 1 0 -github.com/echovault/sugardb/internal/utils.go:392.2,393.30 2 0 -github.com/echovault/sugardb/internal/utils.go:393.30,394.17 1 0 -github.com/echovault/sugardb/internal/utils.go:394.17,396.12 2 0 -github.com/echovault/sugardb/internal/utils.go:398.3,398.20 1 0 -github.com/echovault/sugardb/internal/utils.go:400.2,400.17 1 0 -github.com/echovault/sugardb/internal/utils.go:403.70,404.32 1 0 -github.com/echovault/sugardb/internal/utils.go:404.32,405.60 1 0 -github.com/echovault/sugardb/internal/utils.go:405.60,407.4 1 0 -github.com/echovault/sugardb/internal/utils.go:407.6,409.4 1 0 -github.com/echovault/sugardb/internal/utils.go:411.2,411.30 1 0 -github.com/echovault/sugardb/internal/utils.go:411.30,412.62 1 0 -github.com/echovault/sugardb/internal/utils.go:412.62,414.4 1 0 -github.com/echovault/sugardb/internal/utils.go:414.6,416.4 1 0 -github.com/echovault/sugardb/internal/utils.go:418.2,418.13 1 0 -github.com/echovault/sugardb/internal/utils.go:421.33,423.16 2 1 -github.com/echovault/sugardb/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/sugardb/internal/utils.go:427.2,428.16 2 1 -github.com/echovault/sugardb/internal/utils.go:428.16,430.3 1 0 -github.com/echovault/sugardb/internal/utils.go:431.2,431.15 1 1 -github.com/echovault/sugardb/internal/utils.go:431.15,433.3 1 1 -github.com/echovault/sugardb/internal/utils.go:435.2,435.42 1 1 -github.com/echovault/sugardb/internal/utils.go:438.61,443.12 4 1 -github.com/echovault/sugardb/internal/utils.go:443.12,444.7 1 1 -github.com/echovault/sugardb/internal/utils.go:444.7,446.73 2 1 -github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 1 -github.com/echovault/sugardb/internal/utils.go:450.4,450.9 1 1 -github.com/echovault/sugardb/internal/utils.go:452.3,452.21 1 1 -github.com/echovault/sugardb/internal/utils.go:455.2,456.15 2 1 -github.com/echovault/sugardb/internal/utils.go:456.15,458.3 1 1 -github.com/echovault/sugardb/internal/utils.go:460.2,460.9 1 1 -github.com/echovault/sugardb/internal/utils.go:461.18,462.47 1 0 -github.com/echovault/sugardb/internal/utils.go:463.14,464.19 1 1 -github.com/echovault/sugardb/internal/utils.go:468.84,473.12 4 0 -github.com/echovault/sugardb/internal/utils.go:473.12,474.7 1 0 -github.com/echovault/sugardb/internal/utils.go:474.7,476.73 2 0 -github.com/echovault/sugardb/internal/utils.go:476.73,478.13 1 0 -github.com/echovault/sugardb/internal/utils.go:480.4,480.9 1 0 -github.com/echovault/sugardb/internal/utils.go:482.3,482.21 1 0 -github.com/echovault/sugardb/internal/utils.go:485.2,486.15 2 0 -github.com/echovault/sugardb/internal/utils.go:486.15,488.3 1 0 -github.com/echovault/sugardb/internal/utils.go:490.2,490.9 1 0 -github.com/echovault/sugardb/internal/utils.go:491.18,492.47 1 0 -github.com/echovault/sugardb/internal/utils.go:493.14,494.19 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/sugardb/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/sugardb/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/sugardb/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:56.43,63.2 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:65.58,80.26 7 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:80.26,84.4 3 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:85.26,89.4 3 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:93.2,94.41 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:94.41,99.3 4 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:101.2,104.16 3 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:104.16,106.3 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:108.2,108.37 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:108.37,111.70 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:111.70,113.18 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:113.18,115.5 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:116.4,116.14 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:119.3,119.17 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:119.17,121.4 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:123.3,123.27 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:127.45,137.2 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:141.72,154.2 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:158.75,171.2 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:173.43,176.16 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:176.16,179.3 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:181.2,182.16 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:182.16,185.3 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:187.2,187.49 1 0 -github.com/echovault/sugardb/internal/modules/connection/commands.go:28.68,29.56 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:29.56,31.3 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:32.2,33.9 2 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:33.9,35.3 1 0 -github.com/echovault/sugardb/internal/modules/connection/commands.go:36.2,39.116 3 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:39.116,41.3 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:42.2,42.42 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:45.68,46.29 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:47.10,48.54 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:49.9,50.34 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:51.9,52.94 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:56.68,57.30 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:57.30,59.3 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:60.2,60.93 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:63.69,64.65 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:64.65,66.3 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:68.2,68.30 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:68.30,72.3 3 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:74.2,90.16 2 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:90.16,92.3 1 0 -github.com/echovault/sugardb/internal/modules/connection/commands.go:95.2,96.16 2 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:96.16,98.3 1 0 -github.com/echovault/sugardb/internal/modules/connection/commands.go:99.2,99.45 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:99.45,101.3 1 0 -github.com/echovault/sugardb/internal/modules/connection/commands.go:102.2,105.31 2 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:105.31,107.10 2 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:107.10,109.4 1 0 -github.com/echovault/sugardb/internal/modules/connection/commands.go:110.3,116.17 3 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:116.17,118.4 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:122.2,128.60 5 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:131.70,132.30 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:132.30,134.3 1 0 -github.com/echovault/sugardb/internal/modules/connection/commands.go:136.2,137.16 2 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:137.16,139.3 1 0 -github.com/echovault/sugardb/internal/modules/connection/commands.go:140.2,140.18 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:140.18,142.3 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:144.2,147.42 3 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:150.70,151.30 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:151.30,153.3 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:155.2,156.16 2 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:156.16,158.3 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:160.2,161.16 2 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:161.16,163.3 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:165.2,165.36 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:165.36,167.3 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:169.2,171.42 2 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:174.36,185.84 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:185.84,191.5 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:203.84,209.5 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:219.84,225.5 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:237.84,243.5 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:253.84,259.5 1 1 -github.com/echovault/sugardb/internal/modules/connection/commands.go:277.84,283.5 1 1 -github.com/echovault/sugardb/internal/modules/connection/utils.go:20.80,21.19 1 1 -github.com/echovault/sugardb/internal/modules/connection/utils.go:21.19,23.3 1 1 -github.com/echovault/sugardb/internal/modules/connection/utils.go:24.2,24.33 1 1 -github.com/echovault/sugardb/internal/modules/connection/utils.go:25.14,26.19 1 1 -github.com/echovault/sugardb/internal/modules/connection/utils.go:26.19,28.4 1 0 -github.com/echovault/sugardb/internal/modules/connection/utils.go:29.3,32.43 4 1 -github.com/echovault/sugardb/internal/modules/connection/utils.go:33.17,34.19 1 1 -github.com/echovault/sugardb/internal/modules/connection/utils.go:34.19,36.4 1 0 -github.com/echovault/sugardb/internal/modules/connection/utils.go:37.3,38.43 2 1 -github.com/echovault/sugardb/internal/modules/connection/utils.go:39.10,40.76 1 0 -github.com/echovault/sugardb/internal/modules/connection/utils.go:44.104,47.34 2 1 -github.com/echovault/sugardb/internal/modules/connection/utils.go:47.34,50.3 1 1 -github.com/echovault/sugardb/internal/modules/connection/utils.go:50.8,53.3 1 1 -github.com/echovault/sugardb/internal/modules/connection/utils.go:55.2,62.44 8 1 -github.com/echovault/sugardb/internal/modules/connection/utils.go:62.44,64.3 1 1 -github.com/echovault/sugardb/internal/modules/connection/utils.go:65.2,65.12 1 1 -github.com/echovault/sugardb/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/sugardb/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:69.3,74.40 5 0 -github.com/echovault/sugardb/internal/raft/fsm.go:75.11,79.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:81.21,82.66 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:82.66,87.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:88.4,91.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:93.18,96.18 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:96.18,101.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:103.4,106.18 3 0 -github.com/echovault/sugardb/internal/raft/fsm.go:106.18,111.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:112.4,113.10 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:113.10,115.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:117.4,117.96 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:117.96,122.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:122.10,127.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:131.2,131.12 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:135.54,143.2 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:146.55,149.16 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:149.16,152.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:154.2,159.48 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:159.48,162.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:165.2,165.81 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:165.81,167.34 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:167.34,168.96 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:168.96,170.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:171.4,171.60 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:176.2,178.12 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/sugardb/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/sugardb/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/sugardb/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/sugardb/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/sugardb/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/sugardb/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:69.3,74.40 5 0 -github.com/echovault/sugardb/internal/raft/fsm.go:75.11,79.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:81.21,82.66 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:82.66,87.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:88.4,91.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:93.18,96.18 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:96.18,101.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:103.4,106.18 3 0 -github.com/echovault/sugardb/internal/raft/fsm.go:106.18,111.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:112.4,113.10 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:113.10,115.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:117.4,117.96 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:117.96,122.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:122.10,127.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:131.2,131.12 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:135.54,143.2 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:146.55,149.16 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:149.16,152.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:154.2,159.48 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:159.48,162.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:165.2,165.81 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:165.81,167.34 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:167.34,168.96 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:168.96,170.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:171.4,171.60 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:176.2,178.12 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/sugardb/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/sugardb/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/sugardb/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/sugardb/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/sugardb/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 1 -github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 -github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 0 -github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 0 -github.com/echovault/sugardb/internal/types.go:49.14,52.24 2 1 -github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 0 -github.com/echovault/sugardb/internal/types.go:56.23,59.4 2 0 github.com/echovault/sugardb/internal/types.go:62.31,63.53 1 1 github.com/echovault/sugardb/internal/types.go:65.10,66.117 1 0 github.com/echovault/sugardb/internal/types.go:69.2,69.18 1 1 @@ -3743,29 +3228,440 @@ github.com/echovault/sugardb/internal/raft/raft.go:218.31,220.22 1 0 github.com/echovault/sugardb/internal/raft/raft.go:220.22,222.17 2 0 github.com/echovault/sugardb/internal/raft/raft.go:222.17,225.4 2 0 github.com/echovault/sugardb/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:33.82,34.19 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:34.19,36.3 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:37.2,37.33 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:46.34,49.16 2 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:49.16,51.3 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:52.2,55.13 3 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:55.13,57.3 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:59.2,60.9 2 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:60.9,62.3 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:64.2,65.20 2 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:65.20,67.17 2 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:67.17,69.4 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:72.2,72.56 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:33.82,34.19 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:34.19,36.3 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:37.2,37.34 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:46.34,49.16 2 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:49.16,51.3 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:52.2,55.16 3 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:55.16,57.3 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:59.2,60.16 2 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:60.16,62.3 1 0 -github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:64.2,64.31 1 0 +github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 1 +github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 +github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 1 +github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 1 +github.com/echovault/sugardb/internal/types.go:49.14,52.24 2 1 +github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 1 +github.com/echovault/sugardb/internal/types.go:56.23,59.4 2 1 +github.com/echovault/sugardb/internal/types.go:62.31,63.53 1 1 +github.com/echovault/sugardb/internal/types.go:65.10,66.117 1 0 +github.com/echovault/sugardb/internal/types.go:69.2,69.18 1 1 +github.com/echovault/sugardb/internal/utils.go:41.38,45.16 2 1 +github.com/echovault/sugardb/internal/utils.go:45.16,47.3 1 1 +github.com/echovault/sugardb/internal/utils.go:49.2,49.15 1 1 +github.com/echovault/sugardb/internal/utils.go:49.15,52.3 2 1 +github.com/echovault/sugardb/internal/utils.go:54.2,56.10 2 0 +github.com/echovault/sugardb/internal/utils.go:59.43,63.16 3 1 +github.com/echovault/sugardb/internal/utils.go:63.16,65.3 1 1 +github.com/echovault/sugardb/internal/utils.go:67.2,68.42 2 1 +github.com/echovault/sugardb/internal/utils.go:68.42,70.3 1 1 +github.com/echovault/sugardb/internal/utils.go:72.2,72.17 1 1 +github.com/echovault/sugardb/internal/utils.go:75.47,82.6 4 1 +github.com/echovault/sugardb/internal/utils.go:82.6,84.43 2 1 +github.com/echovault/sugardb/internal/utils.go:84.43,85.9 1 1 +github.com/echovault/sugardb/internal/utils.go:87.3,87.17 1 1 +github.com/echovault/sugardb/internal/utils.go:87.17,89.4 1 0 +github.com/echovault/sugardb/internal/utils.go:90.3,91.21 2 1 +github.com/echovault/sugardb/internal/utils.go:91.21,92.9 1 1 +github.com/echovault/sugardb/internal/utils.go:94.3,94.15 1 0 +github.com/echovault/sugardb/internal/utils.go:97.2,97.37 1 1 +github.com/echovault/sugardb/internal/utils.go:100.120,102.20 2 0 +github.com/echovault/sugardb/internal/utils.go:102.20,104.3 1 0 +github.com/echovault/sugardb/internal/utils.go:105.2,105.16 1 0 +github.com/echovault/sugardb/internal/utils.go:105.16,107.3 1 0 +github.com/echovault/sugardb/internal/utils.go:108.2,108.24 1 0 +github.com/echovault/sugardb/internal/utils.go:108.24,110.3 1 0 +github.com/echovault/sugardb/internal/utils.go:111.2,111.21 1 0 +github.com/echovault/sugardb/internal/utils.go:111.21,113.3 1 0 +github.com/echovault/sugardb/internal/utils.go:114.2,114.16 1 0 +github.com/echovault/sugardb/internal/utils.go:117.37,119.16 2 1 +github.com/echovault/sugardb/internal/utils.go:119.16,121.3 1 0 +github.com/echovault/sugardb/internal/utils.go:122.2,122.15 1 1 +github.com/echovault/sugardb/internal/utils.go:122.15,123.37 1 1 +github.com/echovault/sugardb/internal/utils.go:123.37,125.4 1 0 +github.com/echovault/sugardb/internal/utils.go:128.2,130.23 2 1 +github.com/echovault/sugardb/internal/utils.go:133.72,134.65 1 1 +github.com/echovault/sugardb/internal/utils.go:134.65,137.3 1 1 +github.com/echovault/sugardb/internal/utils.go:138.2,138.18 1 1 +github.com/echovault/sugardb/internal/utils.go:138.18,141.3 1 0 +github.com/echovault/sugardb/internal/utils.go:142.2,142.49 1 1 +github.com/echovault/sugardb/internal/utils.go:142.49,143.52 1 1 +github.com/echovault/sugardb/internal/utils.go:143.52,145.4 1 1 +github.com/echovault/sugardb/internal/utils.go:147.2,147.71 1 0 +github.com/echovault/sugardb/internal/utils.go:150.66,152.2 1 1 +github.com/echovault/sugardb/internal/utils.go:154.24,155.11 1 1 +github.com/echovault/sugardb/internal/utils.go:155.11,157.3 1 0 +github.com/echovault/sugardb/internal/utils.go:158.2,158.10 1 1 +github.com/echovault/sugardb/internal/utils.go:162.49,166.16 3 0 +github.com/echovault/sugardb/internal/utils.go:166.16,168.3 1 0 +github.com/echovault/sugardb/internal/utils.go:170.2,171.17 2 0 +github.com/echovault/sugardb/internal/utils.go:172.12,173.19 1 0 +github.com/echovault/sugardb/internal/utils.go:174.12,175.26 1 0 +github.com/echovault/sugardb/internal/utils.go:176.12,177.33 1 0 +github.com/echovault/sugardb/internal/utils.go:178.12,179.40 1 0 +github.com/echovault/sugardb/internal/utils.go:180.12,181.47 1 0 +github.com/echovault/sugardb/internal/utils.go:182.10,183.91 1 0 +github.com/echovault/sugardb/internal/utils.go:186.2,186.30 1 0 +github.com/echovault/sugardb/internal/utils.go:190.64,191.20 1 1 +github.com/echovault/sugardb/internal/utils.go:191.20,193.3 1 1 +github.com/echovault/sugardb/internal/utils.go:196.2,196.33 1 0 +github.com/echovault/sugardb/internal/utils.go:196.33,198.3 1 0 +github.com/echovault/sugardb/internal/utils.go:203.2,206.37 2 0 +github.com/echovault/sugardb/internal/utils.go:210.100,211.36 1 1 +github.com/echovault/sugardb/internal/utils.go:211.36,213.26 2 1 +github.com/echovault/sugardb/internal/utils.go:213.26,215.35 1 1 +github.com/echovault/sugardb/internal/utils.go:215.35,216.13 1 1 +github.com/echovault/sugardb/internal/utils.go:219.4,219.30 1 0 +github.com/echovault/sugardb/internal/utils.go:219.30,221.5 1 0 +github.com/echovault/sugardb/internal/utils.go:223.3,223.36 1 1 +github.com/echovault/sugardb/internal/utils.go:223.36,225.4 1 0 +github.com/echovault/sugardb/internal/utils.go:227.2,227.14 1 1 +github.com/echovault/sugardb/internal/utils.go:232.43,233.14 1 0 +github.com/echovault/sugardb/internal/utils.go:233.14,235.3 1 0 +github.com/echovault/sugardb/internal/utils.go:236.2,236.30 1 0 +github.com/echovault/sugardb/internal/utils.go:236.30,238.3 1 0 +github.com/echovault/sugardb/internal/utils.go:239.2,239.30 1 0 +github.com/echovault/sugardb/internal/utils.go:239.30,241.3 1 0 +github.com/echovault/sugardb/internal/utils.go:243.2,244.21 2 0 +github.com/echovault/sugardb/internal/utils.go:244.21,246.3 1 0 +github.com/echovault/sugardb/internal/utils.go:248.2,249.29 2 0 +github.com/echovault/sugardb/internal/utils.go:249.29,251.13 2 0 +github.com/echovault/sugardb/internal/utils.go:251.13,252.9 1 0 +github.com/echovault/sugardb/internal/utils.go:256.2,256.10 1 0 +github.com/echovault/sugardb/internal/utils.go:259.41,261.28 2 1 +github.com/echovault/sugardb/internal/utils.go:261.28,263.3 1 1 +github.com/echovault/sugardb/internal/utils.go:264.2,264.20 1 1 +github.com/echovault/sugardb/internal/utils.go:267.47,270.16 3 0 +github.com/echovault/sugardb/internal/utils.go:270.16,272.3 1 0 +github.com/echovault/sugardb/internal/utils.go:273.2,273.24 1 0 +github.com/echovault/sugardb/internal/utils.go:276.52,279.16 3 1 +github.com/echovault/sugardb/internal/utils.go:279.16,281.3 1 0 +github.com/echovault/sugardb/internal/utils.go:282.2,282.24 1 1 +github.com/echovault/sugardb/internal/utils.go:285.50,288.16 3 0 +github.com/echovault/sugardb/internal/utils.go:288.16,290.3 1 0 +github.com/echovault/sugardb/internal/utils.go:291.2,291.25 1 0 +github.com/echovault/sugardb/internal/utils.go:294.52,297.16 3 0 +github.com/echovault/sugardb/internal/utils.go:297.16,299.3 1 0 +github.com/echovault/sugardb/internal/utils.go:300.2,300.23 1 0 +github.com/echovault/sugardb/internal/utils.go:303.51,306.16 3 0 +github.com/echovault/sugardb/internal/utils.go:306.16,308.3 1 0 +github.com/echovault/sugardb/internal/utils.go:309.2,309.22 1 0 +github.com/echovault/sugardb/internal/utils.go:312.59,316.16 3 0 +github.com/echovault/sugardb/internal/utils.go:316.16,318.3 1 0 +github.com/echovault/sugardb/internal/utils.go:320.2,320.16 1 0 +github.com/echovault/sugardb/internal/utils.go:320.16,322.3 1 0 +github.com/echovault/sugardb/internal/utils.go:324.2,324.39 1 0 +github.com/echovault/sugardb/internal/utils.go:324.39,326.3 1 0 +github.com/echovault/sugardb/internal/utils.go:328.2,329.30 2 0 +github.com/echovault/sugardb/internal/utils.go:329.30,330.17 1 0 +github.com/echovault/sugardb/internal/utils.go:330.17,332.12 2 0 +github.com/echovault/sugardb/internal/utils.go:334.3,334.22 1 0 +github.com/echovault/sugardb/internal/utils.go:336.2,336.17 1 0 +github.com/echovault/sugardb/internal/utils.go:339.67,342.16 3 0 +github.com/echovault/sugardb/internal/utils.go:342.16,344.3 1 0 +github.com/echovault/sugardb/internal/utils.go:345.2,345.16 1 0 +github.com/echovault/sugardb/internal/utils.go:345.16,347.3 1 0 +github.com/echovault/sugardb/internal/utils.go:348.2,349.31 2 0 +github.com/echovault/sugardb/internal/utils.go:349.31,350.18 1 0 +github.com/echovault/sugardb/internal/utils.go:350.18,352.12 2 0 +github.com/echovault/sugardb/internal/utils.go:354.3,355.33 2 0 +github.com/echovault/sugardb/internal/utils.go:355.33,357.4 1 0 +github.com/echovault/sugardb/internal/utils.go:358.3,358.17 1 0 +github.com/echovault/sugardb/internal/utils.go:360.2,360.17 1 0 +github.com/echovault/sugardb/internal/utils.go:363.57,366.16 3 0 +github.com/echovault/sugardb/internal/utils.go:366.16,368.3 1 0 +github.com/echovault/sugardb/internal/utils.go:369.2,369.16 1 0 +github.com/echovault/sugardb/internal/utils.go:369.16,371.3 1 0 +github.com/echovault/sugardb/internal/utils.go:372.2,373.30 2 0 +github.com/echovault/sugardb/internal/utils.go:373.30,374.17 1 0 +github.com/echovault/sugardb/internal/utils.go:374.17,376.12 2 0 +github.com/echovault/sugardb/internal/utils.go:378.3,378.23 1 0 +github.com/echovault/sugardb/internal/utils.go:380.2,380.17 1 0 +github.com/echovault/sugardb/internal/utils.go:383.58,386.16 3 0 +github.com/echovault/sugardb/internal/utils.go:386.16,388.3 1 0 +github.com/echovault/sugardb/internal/utils.go:389.2,389.16 1 0 +github.com/echovault/sugardb/internal/utils.go:389.16,391.3 1 0 +github.com/echovault/sugardb/internal/utils.go:392.2,393.30 2 0 +github.com/echovault/sugardb/internal/utils.go:393.30,394.17 1 0 +github.com/echovault/sugardb/internal/utils.go:394.17,396.12 2 0 +github.com/echovault/sugardb/internal/utils.go:398.3,398.20 1 0 +github.com/echovault/sugardb/internal/utils.go:400.2,400.17 1 0 +github.com/echovault/sugardb/internal/utils.go:403.70,404.32 1 0 +github.com/echovault/sugardb/internal/utils.go:404.32,405.60 1 0 +github.com/echovault/sugardb/internal/utils.go:405.60,407.4 1 0 +github.com/echovault/sugardb/internal/utils.go:407.6,409.4 1 0 +github.com/echovault/sugardb/internal/utils.go:411.2,411.30 1 0 +github.com/echovault/sugardb/internal/utils.go:411.30,412.62 1 0 +github.com/echovault/sugardb/internal/utils.go:412.62,414.4 1 0 +github.com/echovault/sugardb/internal/utils.go:414.6,416.4 1 0 +github.com/echovault/sugardb/internal/utils.go:418.2,418.13 1 0 +github.com/echovault/sugardb/internal/utils.go:421.33,423.16 2 1 +github.com/echovault/sugardb/internal/utils.go:423.16,425.3 1 0 +github.com/echovault/sugardb/internal/utils.go:427.2,428.16 2 1 +github.com/echovault/sugardb/internal/utils.go:428.16,430.3 1 0 +github.com/echovault/sugardb/internal/utils.go:431.2,431.15 1 1 +github.com/echovault/sugardb/internal/utils.go:431.15,433.3 1 1 +github.com/echovault/sugardb/internal/utils.go:435.2,435.42 1 1 +github.com/echovault/sugardb/internal/utils.go:438.61,443.12 4 1 +github.com/echovault/sugardb/internal/utils.go:443.12,444.7 1 1 +github.com/echovault/sugardb/internal/utils.go:444.7,446.73 2 1 +github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 0 +github.com/echovault/sugardb/internal/utils.go:450.4,450.9 1 1 +github.com/echovault/sugardb/internal/utils.go:452.3,452.21 1 1 +github.com/echovault/sugardb/internal/utils.go:455.2,456.15 2 1 +github.com/echovault/sugardb/internal/utils.go:456.15,458.3 1 1 +github.com/echovault/sugardb/internal/utils.go:460.2,460.9 1 1 +github.com/echovault/sugardb/internal/utils.go:461.18,462.47 1 0 +github.com/echovault/sugardb/internal/utils.go:463.14,464.19 1 1 +github.com/echovault/sugardb/internal/utils.go:468.84,473.12 4 0 +github.com/echovault/sugardb/internal/utils.go:473.12,474.7 1 0 +github.com/echovault/sugardb/internal/utils.go:474.7,476.73 2 0 +github.com/echovault/sugardb/internal/utils.go:476.73,478.13 1 0 +github.com/echovault/sugardb/internal/utils.go:480.4,480.9 1 0 +github.com/echovault/sugardb/internal/utils.go:482.3,482.21 1 0 +github.com/echovault/sugardb/internal/utils.go:485.2,486.15 2 0 +github.com/echovault/sugardb/internal/utils.go:486.15,488.3 1 0 +github.com/echovault/sugardb/internal/utils.go:490.2,490.9 1 0 +github.com/echovault/sugardb/internal/utils.go:491.18,492.47 1 0 +github.com/echovault/sugardb/internal/utils.go:493.14,494.19 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:14.23,16.43 1 1 +github.com/echovault/sugardb/internal/clock/clock.go:16.43,18.3 1 1 +github.com/echovault/sugardb/internal/clock/clock.go:19.2,19.20 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:24.34,26.2 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:28.58,30.2 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 1 +github.com/echovault/sugardb/internal/clock/clock.go:39.58,41.2 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:32.88,35.9 2 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:35.9,37.3 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:39.2,39.33 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:40.18,42.56 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:43.20,45.62 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:46.10,47.15 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:52.60,55.16 2 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:55.16,58.3 2 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:60.2,60.12 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:64.55,66.2 0 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:42.47,46.2 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:49.54,59.16 3 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:59.16,61.3 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:63.2,63.10 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:67.54,69.55 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:69.55,72.3 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:74.2,74.20 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:75.18,77.39 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:77.39,80.4 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:81.3,82.17 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:82.17,84.4 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:86.19,88.39 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:88.39,91.4 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:93.3,99.67 3 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:99.67,101.4 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:103.20,105.39 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:105.39,108.4 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:110.3,115.17 3 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:115.17,118.4 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:120.3,120.67 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:120.67,122.4 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:127.71,129.2 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:132.56,135.2 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:138.68,140.2 0 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:33.62,37.2 1 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:40.71,42.2 1 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:45.72,52.16 4 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:52.16,55.3 2 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:57.2,59.16 2 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:59.16,61.3 1 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:65.74,67.2 0 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:56.43,63.2 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:65.58,80.26 7 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:80.26,84.4 3 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:85.26,89.4 3 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:93.2,94.41 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:94.41,99.3 4 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:101.2,104.16 3 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:104.16,106.3 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:108.2,108.37 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:108.37,111.70 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:111.70,113.18 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:113.18,115.5 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:116.4,116.14 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:119.3,119.17 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:119.17,121.4 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:123.3,123.27 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:127.45,137.2 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:141.72,154.2 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:158.75,171.2 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:173.43,176.16 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:176.16,179.3 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:181.2,182.16 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:182.16,185.3 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:187.2,187.49 1 0 +github.com/echovault/sugardb/internal/modules/admin/commands.go:27.78,33.29 4 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:33.29,34.54 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:34.54,40.42 4 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:40.42,42.5 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:44.4,47.12 3 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:50.3,50.36 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:50.36,57.43 5 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:57.43,59.5 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:61.4,63.21 2 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:67.2,69.25 2 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:72.76,76.35 3 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:76.35,77.65 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:77.65,78.41 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:78.41,80.5 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:81.4,81.12 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:83.3,83.13 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:86.2,86.51 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:89.75,90.29 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:91.9,96.36 4 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:96.36,97.66 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:97.66,98.52 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:98.52,102.6 3 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:103.5,103.13 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:105.4,106.14 2 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:108.3,109.26 2 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:111.9,115.56 3 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:115.56,117.4 1 0 +github.com/echovault/sugardb/internal/modules/admin/commands.go:118.3,118.53 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:118.53,122.37 3 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:122.37,123.67 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:123.67,124.53 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:124.53,125.59 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:125.59,129.8 3 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:131.6,131.14 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:133.5,133.54 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:133.54,136.6 2 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:138.9,138.61 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:138.61,142.37 3 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:142.37,143.67 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:143.67,144.53 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:144.53,146.24 2 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:146.24,149.8 2 0 +github.com/echovault/sugardb/internal/modules/admin/commands.go:151.6,151.14 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:153.5,153.33 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:153.33,156.6 2 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:158.9,158.60 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:158.60,162.37 3 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:162.37,163.67 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:163.67,164.53 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:164.53,165.55 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:165.55,169.8 3 0 +github.com/echovault/sugardb/internal/modules/admin/commands.go:171.6,171.14 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:173.5,173.50 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:173.50,176.6 2 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:178.9,180.4 1 0 +github.com/echovault/sugardb/internal/modules/admin/commands.go:181.3,182.26 2 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:183.10,184.54 1 0 +github.com/echovault/sugardb/internal/modules/admin/commands.go:188.75,190.2 1 0 +github.com/echovault/sugardb/internal/modules/admin/commands.go:192.36,201.84 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:201.84,205.5 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:215.84,219.5 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:227.86,231.7 1 0 +github.com/echovault/sugardb/internal/modules/admin/commands.go:240.86,244.7 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:254.86,258.7 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:270.84,274.5 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:275.73,276.49 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:276.49,278.6 1 0 +github.com/echovault/sugardb/internal/modules/admin/commands.go:279.5,279.45 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:289.84,293.5 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:294.73,296.18 2 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:296.18,298.6 1 0 +github.com/echovault/sugardb/internal/modules/admin/commands.go:299.5,299.53 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:309.84,313.5 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:314.73,315.47 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:315.47,317.6 1 0 +github.com/echovault/sugardb/internal/modules/admin/commands.go:318.5,318.45 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:327.84,331.5 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:341.86,345.7 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:346.75,347.34 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:347.34,349.8 1 0 +github.com/echovault/sugardb/internal/modules/admin/commands.go:350.7,351.34 2 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:351.34,353.8 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:354.7,354.75 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:354.75,356.8 1 0 +github.com/echovault/sugardb/internal/modules/admin/commands.go:357.7,357.47 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:367.86,371.7 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:372.75,373.35 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:373.35,375.8 1 0 +github.com/echovault/sugardb/internal/modules/admin/commands.go:376.7,377.47 2 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:386.86,390.7 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:391.75,394.38 3 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:394.38,396.8 1 1 +github.com/echovault/sugardb/internal/modules/admin/commands.go:397.7,397.30 1 1 +github.com/echovault/sugardb/internal/raft/fsm.go:48.36,52.2 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:55.50,56.18 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:57.10,57.10 0 0 +github.com/echovault/sugardb/internal/raft/fsm.go:59.23,62.60 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:62.60,67.4 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:69.3,74.40 5 0 +github.com/echovault/sugardb/internal/raft/fsm.go:75.11,79.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:81.21,82.66 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:82.66,87.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:88.4,91.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:93.18,96.18 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:96.18,101.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:103.4,106.18 3 0 +github.com/echovault/sugardb/internal/raft/fsm.go:106.18,111.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:112.4,113.10 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:113.10,115.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:117.4,117.96 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:117.96,122.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:122.10,127.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:131.2,131.12 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:135.54,143.2 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:146.55,149.16 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:149.16,152.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:154.2,159.48 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:159.48,162.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:165.2,165.81 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:165.81,167.34 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:167.34,168.96 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:168.96,170.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:171.4,171.60 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:176.2,178.12 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:52.31,56.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:58.46,70.24 9 0 +github.com/echovault/sugardb/internal/raft/raft.go:70.24,75.3 3 0 +github.com/echovault/sugardb/internal/raft/raft.go:75.8,77.17 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:77.17,79.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:81.3,82.17 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:82.17,84.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:86.3,89.17 3 0 +github.com/echovault/sugardb/internal/raft/raft.go:89.17,91.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:94.2,96.16 3 0 +github.com/echovault/sugardb/internal/raft/raft.go:96.16,98.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:100.2,108.16 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:108.16,110.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:113.2,133.16 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:133.16,135.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:137.2,137.27 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:137.27,148.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:150.2,150.21 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:153.74,155.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:157.36,159.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:161.38,163.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:165.40,172.2 4 0 +github.com/echovault/sugardb/internal/raft/raft.go:179.9,180.22 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:180.22,182.44 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:182.44,184.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:186.3,186.56 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:186.56,188.42 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:188.42,190.5 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:193.3,194.17 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:194.17,196.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:199.2,199.12 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:202.61,203.23 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:203.23,205.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:207.2,207.73 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:207.73,209.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:211.2,211.12 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:214.37,216.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:218.31,220.22 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:220.22,222.17 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:222.17,225.4 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:226.3,226.49 1 0 github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 1 github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 0 @@ -3935,7 +3831,7 @@ github.com/echovault/sugardb/internal/utils.go:435.2,435.42 1 1 github.com/echovault/sugardb/internal/utils.go:438.61,443.12 4 1 github.com/echovault/sugardb/internal/utils.go:443.12,444.7 1 1 github.com/echovault/sugardb/internal/utils.go:444.7,446.73 2 1 -github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 1 +github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 0 github.com/echovault/sugardb/internal/utils.go:450.4,450.9 1 1 github.com/echovault/sugardb/internal/utils.go:452.3,452.21 1 1 github.com/echovault/sugardb/internal/utils.go:455.2,456.15 2 1 @@ -5444,6 +5340,834 @@ github.com/echovault/sugardb/internal/raft/raft.go:218.31,220.22 1 0 github.com/echovault/sugardb/internal/raft/raft.go:220.22,222.17 2 0 github.com/echovault/sugardb/internal/raft/raft.go:222.17,225.4 2 0 github.com/echovault/sugardb/internal/raft/raft.go:226.3,226.49 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:33.82,34.19 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:34.19,36.3 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:37.2,37.34 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:46.34,49.16 2 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:49.16,51.3 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:52.2,55.16 3 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:55.16,57.3 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:59.2,60.16 2 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:60.16,62.3 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_set/module_set.go:64.2,64.31 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:33.82,34.19 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:34.19,36.3 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:37.2,37.33 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:46.34,49.16 2 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:49.16,51.3 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:52.2,55.13 3 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:55.13,57.3 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:59.2,60.9 2 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:60.9,62.3 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:64.2,65.20 2 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:65.20,67.17 2 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:67.17,69.4 1 0 +github.com/echovault/sugardb/internal/volumes/modules/go/module_get/module_get.go:72.2,72.56 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:48.36,52.2 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:55.50,56.18 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:57.10,57.10 0 0 +github.com/echovault/sugardb/internal/raft/fsm.go:59.23,62.60 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:62.60,67.4 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:69.3,74.40 5 0 +github.com/echovault/sugardb/internal/raft/fsm.go:75.11,79.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:81.21,82.66 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:82.66,87.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:88.4,91.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:93.18,96.18 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:96.18,101.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:103.4,106.18 3 0 +github.com/echovault/sugardb/internal/raft/fsm.go:106.18,111.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:112.4,113.10 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:113.10,115.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:117.4,117.96 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:117.96,122.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:122.10,127.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:131.2,131.12 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:135.54,143.2 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:146.55,149.16 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:149.16,152.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:154.2,159.48 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:159.48,162.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:165.2,165.81 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:165.81,167.34 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:167.34,168.96 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:168.96,170.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:171.4,171.60 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:176.2,178.12 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:52.31,56.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:58.46,70.24 9 0 +github.com/echovault/sugardb/internal/raft/raft.go:70.24,75.3 3 0 +github.com/echovault/sugardb/internal/raft/raft.go:75.8,77.17 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:77.17,79.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:81.3,82.17 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:82.17,84.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:86.3,89.17 3 0 +github.com/echovault/sugardb/internal/raft/raft.go:89.17,91.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:94.2,96.16 3 0 +github.com/echovault/sugardb/internal/raft/raft.go:96.16,98.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:100.2,108.16 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:108.16,110.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:113.2,133.16 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:133.16,135.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:137.2,137.27 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:137.27,148.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:150.2,150.21 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:153.74,155.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:157.36,159.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:161.38,163.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:165.40,172.2 4 0 +github.com/echovault/sugardb/internal/raft/raft.go:179.9,180.22 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:180.22,182.44 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:182.44,184.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:186.3,186.56 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:186.56,188.42 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:188.42,190.5 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:193.3,194.17 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:194.17,196.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:199.2,199.12 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:202.61,203.23 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:203.23,205.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:207.2,207.73 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:207.73,209.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:211.2,211.12 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:214.37,216.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:218.31,220.22 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:220.22,222.17 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:222.17,225.4 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:226.3,226.49 1 0 +github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 1 +github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 +github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 1 +github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 0 +github.com/echovault/sugardb/internal/types.go:49.14,52.24 2 1 +github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 0 +github.com/echovault/sugardb/internal/types.go:56.23,59.4 2 0 +github.com/echovault/sugardb/internal/types.go:62.31,63.53 1 0 +github.com/echovault/sugardb/internal/types.go:65.10,66.117 1 0 +github.com/echovault/sugardb/internal/types.go:69.2,69.18 1 1 +github.com/echovault/sugardb/internal/utils.go:41.38,45.16 2 1 +github.com/echovault/sugardb/internal/utils.go:45.16,47.3 1 1 +github.com/echovault/sugardb/internal/utils.go:49.2,49.15 1 1 +github.com/echovault/sugardb/internal/utils.go:49.15,52.3 2 1 +github.com/echovault/sugardb/internal/utils.go:54.2,56.10 2 0 +github.com/echovault/sugardb/internal/utils.go:59.43,63.16 3 1 +github.com/echovault/sugardb/internal/utils.go:63.16,65.3 1 1 +github.com/echovault/sugardb/internal/utils.go:67.2,68.42 2 1 +github.com/echovault/sugardb/internal/utils.go:68.42,70.3 1 1 +github.com/echovault/sugardb/internal/utils.go:72.2,72.17 1 1 +github.com/echovault/sugardb/internal/utils.go:75.47,82.6 4 1 +github.com/echovault/sugardb/internal/utils.go:82.6,84.43 2 1 +github.com/echovault/sugardb/internal/utils.go:84.43,85.9 1 1 +github.com/echovault/sugardb/internal/utils.go:87.3,87.17 1 1 +github.com/echovault/sugardb/internal/utils.go:87.17,89.4 1 0 +github.com/echovault/sugardb/internal/utils.go:90.3,91.21 2 1 +github.com/echovault/sugardb/internal/utils.go:91.21,92.9 1 1 +github.com/echovault/sugardb/internal/utils.go:94.3,94.15 1 0 +github.com/echovault/sugardb/internal/utils.go:97.2,97.37 1 1 +github.com/echovault/sugardb/internal/utils.go:100.120,102.20 2 0 +github.com/echovault/sugardb/internal/utils.go:102.20,104.3 1 0 +github.com/echovault/sugardb/internal/utils.go:105.2,105.16 1 0 +github.com/echovault/sugardb/internal/utils.go:105.16,107.3 1 0 +github.com/echovault/sugardb/internal/utils.go:108.2,108.24 1 0 +github.com/echovault/sugardb/internal/utils.go:108.24,110.3 1 0 +github.com/echovault/sugardb/internal/utils.go:111.2,111.21 1 0 +github.com/echovault/sugardb/internal/utils.go:111.21,113.3 1 0 +github.com/echovault/sugardb/internal/utils.go:114.2,114.16 1 0 +github.com/echovault/sugardb/internal/utils.go:117.37,119.16 2 1 +github.com/echovault/sugardb/internal/utils.go:119.16,121.3 1 0 +github.com/echovault/sugardb/internal/utils.go:122.2,122.15 1 1 +github.com/echovault/sugardb/internal/utils.go:122.15,123.37 1 1 +github.com/echovault/sugardb/internal/utils.go:123.37,125.4 1 0 +github.com/echovault/sugardb/internal/utils.go:128.2,130.23 2 1 +github.com/echovault/sugardb/internal/utils.go:133.72,134.65 1 1 +github.com/echovault/sugardb/internal/utils.go:134.65,137.3 1 1 +github.com/echovault/sugardb/internal/utils.go:138.2,138.18 1 0 +github.com/echovault/sugardb/internal/utils.go:138.18,141.3 1 0 +github.com/echovault/sugardb/internal/utils.go:142.2,142.49 1 0 +github.com/echovault/sugardb/internal/utils.go:142.49,143.52 1 0 +github.com/echovault/sugardb/internal/utils.go:143.52,145.4 1 0 +github.com/echovault/sugardb/internal/utils.go:147.2,147.71 1 0 +github.com/echovault/sugardb/internal/utils.go:150.66,152.2 1 1 +github.com/echovault/sugardb/internal/utils.go:154.24,155.11 1 1 +github.com/echovault/sugardb/internal/utils.go:155.11,157.3 1 1 +github.com/echovault/sugardb/internal/utils.go:158.2,158.10 1 0 +github.com/echovault/sugardb/internal/utils.go:162.49,166.16 3 0 +github.com/echovault/sugardb/internal/utils.go:166.16,168.3 1 0 +github.com/echovault/sugardb/internal/utils.go:170.2,171.17 2 0 +github.com/echovault/sugardb/internal/utils.go:172.12,173.19 1 0 +github.com/echovault/sugardb/internal/utils.go:174.12,175.26 1 0 +github.com/echovault/sugardb/internal/utils.go:176.12,177.33 1 0 +github.com/echovault/sugardb/internal/utils.go:178.12,179.40 1 0 +github.com/echovault/sugardb/internal/utils.go:180.12,181.47 1 0 +github.com/echovault/sugardb/internal/utils.go:182.10,183.91 1 0 +github.com/echovault/sugardb/internal/utils.go:186.2,186.30 1 0 +github.com/echovault/sugardb/internal/utils.go:190.64,191.20 1 1 +github.com/echovault/sugardb/internal/utils.go:191.20,193.3 1 1 +github.com/echovault/sugardb/internal/utils.go:196.2,196.33 1 0 +github.com/echovault/sugardb/internal/utils.go:196.33,198.3 1 0 +github.com/echovault/sugardb/internal/utils.go:203.2,206.37 2 0 +github.com/echovault/sugardb/internal/utils.go:210.100,211.36 1 0 +github.com/echovault/sugardb/internal/utils.go:211.36,213.26 2 0 +github.com/echovault/sugardb/internal/utils.go:213.26,215.35 1 0 +github.com/echovault/sugardb/internal/utils.go:215.35,216.13 1 0 +github.com/echovault/sugardb/internal/utils.go:219.4,219.30 1 0 +github.com/echovault/sugardb/internal/utils.go:219.30,221.5 1 0 +github.com/echovault/sugardb/internal/utils.go:223.3,223.36 1 0 +github.com/echovault/sugardb/internal/utils.go:223.36,225.4 1 0 +github.com/echovault/sugardb/internal/utils.go:227.2,227.14 1 0 +github.com/echovault/sugardb/internal/utils.go:232.43,233.14 1 0 +github.com/echovault/sugardb/internal/utils.go:233.14,235.3 1 0 +github.com/echovault/sugardb/internal/utils.go:236.2,236.30 1 0 +github.com/echovault/sugardb/internal/utils.go:236.30,238.3 1 0 +github.com/echovault/sugardb/internal/utils.go:239.2,239.30 1 0 +github.com/echovault/sugardb/internal/utils.go:239.30,241.3 1 0 +github.com/echovault/sugardb/internal/utils.go:243.2,244.21 2 0 +github.com/echovault/sugardb/internal/utils.go:244.21,246.3 1 0 +github.com/echovault/sugardb/internal/utils.go:248.2,249.29 2 0 +github.com/echovault/sugardb/internal/utils.go:249.29,251.13 2 0 +github.com/echovault/sugardb/internal/utils.go:251.13,252.9 1 0 +github.com/echovault/sugardb/internal/utils.go:256.2,256.10 1 0 +github.com/echovault/sugardb/internal/utils.go:259.41,261.28 2 0 +github.com/echovault/sugardb/internal/utils.go:261.28,263.3 1 0 +github.com/echovault/sugardb/internal/utils.go:264.2,264.20 1 0 +github.com/echovault/sugardb/internal/utils.go:267.47,270.16 3 0 +github.com/echovault/sugardb/internal/utils.go:270.16,272.3 1 0 +github.com/echovault/sugardb/internal/utils.go:273.2,273.24 1 0 +github.com/echovault/sugardb/internal/utils.go:276.52,279.16 3 0 +github.com/echovault/sugardb/internal/utils.go:279.16,281.3 1 0 +github.com/echovault/sugardb/internal/utils.go:282.2,282.24 1 0 +github.com/echovault/sugardb/internal/utils.go:285.50,288.16 3 0 +github.com/echovault/sugardb/internal/utils.go:288.16,290.3 1 0 +github.com/echovault/sugardb/internal/utils.go:291.2,291.25 1 0 +github.com/echovault/sugardb/internal/utils.go:294.52,297.16 3 0 +github.com/echovault/sugardb/internal/utils.go:297.16,299.3 1 0 +github.com/echovault/sugardb/internal/utils.go:300.2,300.23 1 0 +github.com/echovault/sugardb/internal/utils.go:303.51,306.16 3 0 +github.com/echovault/sugardb/internal/utils.go:306.16,308.3 1 0 +github.com/echovault/sugardb/internal/utils.go:309.2,309.22 1 0 +github.com/echovault/sugardb/internal/utils.go:312.59,316.16 3 0 +github.com/echovault/sugardb/internal/utils.go:316.16,318.3 1 0 +github.com/echovault/sugardb/internal/utils.go:320.2,320.16 1 0 +github.com/echovault/sugardb/internal/utils.go:320.16,322.3 1 0 +github.com/echovault/sugardb/internal/utils.go:324.2,324.39 1 0 +github.com/echovault/sugardb/internal/utils.go:324.39,326.3 1 0 +github.com/echovault/sugardb/internal/utils.go:328.2,329.30 2 0 +github.com/echovault/sugardb/internal/utils.go:329.30,330.17 1 0 +github.com/echovault/sugardb/internal/utils.go:330.17,332.12 2 0 +github.com/echovault/sugardb/internal/utils.go:334.3,334.22 1 0 +github.com/echovault/sugardb/internal/utils.go:336.2,336.17 1 0 +github.com/echovault/sugardb/internal/utils.go:339.67,342.16 3 0 +github.com/echovault/sugardb/internal/utils.go:342.16,344.3 1 0 +github.com/echovault/sugardb/internal/utils.go:345.2,345.16 1 0 +github.com/echovault/sugardb/internal/utils.go:345.16,347.3 1 0 +github.com/echovault/sugardb/internal/utils.go:348.2,349.31 2 0 +github.com/echovault/sugardb/internal/utils.go:349.31,350.18 1 0 +github.com/echovault/sugardb/internal/utils.go:350.18,352.12 2 0 +github.com/echovault/sugardb/internal/utils.go:354.3,355.33 2 0 +github.com/echovault/sugardb/internal/utils.go:355.33,357.4 1 0 +github.com/echovault/sugardb/internal/utils.go:358.3,358.17 1 0 +github.com/echovault/sugardb/internal/utils.go:360.2,360.17 1 0 +github.com/echovault/sugardb/internal/utils.go:363.57,366.16 3 0 +github.com/echovault/sugardb/internal/utils.go:366.16,368.3 1 0 +github.com/echovault/sugardb/internal/utils.go:369.2,369.16 1 0 +github.com/echovault/sugardb/internal/utils.go:369.16,371.3 1 0 +github.com/echovault/sugardb/internal/utils.go:372.2,373.30 2 0 +github.com/echovault/sugardb/internal/utils.go:373.30,374.17 1 0 +github.com/echovault/sugardb/internal/utils.go:374.17,376.12 2 0 +github.com/echovault/sugardb/internal/utils.go:378.3,378.23 1 0 +github.com/echovault/sugardb/internal/utils.go:380.2,380.17 1 0 +github.com/echovault/sugardb/internal/utils.go:383.58,386.16 3 0 +github.com/echovault/sugardb/internal/utils.go:386.16,388.3 1 0 +github.com/echovault/sugardb/internal/utils.go:389.2,389.16 1 0 +github.com/echovault/sugardb/internal/utils.go:389.16,391.3 1 0 +github.com/echovault/sugardb/internal/utils.go:392.2,393.30 2 0 +github.com/echovault/sugardb/internal/utils.go:393.30,394.17 1 0 +github.com/echovault/sugardb/internal/utils.go:394.17,396.12 2 0 +github.com/echovault/sugardb/internal/utils.go:398.3,398.20 1 0 +github.com/echovault/sugardb/internal/utils.go:400.2,400.17 1 0 +github.com/echovault/sugardb/internal/utils.go:403.70,404.32 1 0 +github.com/echovault/sugardb/internal/utils.go:404.32,405.60 1 0 +github.com/echovault/sugardb/internal/utils.go:405.60,407.4 1 0 +github.com/echovault/sugardb/internal/utils.go:407.6,409.4 1 0 +github.com/echovault/sugardb/internal/utils.go:411.2,411.30 1 0 +github.com/echovault/sugardb/internal/utils.go:411.30,412.62 1 0 +github.com/echovault/sugardb/internal/utils.go:412.62,414.4 1 0 +github.com/echovault/sugardb/internal/utils.go:414.6,416.4 1 0 +github.com/echovault/sugardb/internal/utils.go:418.2,418.13 1 0 +github.com/echovault/sugardb/internal/utils.go:421.33,423.16 2 1 +github.com/echovault/sugardb/internal/utils.go:423.16,425.3 1 0 +github.com/echovault/sugardb/internal/utils.go:427.2,428.16 2 1 +github.com/echovault/sugardb/internal/utils.go:428.16,430.3 1 0 +github.com/echovault/sugardb/internal/utils.go:431.2,431.15 1 1 +github.com/echovault/sugardb/internal/utils.go:431.15,433.3 1 1 +github.com/echovault/sugardb/internal/utils.go:435.2,435.42 1 1 +github.com/echovault/sugardb/internal/utils.go:438.61,443.12 4 1 +github.com/echovault/sugardb/internal/utils.go:443.12,444.7 1 1 +github.com/echovault/sugardb/internal/utils.go:444.7,446.73 2 1 +github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 0 +github.com/echovault/sugardb/internal/utils.go:450.4,450.9 1 1 +github.com/echovault/sugardb/internal/utils.go:452.3,452.21 1 1 +github.com/echovault/sugardb/internal/utils.go:455.2,456.15 2 1 +github.com/echovault/sugardb/internal/utils.go:456.15,458.3 1 1 +github.com/echovault/sugardb/internal/utils.go:460.2,460.9 1 1 +github.com/echovault/sugardb/internal/utils.go:461.18,462.47 1 0 +github.com/echovault/sugardb/internal/utils.go:463.14,464.19 1 1 +github.com/echovault/sugardb/internal/utils.go:468.84,473.12 4 0 +github.com/echovault/sugardb/internal/utils.go:473.12,474.7 1 0 +github.com/echovault/sugardb/internal/utils.go:474.7,476.73 2 0 +github.com/echovault/sugardb/internal/utils.go:476.73,478.13 1 0 +github.com/echovault/sugardb/internal/utils.go:480.4,480.9 1 0 +github.com/echovault/sugardb/internal/utils.go:482.3,482.21 1 0 +github.com/echovault/sugardb/internal/utils.go:485.2,486.15 2 0 +github.com/echovault/sugardb/internal/utils.go:486.15,488.3 1 0 +github.com/echovault/sugardb/internal/utils.go:490.2,490.9 1 0 +github.com/echovault/sugardb/internal/utils.go:491.18,492.47 1 0 +github.com/echovault/sugardb/internal/utils.go:493.14,494.19 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:14.23,16.43 1 1 +github.com/echovault/sugardb/internal/clock/clock.go:16.43,18.3 1 1 +github.com/echovault/sugardb/internal/clock/clock.go:19.2,19.20 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:24.34,26.2 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:28.58,30.2 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 0 +github.com/echovault/sugardb/internal/clock/clock.go:39.58,41.2 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:32.88,35.9 2 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:35.9,37.3 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:39.2,39.33 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:40.18,42.56 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:43.20,45.62 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:46.10,47.15 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:52.60,55.16 2 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:55.16,58.3 2 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:60.2,60.12 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:64.55,66.2 0 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:42.47,46.2 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:49.54,59.16 3 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:59.16,61.3 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:63.2,63.10 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:67.54,69.55 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:69.55,72.3 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:74.2,74.20 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:75.18,77.39 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:77.39,80.4 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:81.3,82.17 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:82.17,84.4 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:86.19,88.39 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:88.39,91.4 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:93.3,99.67 3 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:99.67,101.4 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:103.20,105.39 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:105.39,108.4 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:110.3,115.17 3 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:115.17,118.4 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:120.3,120.67 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:120.67,122.4 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:127.71,129.2 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:132.56,135.2 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:138.68,140.2 0 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:33.62,37.2 1 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:40.71,42.2 1 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:45.72,52.16 4 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:52.16,55.3 2 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:57.2,59.16 2 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:59.16,61.3 1 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:65.74,67.2 0 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:56.43,63.2 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:65.58,80.26 7 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:80.26,84.4 3 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:85.26,89.4 3 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:93.2,94.41 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:94.41,99.3 4 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:101.2,104.16 3 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:104.16,106.3 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:108.2,108.37 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:108.37,111.70 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:111.70,113.18 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:113.18,115.5 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:116.4,116.14 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:119.3,119.17 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:119.17,121.4 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:123.3,123.27 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:127.45,137.2 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:141.72,154.2 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:158.75,171.2 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:173.43,176.16 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:176.16,179.3 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:181.2,182.16 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:182.16,185.3 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:187.2,187.49 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:25.72,27.16 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:27.16,29.3 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:31.2,35.9 4 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:35.9,37.3 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:39.2,41.16 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:41.16,43.3 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:45.2,46.9 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:46.9,48.3 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:51.2,51.24 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:51.24,53.94 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:53.94,55.4 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:56.3,56.58 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:60.2,60.16 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:60.16,62.94 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:62.94,64.4 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:65.3,65.58 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:68.2,70.35 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:70.35,72.24 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:72.24,75.12 3 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:78.3,79.8 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:82.2,82.103 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:82.103,84.3 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:86.2,86.59 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:89.70,91.16 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:91.16,93.3 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:95.2,98.16 3 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:98.16,100.3 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:102.2,104.9 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:104.9,106.3 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:108.2,108.56 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:111.70,113.16 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:113.16,115.3 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:117.2,124.24 6 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:124.24,126.3 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:128.2,128.16 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:128.16,130.3 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:132.2,133.9 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:133.9,135.3 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:137.2,137.15 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:137.15,139.3 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:140.2,140.13 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:140.13,142.3 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:144.2,144.30 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:144.30,146.3 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:148.2,148.22 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:148.22,150.3 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:152.2,152.17 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:152.17,155.3 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:157.2,159.14 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:159.14,161.38 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:161.38,163.4 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:164.3,164.12 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:167.2,167.65 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:170.70,172.16 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:172.16,174.3 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:176.2,179.16 4 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:179.16,182.18 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:182.18,184.4 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:185.3,185.57 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:187.2,188.9 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:188.9,190.3 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:191.2,194.17 2 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:194.17,196.3 1 0 +github.com/echovault/sugardb/internal/modules/string/commands.go:197.2,197.59 1 1 +github.com/echovault/sugardb/internal/modules/string/commands.go:200.36,254.2 1 1 +github.com/echovault/sugardb/internal/modules/string/key_funcs.go:24.78,25.19 1 1 +github.com/echovault/sugardb/internal/modules/string/key_funcs.go:25.19,27.3 1 1 +github.com/echovault/sugardb/internal/modules/string/key_funcs.go:28.2,32.8 1 1 +github.com/echovault/sugardb/internal/modules/string/key_funcs.go:35.76,36.19 1 1 +github.com/echovault/sugardb/internal/modules/string/key_funcs.go:36.19,38.3 1 1 +github.com/echovault/sugardb/internal/modules/string/key_funcs.go:39.2,43.8 1 1 +github.com/echovault/sugardb/internal/modules/string/key_funcs.go:46.76,47.19 1 1 +github.com/echovault/sugardb/internal/modules/string/key_funcs.go:47.19,49.3 1 1 +github.com/echovault/sugardb/internal/modules/string/key_funcs.go:50.2,54.8 1 1 +github.com/echovault/sugardb/internal/modules/string/key_funcs.go:57.76,58.19 1 1 +github.com/echovault/sugardb/internal/modules/string/key_funcs.go:58.19,60.3 1 1 +github.com/echovault/sugardb/internal/modules/string/key_funcs.go:61.2,65.8 1 1 +github.com/echovault/sugardb/internal/raft/fsm.go:48.36,52.2 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:55.50,56.18 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:57.10,57.10 0 0 +github.com/echovault/sugardb/internal/raft/fsm.go:59.23,62.60 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:62.60,67.4 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:69.3,74.40 5 0 +github.com/echovault/sugardb/internal/raft/fsm.go:75.11,79.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:81.21,82.66 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:82.66,87.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:88.4,91.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:93.18,96.18 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:96.18,101.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:103.4,106.18 3 0 +github.com/echovault/sugardb/internal/raft/fsm.go:106.18,111.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:112.4,113.10 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:113.10,115.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:117.4,117.96 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:117.96,122.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:122.10,127.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:131.2,131.12 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:135.54,143.2 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:146.55,149.16 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:149.16,152.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:154.2,159.48 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:159.48,162.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:165.2,165.81 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:165.81,167.34 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:167.34,168.96 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:168.96,170.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:171.4,171.60 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:176.2,178.12 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:52.31,56.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:58.46,70.24 9 0 +github.com/echovault/sugardb/internal/raft/raft.go:70.24,75.3 3 0 +github.com/echovault/sugardb/internal/raft/raft.go:75.8,77.17 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:77.17,79.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:81.3,82.17 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:82.17,84.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:86.3,89.17 3 0 +github.com/echovault/sugardb/internal/raft/raft.go:89.17,91.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:94.2,96.16 3 0 +github.com/echovault/sugardb/internal/raft/raft.go:96.16,98.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:100.2,108.16 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:108.16,110.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:113.2,133.16 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:133.16,135.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:137.2,137.27 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:137.27,148.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:150.2,150.21 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:153.74,155.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:157.36,159.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:161.38,163.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:165.40,172.2 4 0 +github.com/echovault/sugardb/internal/raft/raft.go:179.9,180.22 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:180.22,182.44 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:182.44,184.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:186.3,186.56 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:186.56,188.42 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:188.42,190.5 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:193.3,194.17 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:194.17,196.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:199.2,199.12 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:202.61,203.23 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:203.23,205.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:207.2,207.73 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:207.73,209.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:211.2,211.12 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:214.37,216.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:218.31,220.22 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:220.22,222.17 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:222.17,225.4 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:226.3,226.49 1 0 +github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 0 +github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 +github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 0 +github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 0 +github.com/echovault/sugardb/internal/types.go:49.14,52.24 2 0 +github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 0 +github.com/echovault/sugardb/internal/types.go:56.23,59.4 2 0 +github.com/echovault/sugardb/internal/types.go:62.31,63.53 1 0 +github.com/echovault/sugardb/internal/types.go:65.10,66.117 1 0 +github.com/echovault/sugardb/internal/types.go:69.2,69.18 1 0 +github.com/echovault/sugardb/internal/utils.go:41.38,45.16 2 0 +github.com/echovault/sugardb/internal/utils.go:45.16,47.3 1 0 +github.com/echovault/sugardb/internal/utils.go:49.2,49.15 1 0 +github.com/echovault/sugardb/internal/utils.go:49.15,52.3 2 0 +github.com/echovault/sugardb/internal/utils.go:54.2,56.10 2 0 +github.com/echovault/sugardb/internal/utils.go:59.43,63.16 3 0 +github.com/echovault/sugardb/internal/utils.go:63.16,65.3 1 0 +github.com/echovault/sugardb/internal/utils.go:67.2,68.42 2 0 +github.com/echovault/sugardb/internal/utils.go:68.42,70.3 1 0 +github.com/echovault/sugardb/internal/utils.go:72.2,72.17 1 0 +github.com/echovault/sugardb/internal/utils.go:75.47,82.6 4 0 +github.com/echovault/sugardb/internal/utils.go:82.6,84.43 2 0 +github.com/echovault/sugardb/internal/utils.go:84.43,85.9 1 0 +github.com/echovault/sugardb/internal/utils.go:87.3,87.17 1 0 +github.com/echovault/sugardb/internal/utils.go:87.17,89.4 1 0 +github.com/echovault/sugardb/internal/utils.go:90.3,91.21 2 0 +github.com/echovault/sugardb/internal/utils.go:91.21,92.9 1 0 +github.com/echovault/sugardb/internal/utils.go:94.3,94.15 1 0 +github.com/echovault/sugardb/internal/utils.go:97.2,97.37 1 0 +github.com/echovault/sugardb/internal/utils.go:100.120,102.20 2 0 +github.com/echovault/sugardb/internal/utils.go:102.20,104.3 1 0 +github.com/echovault/sugardb/internal/utils.go:105.2,105.16 1 0 +github.com/echovault/sugardb/internal/utils.go:105.16,107.3 1 0 +github.com/echovault/sugardb/internal/utils.go:108.2,108.24 1 0 +github.com/echovault/sugardb/internal/utils.go:108.24,110.3 1 0 +github.com/echovault/sugardb/internal/utils.go:111.2,111.21 1 0 +github.com/echovault/sugardb/internal/utils.go:111.21,113.3 1 0 +github.com/echovault/sugardb/internal/utils.go:114.2,114.16 1 0 +github.com/echovault/sugardb/internal/utils.go:117.37,119.16 2 0 +github.com/echovault/sugardb/internal/utils.go:119.16,121.3 1 0 +github.com/echovault/sugardb/internal/utils.go:122.2,122.15 1 0 +github.com/echovault/sugardb/internal/utils.go:122.15,123.37 1 0 +github.com/echovault/sugardb/internal/utils.go:123.37,125.4 1 0 +github.com/echovault/sugardb/internal/utils.go:128.2,130.23 2 0 +github.com/echovault/sugardb/internal/utils.go:133.72,134.65 1 0 +github.com/echovault/sugardb/internal/utils.go:134.65,137.3 1 0 +github.com/echovault/sugardb/internal/utils.go:138.2,138.18 1 0 +github.com/echovault/sugardb/internal/utils.go:138.18,141.3 1 0 +github.com/echovault/sugardb/internal/utils.go:142.2,142.49 1 0 +github.com/echovault/sugardb/internal/utils.go:142.49,143.52 1 0 +github.com/echovault/sugardb/internal/utils.go:143.52,145.4 1 0 +github.com/echovault/sugardb/internal/utils.go:147.2,147.71 1 0 +github.com/echovault/sugardb/internal/utils.go:150.66,152.2 1 0 +github.com/echovault/sugardb/internal/utils.go:154.24,155.11 1 0 +github.com/echovault/sugardb/internal/utils.go:155.11,157.3 1 0 +github.com/echovault/sugardb/internal/utils.go:158.2,158.10 1 0 +github.com/echovault/sugardb/internal/utils.go:162.49,166.16 3 0 +github.com/echovault/sugardb/internal/utils.go:166.16,168.3 1 0 +github.com/echovault/sugardb/internal/utils.go:170.2,171.17 2 0 +github.com/echovault/sugardb/internal/utils.go:172.12,173.19 1 0 +github.com/echovault/sugardb/internal/utils.go:174.12,175.26 1 0 +github.com/echovault/sugardb/internal/utils.go:176.12,177.33 1 0 +github.com/echovault/sugardb/internal/utils.go:178.12,179.40 1 0 +github.com/echovault/sugardb/internal/utils.go:180.12,181.47 1 0 +github.com/echovault/sugardb/internal/utils.go:182.10,183.91 1 0 +github.com/echovault/sugardb/internal/utils.go:186.2,186.30 1 0 +github.com/echovault/sugardb/internal/utils.go:190.64,191.20 1 0 +github.com/echovault/sugardb/internal/utils.go:191.20,193.3 1 0 +github.com/echovault/sugardb/internal/utils.go:196.2,196.33 1 0 +github.com/echovault/sugardb/internal/utils.go:196.33,198.3 1 0 +github.com/echovault/sugardb/internal/utils.go:203.2,206.37 2 0 +github.com/echovault/sugardb/internal/utils.go:210.100,211.36 1 1 +github.com/echovault/sugardb/internal/utils.go:211.36,213.26 2 1 +github.com/echovault/sugardb/internal/utils.go:213.26,215.35 1 1 +github.com/echovault/sugardb/internal/utils.go:215.35,216.13 1 0 +github.com/echovault/sugardb/internal/utils.go:219.4,219.30 1 1 +github.com/echovault/sugardb/internal/utils.go:219.30,221.5 1 0 +github.com/echovault/sugardb/internal/utils.go:223.3,223.36 1 1 +github.com/echovault/sugardb/internal/utils.go:223.36,225.4 1 0 +github.com/echovault/sugardb/internal/utils.go:227.2,227.14 1 1 +github.com/echovault/sugardb/internal/utils.go:232.43,233.14 1 0 +github.com/echovault/sugardb/internal/utils.go:233.14,235.3 1 0 +github.com/echovault/sugardb/internal/utils.go:236.2,236.30 1 0 +github.com/echovault/sugardb/internal/utils.go:236.30,238.3 1 0 +github.com/echovault/sugardb/internal/utils.go:239.2,239.30 1 0 +github.com/echovault/sugardb/internal/utils.go:239.30,241.3 1 0 +github.com/echovault/sugardb/internal/utils.go:243.2,244.21 2 0 +github.com/echovault/sugardb/internal/utils.go:244.21,246.3 1 0 +github.com/echovault/sugardb/internal/utils.go:248.2,249.29 2 0 +github.com/echovault/sugardb/internal/utils.go:249.29,251.13 2 0 +github.com/echovault/sugardb/internal/utils.go:251.13,252.9 1 0 +github.com/echovault/sugardb/internal/utils.go:256.2,256.10 1 0 +github.com/echovault/sugardb/internal/utils.go:259.41,261.28 2 0 +github.com/echovault/sugardb/internal/utils.go:261.28,263.3 1 0 +github.com/echovault/sugardb/internal/utils.go:264.2,264.20 1 0 +github.com/echovault/sugardb/internal/utils.go:267.47,270.16 3 0 +github.com/echovault/sugardb/internal/utils.go:270.16,272.3 1 0 +github.com/echovault/sugardb/internal/utils.go:273.2,273.24 1 0 +github.com/echovault/sugardb/internal/utils.go:276.52,279.16 3 0 +github.com/echovault/sugardb/internal/utils.go:279.16,281.3 1 0 +github.com/echovault/sugardb/internal/utils.go:282.2,282.24 1 0 +github.com/echovault/sugardb/internal/utils.go:285.50,288.16 3 0 +github.com/echovault/sugardb/internal/utils.go:288.16,290.3 1 0 +github.com/echovault/sugardb/internal/utils.go:291.2,291.25 1 0 +github.com/echovault/sugardb/internal/utils.go:294.52,297.16 3 0 +github.com/echovault/sugardb/internal/utils.go:297.16,299.3 1 0 +github.com/echovault/sugardb/internal/utils.go:300.2,300.23 1 0 +github.com/echovault/sugardb/internal/utils.go:303.51,306.16 3 0 +github.com/echovault/sugardb/internal/utils.go:306.16,308.3 1 0 +github.com/echovault/sugardb/internal/utils.go:309.2,309.22 1 0 +github.com/echovault/sugardb/internal/utils.go:312.59,316.16 3 0 +github.com/echovault/sugardb/internal/utils.go:316.16,318.3 1 0 +github.com/echovault/sugardb/internal/utils.go:320.2,320.16 1 0 +github.com/echovault/sugardb/internal/utils.go:320.16,322.3 1 0 +github.com/echovault/sugardb/internal/utils.go:324.2,324.39 1 0 +github.com/echovault/sugardb/internal/utils.go:324.39,326.3 1 0 +github.com/echovault/sugardb/internal/utils.go:328.2,329.30 2 0 +github.com/echovault/sugardb/internal/utils.go:329.30,330.17 1 0 +github.com/echovault/sugardb/internal/utils.go:330.17,332.12 2 0 +github.com/echovault/sugardb/internal/utils.go:334.3,334.22 1 0 +github.com/echovault/sugardb/internal/utils.go:336.2,336.17 1 0 +github.com/echovault/sugardb/internal/utils.go:339.67,342.16 3 0 +github.com/echovault/sugardb/internal/utils.go:342.16,344.3 1 0 +github.com/echovault/sugardb/internal/utils.go:345.2,345.16 1 0 +github.com/echovault/sugardb/internal/utils.go:345.16,347.3 1 0 +github.com/echovault/sugardb/internal/utils.go:348.2,349.31 2 0 +github.com/echovault/sugardb/internal/utils.go:349.31,350.18 1 0 +github.com/echovault/sugardb/internal/utils.go:350.18,352.12 2 0 +github.com/echovault/sugardb/internal/utils.go:354.3,355.33 2 0 +github.com/echovault/sugardb/internal/utils.go:355.33,357.4 1 0 +github.com/echovault/sugardb/internal/utils.go:358.3,358.17 1 0 +github.com/echovault/sugardb/internal/utils.go:360.2,360.17 1 0 +github.com/echovault/sugardb/internal/utils.go:363.57,366.16 3 0 +github.com/echovault/sugardb/internal/utils.go:366.16,368.3 1 0 +github.com/echovault/sugardb/internal/utils.go:369.2,369.16 1 0 +github.com/echovault/sugardb/internal/utils.go:369.16,371.3 1 0 +github.com/echovault/sugardb/internal/utils.go:372.2,373.30 2 0 +github.com/echovault/sugardb/internal/utils.go:373.30,374.17 1 0 +github.com/echovault/sugardb/internal/utils.go:374.17,376.12 2 0 +github.com/echovault/sugardb/internal/utils.go:378.3,378.23 1 0 +github.com/echovault/sugardb/internal/utils.go:380.2,380.17 1 0 +github.com/echovault/sugardb/internal/utils.go:383.58,386.16 3 0 +github.com/echovault/sugardb/internal/utils.go:386.16,388.3 1 0 +github.com/echovault/sugardb/internal/utils.go:389.2,389.16 1 0 +github.com/echovault/sugardb/internal/utils.go:389.16,391.3 1 0 +github.com/echovault/sugardb/internal/utils.go:392.2,393.30 2 0 +github.com/echovault/sugardb/internal/utils.go:393.30,394.17 1 0 +github.com/echovault/sugardb/internal/utils.go:394.17,396.12 2 0 +github.com/echovault/sugardb/internal/utils.go:398.3,398.20 1 0 +github.com/echovault/sugardb/internal/utils.go:400.2,400.17 1 0 +github.com/echovault/sugardb/internal/utils.go:403.70,404.32 1 0 +github.com/echovault/sugardb/internal/utils.go:404.32,405.60 1 0 +github.com/echovault/sugardb/internal/utils.go:405.60,407.4 1 0 +github.com/echovault/sugardb/internal/utils.go:407.6,409.4 1 0 +github.com/echovault/sugardb/internal/utils.go:411.2,411.30 1 0 +github.com/echovault/sugardb/internal/utils.go:411.30,412.62 1 0 +github.com/echovault/sugardb/internal/utils.go:412.62,414.4 1 0 +github.com/echovault/sugardb/internal/utils.go:414.6,416.4 1 0 +github.com/echovault/sugardb/internal/utils.go:418.2,418.13 1 0 +github.com/echovault/sugardb/internal/utils.go:421.33,423.16 2 0 +github.com/echovault/sugardb/internal/utils.go:423.16,425.3 1 0 +github.com/echovault/sugardb/internal/utils.go:427.2,428.16 2 0 +github.com/echovault/sugardb/internal/utils.go:428.16,430.3 1 0 +github.com/echovault/sugardb/internal/utils.go:431.2,431.15 1 0 +github.com/echovault/sugardb/internal/utils.go:431.15,433.3 1 0 +github.com/echovault/sugardb/internal/utils.go:435.2,435.42 1 0 +github.com/echovault/sugardb/internal/utils.go:438.61,443.12 4 0 +github.com/echovault/sugardb/internal/utils.go:443.12,444.7 1 0 +github.com/echovault/sugardb/internal/utils.go:444.7,446.73 2 0 +github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 0 +github.com/echovault/sugardb/internal/utils.go:450.4,450.9 1 0 +github.com/echovault/sugardb/internal/utils.go:452.3,452.21 1 0 +github.com/echovault/sugardb/internal/utils.go:455.2,456.15 2 0 +github.com/echovault/sugardb/internal/utils.go:456.15,458.3 1 0 +github.com/echovault/sugardb/internal/utils.go:460.2,460.9 1 0 +github.com/echovault/sugardb/internal/utils.go:461.18,462.47 1 0 +github.com/echovault/sugardb/internal/utils.go:463.14,464.19 1 0 +github.com/echovault/sugardb/internal/utils.go:468.84,473.12 4 0 +github.com/echovault/sugardb/internal/utils.go:473.12,474.7 1 0 +github.com/echovault/sugardb/internal/utils.go:474.7,476.73 2 0 +github.com/echovault/sugardb/internal/utils.go:476.73,478.13 1 0 +github.com/echovault/sugardb/internal/utils.go:480.4,480.9 1 0 +github.com/echovault/sugardb/internal/utils.go:482.3,482.21 1 0 +github.com/echovault/sugardb/internal/utils.go:485.2,486.15 2 0 +github.com/echovault/sugardb/internal/utils.go:486.15,488.3 1 0 +github.com/echovault/sugardb/internal/utils.go:490.2,490.9 1 0 +github.com/echovault/sugardb/internal/utils.go:491.18,492.47 1 0 +github.com/echovault/sugardb/internal/utils.go:493.14,494.19 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:14.23,16.43 1 1 +github.com/echovault/sugardb/internal/clock/clock.go:16.43,18.3 1 1 +github.com/echovault/sugardb/internal/clock/clock.go:19.2,19.20 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:24.34,26.2 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:28.58,30.2 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 1 +github.com/echovault/sugardb/internal/clock/clock.go:39.58,41.2 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:55.56,56.30 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:56.30,58.3 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:61.59,62.30 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:62.30,64.3 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:67.64,68.30 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:68.30,70.3 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:73.59,74.30 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:74.30,76.3 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:79.59,80.30 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:80.30,82.3 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:85.60,86.30 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:86.30,88.3 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:91.90,92.30 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:92.30,94.3 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:97.77,98.30 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:98.30,100.3 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:103.73,104.30 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:104.30,106.3 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:109.103,110.30 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:110.30,112.3 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:115.65,122.30 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:122.31,122.32 0 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:123.31,123.32 0 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:124.60,126.4 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:127.85,127.86 0 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:128.48,128.49 0 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:129.43,131.4 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:134.2,134.33 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:134.33,136.3 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:138.2,138.34 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:138.34,139.13 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:139.13,141.17 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:141.17,143.5 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:144.4,144.8 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:144.8,146.62 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:146.62,147.50 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:147.50,149.7 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:155.2,155.15 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:158.44,177.58 6 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:177.58,180.3 2 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:183.2,185.16 3 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:185.16,186.37 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:186.37,189.18 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:189.18,192.5 2 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:193.4,193.24 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:194.9,197.4 2 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:200.2,201.16 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:201.16,204.3 2 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:205.2,205.35 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:205.35,208.3 2 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:210.2,212.20 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:212.20,213.53 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:213.53,216.4 2 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:220.2,225.16 3 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:225.16,228.3 2 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:230.2,231.49 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:231.49,233.3 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:236.2,239.16 3 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:239.16,242.3 2 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:245.2,246.16 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:246.16,249.3 2 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:252.2,257.16 3 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:257.16,260.3 2 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:261.2,261.39 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:261.39,264.3 2 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:265.2,265.33 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:265.33,267.3 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:268.2,268.34 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:268.34,271.3 2 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:274.2,275.58 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:275.58,277.3 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:280.2,281.16 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:281.16,284.3 2 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:285.2,285.15 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:285.15,286.35 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:286.35,288.4 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:292.2,292.39 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:292.39,294.3 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:295.2,295.32 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:295.32,297.3 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:300.2,305.12 3 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:308.39,310.50 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:310.50,312.3 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:313.2,313.16 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:313.16,315.3 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:316.2,316.15 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:316.15,317.36 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:317.36,319.4 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:322.2,325.16 3 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:325.16,327.3 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:329.2,329.52 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:329.52,331.3 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:333.2,333.46 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:333.46,335.3 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:337.2,342.50 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:342.50,344.3 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:345.2,345.16 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:345.16,347.3 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:348.2,348.15 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:348.15,349.36 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:349.36,351.4 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:354.2,355.16 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:355.16,357.3 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:359.2,360.58 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:360.58,362.3 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:364.2,366.99 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:366.99,367.34 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:367.34,369.4 1 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:372.2,374.12 2 1 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:377.46,379.2 1 0 +github.com/echovault/sugardb/internal/snapshot/snapshot.go:381.42,383.2 1 1 github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 1 github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 1 @@ -6602,730 +7326,6 @@ github.com/echovault/sugardb/internal/raft/raft.go:226.3,226.49 1 0 github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 1 github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 1 -github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 0 -github.com/echovault/sugardb/internal/types.go:49.14,52.24 2 1 -github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 0 -github.com/echovault/sugardb/internal/types.go:56.23,59.4 2 0 -github.com/echovault/sugardb/internal/types.go:62.31,63.53 1 0 -github.com/echovault/sugardb/internal/types.go:65.10,66.117 1 0 -github.com/echovault/sugardb/internal/types.go:69.2,69.18 1 1 -github.com/echovault/sugardb/internal/utils.go:41.38,45.16 2 1 -github.com/echovault/sugardb/internal/utils.go:45.16,47.3 1 1 -github.com/echovault/sugardb/internal/utils.go:49.2,49.15 1 1 -github.com/echovault/sugardb/internal/utils.go:49.15,52.3 2 1 -github.com/echovault/sugardb/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/sugardb/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/sugardb/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/sugardb/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/sugardb/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/sugardb/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/sugardb/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/sugardb/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/sugardb/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/sugardb/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/sugardb/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/sugardb/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/sugardb/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/sugardb/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/sugardb/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/sugardb/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/sugardb/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/sugardb/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/sugardb/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/sugardb/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/sugardb/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/sugardb/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/sugardb/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/sugardb/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/sugardb/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/sugardb/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/sugardb/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/sugardb/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/sugardb/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/sugardb/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/sugardb/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/sugardb/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/sugardb/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/sugardb/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/sugardb/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/sugardb/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/sugardb/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/sugardb/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/sugardb/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/sugardb/internal/utils.go:154.24,155.11 1 1 -github.com/echovault/sugardb/internal/utils.go:155.11,157.3 1 1 -github.com/echovault/sugardb/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/sugardb/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/sugardb/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/sugardb/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/sugardb/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/sugardb/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/sugardb/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/sugardb/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/sugardb/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/sugardb/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/sugardb/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/sugardb/internal/utils.go:190.64,191.20 1 1 -github.com/echovault/sugardb/internal/utils.go:191.20,193.3 1 1 -github.com/echovault/sugardb/internal/utils.go:196.2,196.33 1 0 -github.com/echovault/sugardb/internal/utils.go:196.33,198.3 1 0 -github.com/echovault/sugardb/internal/utils.go:203.2,206.37 2 0 -github.com/echovault/sugardb/internal/utils.go:210.100,211.36 1 0 -github.com/echovault/sugardb/internal/utils.go:211.36,213.26 2 0 -github.com/echovault/sugardb/internal/utils.go:213.26,215.35 1 0 -github.com/echovault/sugardb/internal/utils.go:215.35,216.13 1 0 -github.com/echovault/sugardb/internal/utils.go:219.4,219.30 1 0 -github.com/echovault/sugardb/internal/utils.go:219.30,221.5 1 0 -github.com/echovault/sugardb/internal/utils.go:223.3,223.36 1 0 -github.com/echovault/sugardb/internal/utils.go:223.36,225.4 1 0 -github.com/echovault/sugardb/internal/utils.go:227.2,227.14 1 0 -github.com/echovault/sugardb/internal/utils.go:232.43,233.14 1 0 -github.com/echovault/sugardb/internal/utils.go:233.14,235.3 1 0 -github.com/echovault/sugardb/internal/utils.go:236.2,236.30 1 0 -github.com/echovault/sugardb/internal/utils.go:236.30,238.3 1 0 -github.com/echovault/sugardb/internal/utils.go:239.2,239.30 1 0 -github.com/echovault/sugardb/internal/utils.go:239.30,241.3 1 0 -github.com/echovault/sugardb/internal/utils.go:243.2,244.21 2 0 -github.com/echovault/sugardb/internal/utils.go:244.21,246.3 1 0 -github.com/echovault/sugardb/internal/utils.go:248.2,249.29 2 0 -github.com/echovault/sugardb/internal/utils.go:249.29,251.13 2 0 -github.com/echovault/sugardb/internal/utils.go:251.13,252.9 1 0 -github.com/echovault/sugardb/internal/utils.go:256.2,256.10 1 0 -github.com/echovault/sugardb/internal/utils.go:259.41,261.28 2 0 -github.com/echovault/sugardb/internal/utils.go:261.28,263.3 1 0 -github.com/echovault/sugardb/internal/utils.go:264.2,264.20 1 0 -github.com/echovault/sugardb/internal/utils.go:267.47,270.16 3 0 -github.com/echovault/sugardb/internal/utils.go:270.16,272.3 1 0 -github.com/echovault/sugardb/internal/utils.go:273.2,273.24 1 0 -github.com/echovault/sugardb/internal/utils.go:276.52,279.16 3 0 -github.com/echovault/sugardb/internal/utils.go:279.16,281.3 1 0 -github.com/echovault/sugardb/internal/utils.go:282.2,282.24 1 0 -github.com/echovault/sugardb/internal/utils.go:285.50,288.16 3 0 -github.com/echovault/sugardb/internal/utils.go:288.16,290.3 1 0 -github.com/echovault/sugardb/internal/utils.go:291.2,291.25 1 0 -github.com/echovault/sugardb/internal/utils.go:294.52,297.16 3 0 -github.com/echovault/sugardb/internal/utils.go:297.16,299.3 1 0 -github.com/echovault/sugardb/internal/utils.go:300.2,300.23 1 0 -github.com/echovault/sugardb/internal/utils.go:303.51,306.16 3 0 -github.com/echovault/sugardb/internal/utils.go:306.16,308.3 1 0 -github.com/echovault/sugardb/internal/utils.go:309.2,309.22 1 0 -github.com/echovault/sugardb/internal/utils.go:312.59,316.16 3 0 -github.com/echovault/sugardb/internal/utils.go:316.16,318.3 1 0 -github.com/echovault/sugardb/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/sugardb/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/sugardb/internal/utils.go:324.2,324.39 1 0 -github.com/echovault/sugardb/internal/utils.go:324.39,326.3 1 0 -github.com/echovault/sugardb/internal/utils.go:328.2,329.30 2 0 -github.com/echovault/sugardb/internal/utils.go:329.30,330.17 1 0 -github.com/echovault/sugardb/internal/utils.go:330.17,332.12 2 0 -github.com/echovault/sugardb/internal/utils.go:334.3,334.22 1 0 -github.com/echovault/sugardb/internal/utils.go:336.2,336.17 1 0 -github.com/echovault/sugardb/internal/utils.go:339.67,342.16 3 0 -github.com/echovault/sugardb/internal/utils.go:342.16,344.3 1 0 -github.com/echovault/sugardb/internal/utils.go:345.2,345.16 1 0 -github.com/echovault/sugardb/internal/utils.go:345.16,347.3 1 0 -github.com/echovault/sugardb/internal/utils.go:348.2,349.31 2 0 -github.com/echovault/sugardb/internal/utils.go:349.31,350.18 1 0 -github.com/echovault/sugardb/internal/utils.go:350.18,352.12 2 0 -github.com/echovault/sugardb/internal/utils.go:354.3,355.33 2 0 -github.com/echovault/sugardb/internal/utils.go:355.33,357.4 1 0 -github.com/echovault/sugardb/internal/utils.go:358.3,358.17 1 0 -github.com/echovault/sugardb/internal/utils.go:360.2,360.17 1 0 -github.com/echovault/sugardb/internal/utils.go:363.57,366.16 3 0 -github.com/echovault/sugardb/internal/utils.go:366.16,368.3 1 0 -github.com/echovault/sugardb/internal/utils.go:369.2,369.16 1 0 -github.com/echovault/sugardb/internal/utils.go:369.16,371.3 1 0 -github.com/echovault/sugardb/internal/utils.go:372.2,373.30 2 0 -github.com/echovault/sugardb/internal/utils.go:373.30,374.17 1 0 -github.com/echovault/sugardb/internal/utils.go:374.17,376.12 2 0 -github.com/echovault/sugardb/internal/utils.go:378.3,378.23 1 0 -github.com/echovault/sugardb/internal/utils.go:380.2,380.17 1 0 -github.com/echovault/sugardb/internal/utils.go:383.58,386.16 3 0 -github.com/echovault/sugardb/internal/utils.go:386.16,388.3 1 0 -github.com/echovault/sugardb/internal/utils.go:389.2,389.16 1 0 -github.com/echovault/sugardb/internal/utils.go:389.16,391.3 1 0 -github.com/echovault/sugardb/internal/utils.go:392.2,393.30 2 0 -github.com/echovault/sugardb/internal/utils.go:393.30,394.17 1 0 -github.com/echovault/sugardb/internal/utils.go:394.17,396.12 2 0 -github.com/echovault/sugardb/internal/utils.go:398.3,398.20 1 0 -github.com/echovault/sugardb/internal/utils.go:400.2,400.17 1 0 -github.com/echovault/sugardb/internal/utils.go:403.70,404.32 1 0 -github.com/echovault/sugardb/internal/utils.go:404.32,405.60 1 0 -github.com/echovault/sugardb/internal/utils.go:405.60,407.4 1 0 -github.com/echovault/sugardb/internal/utils.go:407.6,409.4 1 0 -github.com/echovault/sugardb/internal/utils.go:411.2,411.30 1 0 -github.com/echovault/sugardb/internal/utils.go:411.30,412.62 1 0 -github.com/echovault/sugardb/internal/utils.go:412.62,414.4 1 0 -github.com/echovault/sugardb/internal/utils.go:414.6,416.4 1 0 -github.com/echovault/sugardb/internal/utils.go:418.2,418.13 1 0 -github.com/echovault/sugardb/internal/utils.go:421.33,423.16 2 1 -github.com/echovault/sugardb/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/sugardb/internal/utils.go:427.2,428.16 2 1 -github.com/echovault/sugardb/internal/utils.go:428.16,430.3 1 0 -github.com/echovault/sugardb/internal/utils.go:431.2,431.15 1 1 -github.com/echovault/sugardb/internal/utils.go:431.15,433.3 1 1 -github.com/echovault/sugardb/internal/utils.go:435.2,435.42 1 1 -github.com/echovault/sugardb/internal/utils.go:438.61,443.12 4 1 -github.com/echovault/sugardb/internal/utils.go:443.12,444.7 1 1 -github.com/echovault/sugardb/internal/utils.go:444.7,446.73 2 1 -github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 0 -github.com/echovault/sugardb/internal/utils.go:450.4,450.9 1 1 -github.com/echovault/sugardb/internal/utils.go:452.3,452.21 1 1 -github.com/echovault/sugardb/internal/utils.go:455.2,456.15 2 1 -github.com/echovault/sugardb/internal/utils.go:456.15,458.3 1 1 -github.com/echovault/sugardb/internal/utils.go:460.2,460.9 1 1 -github.com/echovault/sugardb/internal/utils.go:461.18,462.47 1 0 -github.com/echovault/sugardb/internal/utils.go:463.14,464.19 1 1 -github.com/echovault/sugardb/internal/utils.go:468.84,473.12 4 0 -github.com/echovault/sugardb/internal/utils.go:473.12,474.7 1 0 -github.com/echovault/sugardb/internal/utils.go:474.7,476.73 2 0 -github.com/echovault/sugardb/internal/utils.go:476.73,478.13 1 0 -github.com/echovault/sugardb/internal/utils.go:480.4,480.9 1 0 -github.com/echovault/sugardb/internal/utils.go:482.3,482.21 1 0 -github.com/echovault/sugardb/internal/utils.go:485.2,486.15 2 0 -github.com/echovault/sugardb/internal/utils.go:486.15,488.3 1 0 -github.com/echovault/sugardb/internal/utils.go:490.2,490.9 1 0 -github.com/echovault/sugardb/internal/utils.go:491.18,492.47 1 0 -github.com/echovault/sugardb/internal/utils.go:493.14,494.19 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/sugardb/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/sugardb/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/sugardb/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/sugardb/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/sugardb/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/sugardb/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:56.43,63.2 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:65.58,80.26 7 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:80.26,84.4 3 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:85.26,89.4 3 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:93.2,94.41 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:94.41,99.3 4 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:101.2,104.16 3 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:104.16,106.3 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:108.2,108.37 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:108.37,111.70 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:111.70,113.18 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:113.18,115.5 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:116.4,116.14 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:119.3,119.17 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:119.17,121.4 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:123.3,123.27 1 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:127.45,137.2 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:141.72,154.2 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:158.75,171.2 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:173.43,176.16 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:176.16,179.3 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:181.2,182.16 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:182.16,185.3 2 0 -github.com/echovault/sugardb/internal/memberlist/memberlist.go:187.2,187.49 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:25.72,27.16 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:27.16,29.3 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:31.2,35.9 4 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:35.9,37.3 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:39.2,41.16 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:41.16,43.3 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:45.2,46.9 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:46.9,48.3 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:51.2,51.24 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:51.24,53.94 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:53.94,55.4 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:56.3,56.58 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:60.2,60.16 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:60.16,62.94 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:62.94,64.4 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:65.3,65.58 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:68.2,70.35 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:70.35,72.24 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:72.24,75.12 3 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:78.3,79.8 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:82.2,82.103 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:82.103,84.3 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:86.2,86.59 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:89.70,91.16 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:91.16,93.3 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:95.2,98.16 3 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:98.16,100.3 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:102.2,104.9 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:104.9,106.3 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:108.2,108.56 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:111.70,113.16 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:113.16,115.3 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:117.2,124.24 6 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:124.24,126.3 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:128.2,128.16 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:128.16,130.3 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:132.2,133.9 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:133.9,135.3 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:137.2,137.15 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:137.15,139.3 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:140.2,140.13 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:140.13,142.3 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:144.2,144.30 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:144.30,146.3 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:148.2,148.22 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:148.22,150.3 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:152.2,152.17 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:152.17,155.3 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:157.2,159.14 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:159.14,161.38 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:161.38,163.4 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:164.3,164.12 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:167.2,167.65 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:170.70,172.16 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:172.16,174.3 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:176.2,179.16 4 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:179.16,182.18 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:182.18,184.4 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:185.3,185.57 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:187.2,188.9 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:188.9,190.3 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:191.2,194.17 2 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:194.17,196.3 1 0 -github.com/echovault/sugardb/internal/modules/string/commands.go:197.2,197.59 1 1 -github.com/echovault/sugardb/internal/modules/string/commands.go:200.36,254.2 1 1 -github.com/echovault/sugardb/internal/modules/string/key_funcs.go:24.78,25.19 1 1 -github.com/echovault/sugardb/internal/modules/string/key_funcs.go:25.19,27.3 1 1 -github.com/echovault/sugardb/internal/modules/string/key_funcs.go:28.2,32.8 1 1 -github.com/echovault/sugardb/internal/modules/string/key_funcs.go:35.76,36.19 1 1 -github.com/echovault/sugardb/internal/modules/string/key_funcs.go:36.19,38.3 1 1 -github.com/echovault/sugardb/internal/modules/string/key_funcs.go:39.2,43.8 1 1 -github.com/echovault/sugardb/internal/modules/string/key_funcs.go:46.76,47.19 1 1 -github.com/echovault/sugardb/internal/modules/string/key_funcs.go:47.19,49.3 1 1 -github.com/echovault/sugardb/internal/modules/string/key_funcs.go:50.2,54.8 1 1 -github.com/echovault/sugardb/internal/modules/string/key_funcs.go:57.76,58.19 1 1 -github.com/echovault/sugardb/internal/modules/string/key_funcs.go:58.19,60.3 1 1 -github.com/echovault/sugardb/internal/modules/string/key_funcs.go:61.2,65.8 1 1 -github.com/echovault/sugardb/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/sugardb/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:69.3,74.40 5 0 -github.com/echovault/sugardb/internal/raft/fsm.go:75.11,79.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:81.21,82.66 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:82.66,87.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:88.4,91.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:93.18,96.18 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:96.18,101.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:103.4,106.18 3 0 -github.com/echovault/sugardb/internal/raft/fsm.go:106.18,111.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:112.4,113.10 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:113.10,115.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:117.4,117.96 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:117.96,122.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:122.10,127.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:131.2,131.12 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:135.54,143.2 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:146.55,149.16 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:149.16,152.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:154.2,159.48 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:159.48,162.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:165.2,165.81 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:165.81,167.34 2 0 -github.com/echovault/sugardb/internal/raft/fsm.go:167.34,168.96 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:168.96,170.5 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:171.4,171.60 1 0 -github.com/echovault/sugardb/internal/raft/fsm.go:176.2,178.12 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/sugardb/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/sugardb/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/sugardb/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/sugardb/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/sugardb/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/sugardb/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/sugardb/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 0 -github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 -github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 0 -github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 0 -github.com/echovault/sugardb/internal/types.go:49.14,52.24 2 0 -github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 0 -github.com/echovault/sugardb/internal/types.go:56.23,59.4 2 0 -github.com/echovault/sugardb/internal/types.go:62.31,63.53 1 0 -github.com/echovault/sugardb/internal/types.go:65.10,66.117 1 0 -github.com/echovault/sugardb/internal/types.go:69.2,69.18 1 0 -github.com/echovault/sugardb/internal/utils.go:41.38,45.16 2 0 -github.com/echovault/sugardb/internal/utils.go:45.16,47.3 1 0 -github.com/echovault/sugardb/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/sugardb/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/sugardb/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/sugardb/internal/utils.go:59.43,63.16 3 0 -github.com/echovault/sugardb/internal/utils.go:63.16,65.3 1 0 -github.com/echovault/sugardb/internal/utils.go:67.2,68.42 2 0 -github.com/echovault/sugardb/internal/utils.go:68.42,70.3 1 0 -github.com/echovault/sugardb/internal/utils.go:72.2,72.17 1 0 -github.com/echovault/sugardb/internal/utils.go:75.47,82.6 4 0 -github.com/echovault/sugardb/internal/utils.go:82.6,84.43 2 0 -github.com/echovault/sugardb/internal/utils.go:84.43,85.9 1 0 -github.com/echovault/sugardb/internal/utils.go:87.3,87.17 1 0 -github.com/echovault/sugardb/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/sugardb/internal/utils.go:90.3,91.21 2 0 -github.com/echovault/sugardb/internal/utils.go:91.21,92.9 1 0 -github.com/echovault/sugardb/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/sugardb/internal/utils.go:97.2,97.37 1 0 -github.com/echovault/sugardb/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/sugardb/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/sugardb/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/sugardb/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/sugardb/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/sugardb/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/sugardb/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/sugardb/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/sugardb/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/sugardb/internal/utils.go:117.37,119.16 2 0 -github.com/echovault/sugardb/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/sugardb/internal/utils.go:122.2,122.15 1 0 -github.com/echovault/sugardb/internal/utils.go:122.15,123.37 1 0 -github.com/echovault/sugardb/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/sugardb/internal/utils.go:128.2,130.23 2 0 -github.com/echovault/sugardb/internal/utils.go:133.72,134.65 1 0 -github.com/echovault/sugardb/internal/utils.go:134.65,137.3 1 0 -github.com/echovault/sugardb/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/sugardb/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/sugardb/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/sugardb/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/sugardb/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/sugardb/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/sugardb/internal/utils.go:150.66,152.2 1 0 -github.com/echovault/sugardb/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/sugardb/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/sugardb/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/sugardb/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/sugardb/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/sugardb/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/sugardb/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/sugardb/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/sugardb/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/sugardb/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/sugardb/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/sugardb/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/sugardb/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/sugardb/internal/utils.go:190.64,191.20 1 0 -github.com/echovault/sugardb/internal/utils.go:191.20,193.3 1 0 -github.com/echovault/sugardb/internal/utils.go:196.2,196.33 1 0 -github.com/echovault/sugardb/internal/utils.go:196.33,198.3 1 0 -github.com/echovault/sugardb/internal/utils.go:203.2,206.37 2 0 -github.com/echovault/sugardb/internal/utils.go:210.100,211.36 1 1 -github.com/echovault/sugardb/internal/utils.go:211.36,213.26 2 1 -github.com/echovault/sugardb/internal/utils.go:213.26,215.35 1 1 -github.com/echovault/sugardb/internal/utils.go:215.35,216.13 1 0 -github.com/echovault/sugardb/internal/utils.go:219.4,219.30 1 1 -github.com/echovault/sugardb/internal/utils.go:219.30,221.5 1 0 -github.com/echovault/sugardb/internal/utils.go:223.3,223.36 1 1 -github.com/echovault/sugardb/internal/utils.go:223.36,225.4 1 0 -github.com/echovault/sugardb/internal/utils.go:227.2,227.14 1 1 -github.com/echovault/sugardb/internal/utils.go:232.43,233.14 1 0 -github.com/echovault/sugardb/internal/utils.go:233.14,235.3 1 0 -github.com/echovault/sugardb/internal/utils.go:236.2,236.30 1 0 -github.com/echovault/sugardb/internal/utils.go:236.30,238.3 1 0 -github.com/echovault/sugardb/internal/utils.go:239.2,239.30 1 0 -github.com/echovault/sugardb/internal/utils.go:239.30,241.3 1 0 -github.com/echovault/sugardb/internal/utils.go:243.2,244.21 2 0 -github.com/echovault/sugardb/internal/utils.go:244.21,246.3 1 0 -github.com/echovault/sugardb/internal/utils.go:248.2,249.29 2 0 -github.com/echovault/sugardb/internal/utils.go:249.29,251.13 2 0 -github.com/echovault/sugardb/internal/utils.go:251.13,252.9 1 0 -github.com/echovault/sugardb/internal/utils.go:256.2,256.10 1 0 -github.com/echovault/sugardb/internal/utils.go:259.41,261.28 2 0 -github.com/echovault/sugardb/internal/utils.go:261.28,263.3 1 0 -github.com/echovault/sugardb/internal/utils.go:264.2,264.20 1 0 -github.com/echovault/sugardb/internal/utils.go:267.47,270.16 3 0 -github.com/echovault/sugardb/internal/utils.go:270.16,272.3 1 0 -github.com/echovault/sugardb/internal/utils.go:273.2,273.24 1 0 -github.com/echovault/sugardb/internal/utils.go:276.52,279.16 3 0 -github.com/echovault/sugardb/internal/utils.go:279.16,281.3 1 0 -github.com/echovault/sugardb/internal/utils.go:282.2,282.24 1 0 -github.com/echovault/sugardb/internal/utils.go:285.50,288.16 3 0 -github.com/echovault/sugardb/internal/utils.go:288.16,290.3 1 0 -github.com/echovault/sugardb/internal/utils.go:291.2,291.25 1 0 -github.com/echovault/sugardb/internal/utils.go:294.52,297.16 3 0 -github.com/echovault/sugardb/internal/utils.go:297.16,299.3 1 0 -github.com/echovault/sugardb/internal/utils.go:300.2,300.23 1 0 -github.com/echovault/sugardb/internal/utils.go:303.51,306.16 3 0 -github.com/echovault/sugardb/internal/utils.go:306.16,308.3 1 0 -github.com/echovault/sugardb/internal/utils.go:309.2,309.22 1 0 -github.com/echovault/sugardb/internal/utils.go:312.59,316.16 3 0 -github.com/echovault/sugardb/internal/utils.go:316.16,318.3 1 0 -github.com/echovault/sugardb/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/sugardb/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/sugardb/internal/utils.go:324.2,324.39 1 0 -github.com/echovault/sugardb/internal/utils.go:324.39,326.3 1 0 -github.com/echovault/sugardb/internal/utils.go:328.2,329.30 2 0 -github.com/echovault/sugardb/internal/utils.go:329.30,330.17 1 0 -github.com/echovault/sugardb/internal/utils.go:330.17,332.12 2 0 -github.com/echovault/sugardb/internal/utils.go:334.3,334.22 1 0 -github.com/echovault/sugardb/internal/utils.go:336.2,336.17 1 0 -github.com/echovault/sugardb/internal/utils.go:339.67,342.16 3 0 -github.com/echovault/sugardb/internal/utils.go:342.16,344.3 1 0 -github.com/echovault/sugardb/internal/utils.go:345.2,345.16 1 0 -github.com/echovault/sugardb/internal/utils.go:345.16,347.3 1 0 -github.com/echovault/sugardb/internal/utils.go:348.2,349.31 2 0 -github.com/echovault/sugardb/internal/utils.go:349.31,350.18 1 0 -github.com/echovault/sugardb/internal/utils.go:350.18,352.12 2 0 -github.com/echovault/sugardb/internal/utils.go:354.3,355.33 2 0 -github.com/echovault/sugardb/internal/utils.go:355.33,357.4 1 0 -github.com/echovault/sugardb/internal/utils.go:358.3,358.17 1 0 -github.com/echovault/sugardb/internal/utils.go:360.2,360.17 1 0 -github.com/echovault/sugardb/internal/utils.go:363.57,366.16 3 0 -github.com/echovault/sugardb/internal/utils.go:366.16,368.3 1 0 -github.com/echovault/sugardb/internal/utils.go:369.2,369.16 1 0 -github.com/echovault/sugardb/internal/utils.go:369.16,371.3 1 0 -github.com/echovault/sugardb/internal/utils.go:372.2,373.30 2 0 -github.com/echovault/sugardb/internal/utils.go:373.30,374.17 1 0 -github.com/echovault/sugardb/internal/utils.go:374.17,376.12 2 0 -github.com/echovault/sugardb/internal/utils.go:378.3,378.23 1 0 -github.com/echovault/sugardb/internal/utils.go:380.2,380.17 1 0 -github.com/echovault/sugardb/internal/utils.go:383.58,386.16 3 0 -github.com/echovault/sugardb/internal/utils.go:386.16,388.3 1 0 -github.com/echovault/sugardb/internal/utils.go:389.2,389.16 1 0 -github.com/echovault/sugardb/internal/utils.go:389.16,391.3 1 0 -github.com/echovault/sugardb/internal/utils.go:392.2,393.30 2 0 -github.com/echovault/sugardb/internal/utils.go:393.30,394.17 1 0 -github.com/echovault/sugardb/internal/utils.go:394.17,396.12 2 0 -github.com/echovault/sugardb/internal/utils.go:398.3,398.20 1 0 -github.com/echovault/sugardb/internal/utils.go:400.2,400.17 1 0 -github.com/echovault/sugardb/internal/utils.go:403.70,404.32 1 0 -github.com/echovault/sugardb/internal/utils.go:404.32,405.60 1 0 -github.com/echovault/sugardb/internal/utils.go:405.60,407.4 1 0 -github.com/echovault/sugardb/internal/utils.go:407.6,409.4 1 0 -github.com/echovault/sugardb/internal/utils.go:411.2,411.30 1 0 -github.com/echovault/sugardb/internal/utils.go:411.30,412.62 1 0 -github.com/echovault/sugardb/internal/utils.go:412.62,414.4 1 0 -github.com/echovault/sugardb/internal/utils.go:414.6,416.4 1 0 -github.com/echovault/sugardb/internal/utils.go:418.2,418.13 1 0 -github.com/echovault/sugardb/internal/utils.go:421.33,423.16 2 0 -github.com/echovault/sugardb/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/sugardb/internal/utils.go:427.2,428.16 2 0 -github.com/echovault/sugardb/internal/utils.go:428.16,430.3 1 0 -github.com/echovault/sugardb/internal/utils.go:431.2,431.15 1 0 -github.com/echovault/sugardb/internal/utils.go:431.15,433.3 1 0 -github.com/echovault/sugardb/internal/utils.go:435.2,435.42 1 0 -github.com/echovault/sugardb/internal/utils.go:438.61,443.12 4 0 -github.com/echovault/sugardb/internal/utils.go:443.12,444.7 1 0 -github.com/echovault/sugardb/internal/utils.go:444.7,446.73 2 0 -github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 0 -github.com/echovault/sugardb/internal/utils.go:450.4,450.9 1 0 -github.com/echovault/sugardb/internal/utils.go:452.3,452.21 1 0 -github.com/echovault/sugardb/internal/utils.go:455.2,456.15 2 0 -github.com/echovault/sugardb/internal/utils.go:456.15,458.3 1 0 -github.com/echovault/sugardb/internal/utils.go:460.2,460.9 1 0 -github.com/echovault/sugardb/internal/utils.go:461.18,462.47 1 0 -github.com/echovault/sugardb/internal/utils.go:463.14,464.19 1 0 -github.com/echovault/sugardb/internal/utils.go:468.84,473.12 4 0 -github.com/echovault/sugardb/internal/utils.go:473.12,474.7 1 0 -github.com/echovault/sugardb/internal/utils.go:474.7,476.73 2 0 -github.com/echovault/sugardb/internal/utils.go:476.73,478.13 1 0 -github.com/echovault/sugardb/internal/utils.go:480.4,480.9 1 0 -github.com/echovault/sugardb/internal/utils.go:482.3,482.21 1 0 -github.com/echovault/sugardb/internal/utils.go:485.2,486.15 2 0 -github.com/echovault/sugardb/internal/utils.go:486.15,488.3 1 0 -github.com/echovault/sugardb/internal/utils.go:490.2,490.9 1 0 -github.com/echovault/sugardb/internal/utils.go:491.18,492.47 1 0 -github.com/echovault/sugardb/internal/utils.go:493.14,494.19 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/sugardb/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/sugardb/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 1 -github.com/echovault/sugardb/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:55.56,56.30 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:56.30,58.3 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:61.59,62.30 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:62.30,64.3 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:67.64,68.30 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:68.30,70.3 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:73.59,74.30 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:74.30,76.3 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:79.59,80.30 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:80.30,82.3 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:85.60,86.30 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:86.30,88.3 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:91.90,92.30 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:92.30,94.3 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:97.77,98.30 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:98.30,100.3 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:103.73,104.30 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:104.30,106.3 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:109.103,110.30 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:110.30,112.3 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:115.65,122.30 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:122.31,122.32 0 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:123.31,123.32 0 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:124.60,126.4 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:127.85,127.86 0 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:128.48,128.49 0 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:129.43,131.4 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:134.2,134.33 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:134.33,136.3 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:138.2,138.34 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:138.34,139.13 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:139.13,141.17 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:141.17,143.5 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:144.4,144.8 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:144.8,146.62 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:146.62,147.50 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:147.50,149.7 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:155.2,155.15 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:158.44,177.58 6 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:177.58,180.3 2 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:183.2,185.16 3 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:185.16,186.37 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:186.37,189.18 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:189.18,192.5 2 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:193.4,193.24 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:194.9,197.4 2 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:200.2,201.16 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:201.16,204.3 2 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:205.2,205.35 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:205.35,208.3 2 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:210.2,212.20 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:212.20,213.53 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:213.53,216.4 2 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:220.2,225.16 3 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:225.16,228.3 2 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:230.2,231.49 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:231.49,233.3 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:236.2,239.16 3 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:239.16,242.3 2 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:245.2,246.16 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:246.16,249.3 2 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:252.2,257.16 3 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:257.16,260.3 2 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:261.2,261.39 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:261.39,264.3 2 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:265.2,265.33 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:265.33,267.3 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:268.2,268.34 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:268.34,271.3 2 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:274.2,275.58 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:275.58,277.3 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:280.2,281.16 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:281.16,284.3 2 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:285.2,285.15 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:285.15,286.35 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:286.35,288.4 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:292.2,292.39 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:292.39,294.3 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:295.2,295.32 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:295.32,297.3 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:300.2,305.12 3 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:308.39,310.50 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:310.50,312.3 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:313.2,313.16 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:313.16,315.3 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:316.2,316.15 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:316.15,317.36 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:317.36,319.4 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:322.2,325.16 3 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:325.16,327.3 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:329.2,329.52 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:329.52,331.3 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:333.2,333.46 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:333.46,335.3 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:337.2,342.50 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:342.50,344.3 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:345.2,345.16 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:345.16,347.3 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:348.2,348.15 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:348.15,349.36 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:349.36,351.4 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:354.2,355.16 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:355.16,357.3 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:359.2,360.58 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:360.58,362.3 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:364.2,366.99 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:366.99,367.34 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:367.34,369.4 1 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:372.2,374.12 2 1 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:377.46,379.2 1 0 -github.com/echovault/sugardb/internal/snapshot/snapshot.go:381.42,383.2 1 1 -github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 1 -github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 0 -github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 1 github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 1 github.com/echovault/sugardb/internal/types.go:49.14,52.24 2 1 github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 1 @@ -7492,7 +7492,7 @@ github.com/echovault/sugardb/internal/utils.go:435.2,435.42 1 1 github.com/echovault/sugardb/internal/utils.go:438.61,443.12 4 1 github.com/echovault/sugardb/internal/utils.go:443.12,444.7 1 1 github.com/echovault/sugardb/internal/utils.go:444.7,446.73 2 1 -github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 0 +github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 1 github.com/echovault/sugardb/internal/utils.go:450.4,450.9 1 1 github.com/echovault/sugardb/internal/utils.go:452.3,452.21 1 1 github.com/echovault/sugardb/internal/utils.go:455.2,456.15 2 1 @@ -8138,3 +8138,2241 @@ github.com/echovault/sugardb/internal/raft/raft.go:218.31,220.22 1 0 github.com/echovault/sugardb/internal/raft/raft.go:220.22,222.17 2 0 github.com/echovault/sugardb/internal/raft/raft.go:222.17,225.4 2 0 github.com/echovault/sugardb/internal/raft/raft.go:226.3,226.49 1 0 +github.com/echovault/sugardb/internal/types.go:35.43,40.29 3 1 +github.com/echovault/sugardb/internal/types.go:41.11,42.12 1 1 +github.com/echovault/sugardb/internal/types.go:44.11,45.34 1 1 +github.com/echovault/sugardb/internal/types.go:47.22,48.12 1 1 +github.com/echovault/sugardb/internal/types.go:49.14,52.24 2 1 +github.com/echovault/sugardb/internal/types.go:55.16,56.23 1 1 +github.com/echovault/sugardb/internal/types.go:56.23,59.4 2 1 +github.com/echovault/sugardb/internal/types.go:62.31,63.53 1 1 +github.com/echovault/sugardb/internal/types.go:65.10,66.117 1 0 +github.com/echovault/sugardb/internal/types.go:69.2,69.18 1 1 +github.com/echovault/sugardb/internal/utils.go:41.38,45.16 2 1 +github.com/echovault/sugardb/internal/utils.go:45.16,47.3 1 1 +github.com/echovault/sugardb/internal/utils.go:49.2,49.15 1 1 +github.com/echovault/sugardb/internal/utils.go:49.15,52.3 2 1 +github.com/echovault/sugardb/internal/utils.go:54.2,56.10 2 1 +github.com/echovault/sugardb/internal/utils.go:59.43,63.16 3 1 +github.com/echovault/sugardb/internal/utils.go:63.16,65.3 1 1 +github.com/echovault/sugardb/internal/utils.go:67.2,68.42 2 1 +github.com/echovault/sugardb/internal/utils.go:68.42,70.3 1 1 +github.com/echovault/sugardb/internal/utils.go:72.2,72.17 1 1 +github.com/echovault/sugardb/internal/utils.go:75.47,82.6 4 1 +github.com/echovault/sugardb/internal/utils.go:82.6,84.43 2 1 +github.com/echovault/sugardb/internal/utils.go:84.43,85.9 1 1 +github.com/echovault/sugardb/internal/utils.go:87.3,87.17 1 1 +github.com/echovault/sugardb/internal/utils.go:87.17,89.4 1 0 +github.com/echovault/sugardb/internal/utils.go:90.3,91.21 2 1 +github.com/echovault/sugardb/internal/utils.go:91.21,92.9 1 1 +github.com/echovault/sugardb/internal/utils.go:94.3,94.15 1 0 +github.com/echovault/sugardb/internal/utils.go:97.2,97.37 1 1 +github.com/echovault/sugardb/internal/utils.go:100.120,102.20 2 1 +github.com/echovault/sugardb/internal/utils.go:102.20,104.3 1 1 +github.com/echovault/sugardb/internal/utils.go:105.2,105.16 1 1 +github.com/echovault/sugardb/internal/utils.go:105.16,107.3 1 1 +github.com/echovault/sugardb/internal/utils.go:108.2,108.24 1 1 +github.com/echovault/sugardb/internal/utils.go:108.24,110.3 1 0 +github.com/echovault/sugardb/internal/utils.go:111.2,111.21 1 1 +github.com/echovault/sugardb/internal/utils.go:111.21,113.3 1 0 +github.com/echovault/sugardb/internal/utils.go:114.2,114.16 1 1 +github.com/echovault/sugardb/internal/utils.go:117.37,119.16 2 1 +github.com/echovault/sugardb/internal/utils.go:119.16,121.3 1 0 +github.com/echovault/sugardb/internal/utils.go:122.2,122.15 1 1 +github.com/echovault/sugardb/internal/utils.go:122.15,123.37 1 1 +github.com/echovault/sugardb/internal/utils.go:123.37,125.4 1 0 +github.com/echovault/sugardb/internal/utils.go:128.2,130.23 2 1 +github.com/echovault/sugardb/internal/utils.go:133.72,134.65 1 1 +github.com/echovault/sugardb/internal/utils.go:134.65,137.3 1 1 +github.com/echovault/sugardb/internal/utils.go:138.2,138.18 1 1 +github.com/echovault/sugardb/internal/utils.go:138.18,141.3 1 0 +github.com/echovault/sugardb/internal/utils.go:142.2,142.49 1 1 +github.com/echovault/sugardb/internal/utils.go:142.49,143.52 1 1 +github.com/echovault/sugardb/internal/utils.go:143.52,145.4 1 1 +github.com/echovault/sugardb/internal/utils.go:147.2,147.71 1 1 +github.com/echovault/sugardb/internal/utils.go:150.66,152.2 1 1 +github.com/echovault/sugardb/internal/utils.go:154.24,155.11 1 1 +github.com/echovault/sugardb/internal/utils.go:155.11,157.3 1 1 +github.com/echovault/sugardb/internal/utils.go:158.2,158.10 1 1 +github.com/echovault/sugardb/internal/utils.go:162.49,166.16 3 0 +github.com/echovault/sugardb/internal/utils.go:166.16,168.3 1 0 +github.com/echovault/sugardb/internal/utils.go:170.2,171.17 2 0 +github.com/echovault/sugardb/internal/utils.go:172.12,173.19 1 0 +github.com/echovault/sugardb/internal/utils.go:174.12,175.26 1 0 +github.com/echovault/sugardb/internal/utils.go:176.12,177.33 1 0 +github.com/echovault/sugardb/internal/utils.go:178.12,179.40 1 0 +github.com/echovault/sugardb/internal/utils.go:180.12,181.47 1 0 +github.com/echovault/sugardb/internal/utils.go:182.10,183.91 1 0 +github.com/echovault/sugardb/internal/utils.go:186.2,186.30 1 0 +github.com/echovault/sugardb/internal/utils.go:190.64,191.20 1 1 +github.com/echovault/sugardb/internal/utils.go:191.20,193.3 1 1 +github.com/echovault/sugardb/internal/utils.go:196.2,196.33 1 1 +github.com/echovault/sugardb/internal/utils.go:196.33,198.3 1 1 +github.com/echovault/sugardb/internal/utils.go:203.2,206.37 2 0 +github.com/echovault/sugardb/internal/utils.go:210.100,211.36 1 1 +github.com/echovault/sugardb/internal/utils.go:211.36,213.26 2 1 +github.com/echovault/sugardb/internal/utils.go:213.26,215.35 1 1 +github.com/echovault/sugardb/internal/utils.go:215.35,216.13 1 1 +github.com/echovault/sugardb/internal/utils.go:219.4,219.30 1 0 +github.com/echovault/sugardb/internal/utils.go:219.30,221.5 1 0 +github.com/echovault/sugardb/internal/utils.go:223.3,223.36 1 1 +github.com/echovault/sugardb/internal/utils.go:223.36,225.4 1 0 +github.com/echovault/sugardb/internal/utils.go:227.2,227.14 1 1 +github.com/echovault/sugardb/internal/utils.go:232.43,233.14 1 1 +github.com/echovault/sugardb/internal/utils.go:233.14,235.3 1 1 +github.com/echovault/sugardb/internal/utils.go:236.2,236.30 1 1 +github.com/echovault/sugardb/internal/utils.go:236.30,238.3 1 0 +github.com/echovault/sugardb/internal/utils.go:239.2,239.30 1 1 +github.com/echovault/sugardb/internal/utils.go:239.30,241.3 1 0 +github.com/echovault/sugardb/internal/utils.go:243.2,244.21 2 1 +github.com/echovault/sugardb/internal/utils.go:244.21,246.3 1 0 +github.com/echovault/sugardb/internal/utils.go:248.2,249.29 2 1 +github.com/echovault/sugardb/internal/utils.go:249.29,251.13 2 1 +github.com/echovault/sugardb/internal/utils.go:251.13,252.9 1 1 +github.com/echovault/sugardb/internal/utils.go:256.2,256.10 1 1 +github.com/echovault/sugardb/internal/utils.go:259.41,261.28 2 1 +github.com/echovault/sugardb/internal/utils.go:261.28,263.3 1 1 +github.com/echovault/sugardb/internal/utils.go:264.2,264.20 1 1 +github.com/echovault/sugardb/internal/utils.go:267.47,270.16 3 1 +github.com/echovault/sugardb/internal/utils.go:270.16,272.3 1 0 +github.com/echovault/sugardb/internal/utils.go:273.2,273.24 1 1 +github.com/echovault/sugardb/internal/utils.go:276.52,279.16 3 1 +github.com/echovault/sugardb/internal/utils.go:279.16,281.3 1 0 +github.com/echovault/sugardb/internal/utils.go:282.2,282.24 1 1 +github.com/echovault/sugardb/internal/utils.go:285.50,288.16 3 1 +github.com/echovault/sugardb/internal/utils.go:288.16,290.3 1 0 +github.com/echovault/sugardb/internal/utils.go:291.2,291.25 1 1 +github.com/echovault/sugardb/internal/utils.go:294.52,297.16 3 1 +github.com/echovault/sugardb/internal/utils.go:297.16,299.3 1 0 +github.com/echovault/sugardb/internal/utils.go:300.2,300.23 1 1 +github.com/echovault/sugardb/internal/utils.go:303.51,306.16 3 1 +github.com/echovault/sugardb/internal/utils.go:306.16,308.3 1 0 +github.com/echovault/sugardb/internal/utils.go:309.2,309.22 1 1 +github.com/echovault/sugardb/internal/utils.go:312.59,316.16 3 1 +github.com/echovault/sugardb/internal/utils.go:316.16,318.3 1 0 +github.com/echovault/sugardb/internal/utils.go:320.2,320.16 1 1 +github.com/echovault/sugardb/internal/utils.go:320.16,322.3 1 1 +github.com/echovault/sugardb/internal/utils.go:324.2,324.39 1 1 +github.com/echovault/sugardb/internal/utils.go:324.39,326.3 1 0 +github.com/echovault/sugardb/internal/utils.go:328.2,329.30 2 1 +github.com/echovault/sugardb/internal/utils.go:329.30,330.17 1 1 +github.com/echovault/sugardb/internal/utils.go:330.17,332.12 2 1 +github.com/echovault/sugardb/internal/utils.go:334.3,334.22 1 1 +github.com/echovault/sugardb/internal/utils.go:336.2,336.17 1 1 +github.com/echovault/sugardb/internal/utils.go:339.67,342.16 3 1 +github.com/echovault/sugardb/internal/utils.go:342.16,344.3 1 0 +github.com/echovault/sugardb/internal/utils.go:345.2,345.16 1 1 +github.com/echovault/sugardb/internal/utils.go:345.16,347.3 1 0 +github.com/echovault/sugardb/internal/utils.go:348.2,349.31 2 1 +github.com/echovault/sugardb/internal/utils.go:349.31,350.18 1 1 +github.com/echovault/sugardb/internal/utils.go:350.18,352.12 2 0 +github.com/echovault/sugardb/internal/utils.go:354.3,355.33 2 1 +github.com/echovault/sugardb/internal/utils.go:355.33,357.4 1 1 +github.com/echovault/sugardb/internal/utils.go:358.3,358.17 1 1 +github.com/echovault/sugardb/internal/utils.go:360.2,360.17 1 1 +github.com/echovault/sugardb/internal/utils.go:363.57,366.16 3 1 +github.com/echovault/sugardb/internal/utils.go:366.16,368.3 1 0 +github.com/echovault/sugardb/internal/utils.go:369.2,369.16 1 1 +github.com/echovault/sugardb/internal/utils.go:369.16,371.3 1 0 +github.com/echovault/sugardb/internal/utils.go:372.2,373.30 2 1 +github.com/echovault/sugardb/internal/utils.go:373.30,374.17 1 1 +github.com/echovault/sugardb/internal/utils.go:374.17,376.12 2 0 +github.com/echovault/sugardb/internal/utils.go:378.3,378.23 1 1 +github.com/echovault/sugardb/internal/utils.go:380.2,380.17 1 1 +github.com/echovault/sugardb/internal/utils.go:383.58,386.16 3 1 +github.com/echovault/sugardb/internal/utils.go:386.16,388.3 1 0 +github.com/echovault/sugardb/internal/utils.go:389.2,389.16 1 1 +github.com/echovault/sugardb/internal/utils.go:389.16,391.3 1 0 +github.com/echovault/sugardb/internal/utils.go:392.2,393.30 2 1 +github.com/echovault/sugardb/internal/utils.go:393.30,394.17 1 1 +github.com/echovault/sugardb/internal/utils.go:394.17,396.12 2 0 +github.com/echovault/sugardb/internal/utils.go:398.3,398.20 1 1 +github.com/echovault/sugardb/internal/utils.go:400.2,400.17 1 1 +github.com/echovault/sugardb/internal/utils.go:403.70,404.32 1 1 +github.com/echovault/sugardb/internal/utils.go:404.32,405.60 1 1 +github.com/echovault/sugardb/internal/utils.go:405.60,407.4 1 1 +github.com/echovault/sugardb/internal/utils.go:407.6,409.4 1 0 +github.com/echovault/sugardb/internal/utils.go:411.2,411.30 1 1 +github.com/echovault/sugardb/internal/utils.go:411.30,412.62 1 1 +github.com/echovault/sugardb/internal/utils.go:412.62,414.4 1 1 +github.com/echovault/sugardb/internal/utils.go:414.6,416.4 1 0 +github.com/echovault/sugardb/internal/utils.go:418.2,418.13 1 1 +github.com/echovault/sugardb/internal/utils.go:421.33,423.16 2 1 +github.com/echovault/sugardb/internal/utils.go:423.16,425.3 1 0 +github.com/echovault/sugardb/internal/utils.go:427.2,428.16 2 1 +github.com/echovault/sugardb/internal/utils.go:428.16,430.3 1 0 +github.com/echovault/sugardb/internal/utils.go:431.2,431.15 1 1 +github.com/echovault/sugardb/internal/utils.go:431.15,433.3 1 1 +github.com/echovault/sugardb/internal/utils.go:435.2,435.42 1 1 +github.com/echovault/sugardb/internal/utils.go:438.61,443.12 4 1 +github.com/echovault/sugardb/internal/utils.go:443.12,444.7 1 1 +github.com/echovault/sugardb/internal/utils.go:444.7,446.73 2 1 +github.com/echovault/sugardb/internal/utils.go:446.73,448.13 1 1 +github.com/echovault/sugardb/internal/utils.go:450.4,450.9 1 1 +github.com/echovault/sugardb/internal/utils.go:452.3,452.21 1 1 +github.com/echovault/sugardb/internal/utils.go:455.2,456.15 2 1 +github.com/echovault/sugardb/internal/utils.go:456.15,458.3 1 1 +github.com/echovault/sugardb/internal/utils.go:460.2,460.9 1 1 +github.com/echovault/sugardb/internal/utils.go:461.18,462.47 1 0 +github.com/echovault/sugardb/internal/utils.go:463.14,464.19 1 1 +github.com/echovault/sugardb/internal/utils.go:468.84,473.12 4 1 +github.com/echovault/sugardb/internal/utils.go:473.12,474.7 1 1 +github.com/echovault/sugardb/internal/utils.go:474.7,476.73 2 1 +github.com/echovault/sugardb/internal/utils.go:476.73,478.13 1 0 +github.com/echovault/sugardb/internal/utils.go:480.4,480.9 1 1 +github.com/echovault/sugardb/internal/utils.go:482.3,482.21 1 1 +github.com/echovault/sugardb/internal/utils.go:485.2,486.15 2 1 +github.com/echovault/sugardb/internal/utils.go:486.15,488.3 1 1 +github.com/echovault/sugardb/internal/utils.go:490.2,490.9 1 1 +github.com/echovault/sugardb/internal/utils.go:491.18,492.47 1 0 +github.com/echovault/sugardb/internal/utils.go:493.14,494.19 1 1 +github.com/echovault/sugardb/internal/clock/clock.go:14.23,16.43 1 1 +github.com/echovault/sugardb/internal/clock/clock.go:16.43,18.3 1 1 +github.com/echovault/sugardb/internal/clock/clock.go:19.2,19.20 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:24.34,26.2 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:28.58,30.2 1 0 +github.com/echovault/sugardb/internal/clock/clock.go:34.34,37.2 2 1 +github.com/echovault/sugardb/internal/clock/clock.go:39.58,41.2 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:32.88,35.9 2 1 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:35.9,37.3 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:39.2,39.33 1 1 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:40.18,42.56 1 1 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:43.20,45.62 1 1 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:46.10,47.15 1 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:52.60,55.16 2 1 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:55.16,58.3 2 0 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:60.2,60.12 1 1 +github.com/echovault/sugardb/internal/memberlist/broadcast.go:64.55,66.2 0 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:42.47,46.2 1 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:49.54,59.16 3 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:59.16,61.3 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:63.2,63.10 1 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:67.54,69.55 2 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:69.55,72.3 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:74.2,74.20 1 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:75.18,77.39 1 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:77.39,80.4 2 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:81.3,82.17 2 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:82.17,84.4 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:86.19,88.39 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:88.39,91.4 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:93.3,99.67 3 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:99.67,101.4 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:103.20,105.39 1 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:105.39,108.4 2 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:110.3,115.17 3 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:115.17,118.4 2 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:120.3,120.67 1 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:120.67,122.4 1 0 +github.com/echovault/sugardb/internal/memberlist/delegate.go:127.71,129.2 1 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:132.56,135.2 1 1 +github.com/echovault/sugardb/internal/memberlist/delegate.go:138.68,140.2 0 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:33.62,37.2 1 1 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:40.71,42.2 1 1 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:45.72,52.16 4 1 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:52.16,55.3 2 0 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:57.2,59.16 2 1 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:59.16,61.3 1 1 +github.com/echovault/sugardb/internal/memberlist/event_delegate.go:65.74,67.2 0 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:56.43,63.2 1 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:65.58,80.26 7 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:80.26,84.4 3 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:85.26,89.4 3 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:93.2,94.41 2 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:94.41,99.3 4 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:101.2,104.16 3 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:104.16,106.3 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:108.2,108.37 1 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:108.37,111.70 2 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:111.70,113.18 2 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:113.18,115.5 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:116.4,116.14 1 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:119.3,119.17 1 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:119.17,121.4 1 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:123.3,123.27 1 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:127.45,137.2 2 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:141.72,154.2 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:158.75,171.2 2 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:173.43,176.16 2 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:176.16,179.3 2 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:181.2,182.16 2 1 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:182.16,185.3 2 0 +github.com/echovault/sugardb/internal/memberlist/memberlist.go:187.2,187.49 1 1 +github.com/echovault/sugardb/internal/raft/fsm.go:48.36,52.2 1 1 +github.com/echovault/sugardb/internal/raft/fsm.go:55.50,56.18 1 1 +github.com/echovault/sugardb/internal/raft/fsm.go:57.10,57.10 0 0 +github.com/echovault/sugardb/internal/raft/fsm.go:59.23,62.60 2 1 +github.com/echovault/sugardb/internal/raft/fsm.go:62.60,67.4 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:69.3,74.40 5 1 +github.com/echovault/sugardb/internal/raft/fsm.go:75.11,79.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:81.21,82.66 1 1 +github.com/echovault/sugardb/internal/raft/fsm.go:82.66,87.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:88.4,91.5 1 1 +github.com/echovault/sugardb/internal/raft/fsm.go:93.18,96.18 2 1 +github.com/echovault/sugardb/internal/raft/fsm.go:96.18,101.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:103.4,106.18 3 1 +github.com/echovault/sugardb/internal/raft/fsm.go:106.18,111.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:112.4,113.10 2 1 +github.com/echovault/sugardb/internal/raft/fsm.go:113.10,115.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:117.4,117.96 1 1 +github.com/echovault/sugardb/internal/raft/fsm.go:117.96,122.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:122.10,127.5 1 1 +github.com/echovault/sugardb/internal/raft/fsm.go:131.2,131.12 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:135.54,143.2 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:146.55,149.16 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:149.16,152.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:154.2,159.48 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:159.48,162.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:165.2,165.81 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:165.81,167.34 2 0 +github.com/echovault/sugardb/internal/raft/fsm.go:167.34,168.96 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:168.96,170.5 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:171.4,171.60 1 0 +github.com/echovault/sugardb/internal/raft/fsm.go:176.2,178.12 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 +github.com/echovault/sugardb/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:52.31,56.2 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:58.46,70.24 9 1 +github.com/echovault/sugardb/internal/raft/raft.go:70.24,75.3 3 1 +github.com/echovault/sugardb/internal/raft/raft.go:75.8,77.17 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:77.17,79.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:81.3,82.17 2 0 +github.com/echovault/sugardb/internal/raft/raft.go:82.17,84.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:86.3,89.17 3 0 +github.com/echovault/sugardb/internal/raft/raft.go:89.17,91.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:94.2,96.16 3 1 +github.com/echovault/sugardb/internal/raft/raft.go:96.16,98.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:100.2,108.16 2 1 +github.com/echovault/sugardb/internal/raft/raft.go:108.16,110.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:113.2,133.16 2 1 +github.com/echovault/sugardb/internal/raft/raft.go:133.16,135.3 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:137.2,137.27 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:137.27,148.3 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:150.2,150.21 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:153.74,155.2 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:157.36,159.2 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:161.38,163.2 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:165.40,172.2 4 1 +github.com/echovault/sugardb/internal/raft/raft.go:179.9,180.22 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:180.22,182.44 2 1 +github.com/echovault/sugardb/internal/raft/raft.go:182.44,184.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:186.3,186.56 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:186.56,188.42 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:188.42,190.5 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:193.3,194.17 2 1 +github.com/echovault/sugardb/internal/raft/raft.go:194.17,196.4 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:199.2,199.12 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:202.61,203.23 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:203.23,205.3 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:207.2,207.73 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:207.73,209.3 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:211.2,211.12 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:214.37,216.2 1 0 +github.com/echovault/sugardb/internal/raft/raft.go:218.31,220.22 1 1 +github.com/echovault/sugardb/internal/raft/raft.go:220.22,222.17 2 1 +github.com/echovault/sugardb/internal/raft/raft.go:222.17,225.4 2 1 +github.com/echovault/sugardb/internal/raft/raft.go:226.3,226.49 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:126.69,128.23 2 1 +github.com/echovault/sugardb/sugardb/api_acl.go:128.23,130.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:131.2,132.16 2 1 +github.com/echovault/sugardb/sugardb/api_acl.go:132.16,134.3 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:135.2,135.45 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:139.53,141.16 2 1 +github.com/echovault/sugardb/sugardb/api_acl.go:141.16,143.3 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:144.2,144.45 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:155.60,158.18 2 1 +github.com/echovault/sugardb/sugardb/api_acl.go:158.18,160.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:160.8,162.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:164.2,164.21 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:164.21,166.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:168.2,168.17 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:168.17,170.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:172.2,172.21 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:172.21,174.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:176.2,176.20 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:176.20,178.3 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:180.2,180.20 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:180.20,182.3 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:184.2,184.24 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:184.24,186.3 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:188.2,188.50 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:188.50,190.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:192.2,192.53 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:192.53,194.3 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:196.2,196.49 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:196.49,198.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:200.2,200.52 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:200.52,202.3 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:204.2,204.50 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:204.50,206.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:208.2,208.50 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:208.50,210.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:212.2,212.47 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:212.47,214.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:216.2,216.47 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:216.47,218.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:220.2,220.48 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:220.48,222.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:224.2,224.43 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:224.43,226.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:228.2,228.44 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:228.44,230.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:232.2,232.47 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:232.47,234.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:236.2,236.47 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:236.47,238.3 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:240.2,241.16 2 1 +github.com/echovault/sugardb/sugardb/api_acl.go:241.16,243.3 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:245.2,246.40 2 1 +github.com/echovault/sugardb/sugardb/api_acl.go:293.81,295.16 2 1 +github.com/echovault/sugardb/sugardb/api_acl.go:295.16,297.3 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:299.2,301.16 3 1 +github.com/echovault/sugardb/sugardb/api_acl.go:301.16,303.3 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:305.2,309.35 3 1 +github.com/echovault/sugardb/sugardb/api_acl.go:309.35,315.35 4 1 +github.com/echovault/sugardb/sugardb/api_acl.go:315.35,317.4 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:320.2,320.20 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:330.70,333.16 3 1 +github.com/echovault/sugardb/sugardb/api_acl.go:333.16,335.3 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:336.2,337.40 2 1 +github.com/echovault/sugardb/sugardb/api_acl.go:341.52,343.16 2 1 +github.com/echovault/sugardb/sugardb/api_acl.go:343.16,345.3 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:346.2,346.45 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:357.70,359.9 2 1 +github.com/echovault/sugardb/sugardb/api_acl.go:360.21,361.29 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:362.23,363.31 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:364.10,365.31 1 1 +github.com/echovault/sugardb/sugardb/api_acl.go:368.2,369.16 2 1 +github.com/echovault/sugardb/sugardb/api_acl.go:369.16,371.3 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:373.2,374.40 2 1 +github.com/echovault/sugardb/sugardb/api_acl.go:380.48,382.16 2 1 +github.com/echovault/sugardb/sugardb/api_acl.go:382.16,384.3 1 0 +github.com/echovault/sugardb/sugardb/api_acl.go:385.2,386.40 2 1 +github.com/echovault/sugardb/sugardb/api_admin.go:142.85,145.22 2 1 +github.com/echovault/sugardb/sugardb/api_admin.go:145.22,146.10 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:147.32,148.75 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:149.33,150.77 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:151.32,152.75 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:156.2,157.16 2 1 +github.com/echovault/sugardb/sugardb/api_admin.go:157.16,159.3 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:161.2,161.45 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:167.52,169.16 2 1 +github.com/echovault/sugardb/sugardb/api_admin.go:169.16,171.3 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:172.2,172.41 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:179.45,181.16 2 1 +github.com/echovault/sugardb/sugardb/api_admin.go:181.16,183.3 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:184.2,185.42 2 1 +github.com/echovault/sugardb/sugardb/api_admin.go:189.48,191.16 2 1 +github.com/echovault/sugardb/sugardb/api_admin.go:191.16,193.3 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:194.2,194.41 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:198.53,200.16 2 1 +github.com/echovault/sugardb/sugardb/api_admin.go:200.16,202.3 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:203.2,203.40 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:215.65,219.36 3 1 +github.com/echovault/sugardb/sugardb/api_admin.go:219.36,220.52 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:220.52,222.4 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:225.2,225.63 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:225.63,230.32 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:230.32,233.44 2 1 +github.com/echovault/sugardb/sugardb/api_admin.go:233.44,235.6 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:236.5,236.16 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:240.111,242.19 2 0 +github.com/echovault/sugardb/sugardb/api_admin.go:242.19,244.6 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:245.5,249.11 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:251.94,259.5 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:261.3,261.13 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:265.2,268.31 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:268.31,271.43 2 1 +github.com/echovault/sugardb/sugardb/api_admin.go:271.43,273.5 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:274.4,274.15 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:278.83,280.4 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:281.71,281.90 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:285.2,285.40 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:285.40,287.92 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:287.92,289.4 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:289.6,290.12 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:292.3,295.32 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:295.32,298.39 2 1 +github.com/echovault/sugardb/sugardb/api_admin.go:298.39,300.6 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:301.5,301.16 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:305.111,307.19 2 0 +github.com/echovault/sugardb/sugardb/api_admin.go:307.19,309.6 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:310.5,314.11 1 0 +github.com/echovault/sugardb/sugardb/api_admin.go:316.94,324.5 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:328.2,330.12 2 1 +github.com/echovault/sugardb/sugardb/api_admin.go:356.74,358.2 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:374.57,378.22 3 1 +github.com/echovault/sugardb/sugardb/api_admin.go:379.9,381.86 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:381.86,383.4 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:384.9,386.45 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:386.45,387.66 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:387.66,388.13 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:390.4,390.88 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:390.88,391.122 1 1 +github.com/echovault/sugardb/sugardb/api_admin.go:391.122,393.6 1 1 +github.com/echovault/sugardb/sugardb/api_connection.go:32.56,33.45 1 1 +github.com/echovault/sugardb/sugardb/api_connection.go:33.45,35.3 1 1 +github.com/echovault/sugardb/sugardb/api_connection.go:36.2,39.12 4 1 +github.com/echovault/sugardb/sugardb/api_connection.go:53.53,54.18 1 1 +github.com/echovault/sugardb/sugardb/api_connection.go:54.18,56.3 1 1 +github.com/echovault/sugardb/sugardb/api_connection.go:58.2,59.35 2 1 +github.com/echovault/sugardb/sugardb/api_connection.go:59.35,61.3 1 1 +github.com/echovault/sugardb/sugardb/api_connection.go:62.2,69.12 5 1 +github.com/echovault/sugardb/sugardb/api_generic.go:42.50,42.62 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:67.41,67.53 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:112.32,112.44 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:140.41,140.53 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:167.89,170.29 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:170.29,172.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:174.2,174.30 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:174.30,176.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:178.2,178.17 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:178.17,180.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:182.2,183.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:183.16,185.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:187.2,188.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:188.16,190.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:191.2,191.18 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:191.18,193.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:195.2,195.33 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:210.70,213.28 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:213.28,215.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:217.2,218.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:218.16,220.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:222.2,223.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:223.16,225.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:227.2,227.40 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:238.56,240.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:240.16,242.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:243.2,243.40 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:254.63,256.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:256.16,258.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:259.2,259.45 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:269.57,271.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:271.16,273.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:274.2,274.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:285.58,287.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:287.16,289.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:290.2,290.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:300.60,302.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:302.16,304.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:305.2,305.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:315.61,317.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:317.16,319.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:320.2,320.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:330.53,332.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:332.16,334.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:335.2,335.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:345.54,347.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:347.16,349.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:350.2,350.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:365.96,368.30 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:368.30,369.17 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:369.17,371.4 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:374.2,375.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:375.16,377.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:379.2,379.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:394.102,397.30 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:397.30,398.17 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:398.17,400.4 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:403.2,404.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:404.16,406.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:408.2,408.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:423.101,426.30 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:426.30,427.17 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:427.17,429.4 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:432.2,433.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:433.16,435.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:437.2,437.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:452.107,455.30 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:455.30,456.17 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:456.17,458.4 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:461.2,462.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:462.16,464.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:466.2,466.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:477.54,483.16 3 1 +github.com/echovault/sugardb/sugardb/api_generic.go:483.16,485.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:488.2,488.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:499.54,505.16 3 1 +github.com/echovault/sugardb/sugardb/api_generic.go:505.16,507.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:510.2,510.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:524.70,529.16 3 1 +github.com/echovault/sugardb/sugardb/api_generic.go:529.16,531.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:533.2,533.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:547.79,552.16 3 1 +github.com/echovault/sugardb/sugardb/api_generic.go:552.16,554.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:556.2,556.39 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:570.70,575.16 3 1 +github.com/echovault/sugardb/sugardb/api_generic.go:575.16,577.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:579.2,579.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:592.77,597.16 3 1 +github.com/echovault/sugardb/sugardb/api_generic.go:597.16,599.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:601.2,601.40 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:613.79,618.16 3 1 +github.com/echovault/sugardb/sugardb/api_generic.go:618.16,620.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:622.2,622.40 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:627.52,629.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:629.16,631.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:632.2,632.40 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:637.46,639.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:639.16,641.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:642.2,642.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:653.59,655.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:655.16,657.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:658.2,658.40 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:672.92,679.19 4 1 +github.com/echovault/sugardb/sugardb/api_generic.go:679.19,682.3 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:684.2,684.19 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:684.19,686.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:688.2,689.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:689.16,691.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:692.2,692.40 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:703.59,706.25 3 1 +github.com/echovault/sugardb/sugardb/api_generic.go:706.25,708.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:710.2,711.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:711.16,713.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:714.2,714.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:725.60,727.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:727.16,729.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:730.2,730.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:741.68,743.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:743.16,745.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:746.2,746.39 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:757.57,759.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:759.16,761.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:762.2,762.40 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:774.97,777.28 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:777.28,779.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:781.2,781.21 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:781.21,783.3 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:785.2,786.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:786.16,788.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:789.2,789.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:802.73,804.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:804.16,806.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:807.2,807.41 1 1 +github.com/echovault/sugardb/sugardb/api_generic.go:818.60,820.16 2 1 +github.com/echovault/sugardb/sugardb/api_generic.go:820.16,822.3 1 0 +github.com/echovault/sugardb/sugardb/api_generic.go:823.2,823.41 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:48.89,51.36 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:51.36,53.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:55.2,56.16 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:56.16,58.3 1 0 +github.com/echovault/sugardb/sugardb/api_hash.go:60.2,60.41 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:78.91,81.36 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:81.36,83.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:85.2,86.16 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:86.16,88.3 1 0 +github.com/echovault/sugardb/sugardb/api_hash.go:90.2,90.41 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:106.77,114.16 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:114.16,116.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:117.2,117.45 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:133.78,141.16 2 0 +github.com/echovault/sugardb/sugardb/api_hash.go:141.16,143.3 1 0 +github.com/echovault/sugardb/sugardb/api_hash.go:145.2,145.45 1 0 +github.com/echovault/sugardb/sugardb/api_hash.go:162.77,166.16 3 1 +github.com/echovault/sugardb/sugardb/api_hash.go:166.16,168.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:170.2,170.46 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:184.60,186.16 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:186.16,188.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:189.2,189.45 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:205.92,208.24 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:208.24,210.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:210.8,212.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:214.2,214.24 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:214.24,216.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:218.2,219.16 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:219.16,221.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:223.2,223.45 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:237.54,239.16 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:239.16,241.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:242.2,242.41 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:256.60,258.16 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:258.16,260.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:261.2,261.45 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:280.83,282.16 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:282.16,284.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:285.2,285.39 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:289.92,291.16 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:291.16,293.3 1 0 +github.com/echovault/sugardb/sugardb/api_hash.go:294.2,294.39 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:309.62,311.16 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:311.16,313.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:314.2,314.45 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:330.65,332.16 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:332.16,334.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:335.2,335.41 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:351.72,354.16 3 1 +github.com/echovault/sugardb/sugardb/api_hash.go:354.16,356.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:357.2,357.41 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:381.111,384.18 3 1 +github.com/echovault/sugardb/sugardb/api_hash.go:384.18,387.3 2 1 +github.com/echovault/sugardb/sugardb/api_hash.go:389.2,394.16 5 1 +github.com/echovault/sugardb/sugardb/api_hash.go:394.16,396.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:397.2,397.46 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:416.74,421.16 4 1 +github.com/echovault/sugardb/sugardb/api_hash.go:421.16,423.3 1 1 +github.com/echovault/sugardb/sugardb/api_hash.go:424.2,424.46 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:34.54,36.16 2 1 +github.com/echovault/sugardb/sugardb/api_list.go:36.16,38.3 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:39.2,39.41 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:58.77,60.16 2 1 +github.com/echovault/sugardb/sugardb/api_list.go:60.16,62.3 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:63.2,63.45 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:79.71,81.16 2 1 +github.com/echovault/sugardb/sugardb/api_list.go:81.16,83.3 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:84.2,84.40 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:104.80,106.16 2 1 +github.com/echovault/sugardb/sugardb/api_list.go:106.16,108.3 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:109.2,110.40 2 1 +github.com/echovault/sugardb/sugardb/api_list.go:117.76,119.16 2 1 +github.com/echovault/sugardb/sugardb/api_list.go:119.16,121.3 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:122.2,123.40 2 1 +github.com/echovault/sugardb/sugardb/api_list.go:141.79,148.16 2 1 +github.com/echovault/sugardb/sugardb/api_list.go:148.16,150.3 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:151.2,151.41 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:175.92,177.16 2 1 +github.com/echovault/sugardb/sugardb/api_list.go:177.16,179.3 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:180.2,181.40 2 1 +github.com/echovault/sugardb/sugardb/api_list.go:195.71,203.16 2 1 +github.com/echovault/sugardb/sugardb/api_list.go:203.16,205.3 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:206.2,206.45 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:220.71,228.16 2 1 +github.com/echovault/sugardb/sugardb/api_list.go:228.16,230.3 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:231.2,231.45 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:248.73,251.16 3 1 +github.com/echovault/sugardb/sugardb/api_list.go:251.16,253.3 1 0 +github.com/echovault/sugardb/sugardb/api_list.go:254.2,254.41 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:270.74,273.16 3 1 +github.com/echovault/sugardb/sugardb/api_list.go:273.16,275.3 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:276.2,276.41 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:293.73,296.16 3 1 +github.com/echovault/sugardb/sugardb/api_list.go:296.16,298.3 1 0 +github.com/echovault/sugardb/sugardb/api_list.go:299.2,299.41 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:315.74,318.16 3 1 +github.com/echovault/sugardb/sugardb/api_list.go:318.16,320.3 1 1 +github.com/echovault/sugardb/sugardb/api_list.go:321.2,321.41 1 0 +github.com/echovault/sugardb/sugardb/api_pubsub.go:42.69,46.41 3 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:46.41,55.3 4 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:55.8,58.10 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:58.10,60.4 1 0 +github.com/echovault/sugardb/sugardb/api_pubsub.go:61.3,62.33 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:65.2,65.33 1 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:78.93,80.16 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:80.16,81.26 1 0 +github.com/echovault/sugardb/sugardb/api_pubsub.go:81.26,83.4 1 0 +github.com/echovault/sugardb/sugardb/api_pubsub.go:87.2,88.12 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:88.12,90.3 1 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:92.2,92.25 1 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:92.25,97.33 4 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:97.33,99.4 1 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:101.3,101.13 1 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:112.68,114.9 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:114.9,116.3 1 0 +github.com/echovault/sugardb/sugardb/api_pubsub.go:117.2,118.107 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:131.94,133.16 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:133.16,134.26 1 0 +github.com/echovault/sugardb/sugardb/api_pubsub.go:134.26,136.4 1 0 +github.com/echovault/sugardb/sugardb/api_pubsub.go:140.2,141.12 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:141.12,143.3 1 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:145.2,145.25 1 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:145.25,150.33 4 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:150.33,152.4 1 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:154.3,154.13 1 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:165.69,167.9 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:167.9,169.3 1 0 +github.com/echovault/sugardb/sugardb/api_pubsub.go:170.2,171.107 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:184.71,186.16 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:186.16,188.3 1 0 +github.com/echovault/sugardb/sugardb/api_pubsub.go:189.2,190.40 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:200.73,202.19 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:202.19,204.3 1 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:205.2,206.16 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:206.16,208.3 1 0 +github.com/echovault/sugardb/sugardb/api_pubsub.go:209.2,209.45 1 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:215.52,217.16 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:217.16,219.3 1 0 +github.com/echovault/sugardb/sugardb/api_pubsub.go:220.2,220.41 1 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:230.81,234.16 3 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:234.16,236.3 1 0 +github.com/echovault/sugardb/sugardb/api_pubsub.go:238.2,240.16 3 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:240.16,242.3 1 0 +github.com/echovault/sugardb/sugardb/api_pubsub.go:244.2,247.28 3 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:247.28,250.3 2 1 +github.com/echovault/sugardb/sugardb/api_pubsub.go:252.2,252.20 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:36.73,39.16 3 1 +github.com/echovault/sugardb/sugardb/api_set.go:39.16,41.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:42.2,42.41 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:56.55,58.16 2 1 +github.com/echovault/sugardb/sugardb/api_set.go:58.16,60.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:61.2,61.41 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:78.64,81.16 3 1 +github.com/echovault/sugardb/sugardb/api_set.go:81.16,83.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:84.2,84.45 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:91.84,94.16 3 1 +github.com/echovault/sugardb/sugardb/api_set.go:94.16,96.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:97.2,97.41 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:114.65,117.16 3 1 +github.com/echovault/sugardb/sugardb/api_set.go:117.16,119.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:120.2,120.45 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:138.75,140.15 2 1 +github.com/echovault/sugardb/sugardb/api_set.go:140.15,142.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:143.2,144.16 2 1 +github.com/echovault/sugardb/sugardb/api_set.go:144.16,146.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:147.2,147.41 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:152.85,155.16 3 1 +github.com/echovault/sugardb/sugardb/api_set.go:155.16,157.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:158.2,158.41 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:174.68,176.16 2 1 +github.com/echovault/sugardb/sugardb/api_set.go:176.16,178.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:179.2,179.41 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:193.63,195.16 2 1 +github.com/echovault/sugardb/sugardb/api_set.go:195.16,197.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:198.2,198.45 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:215.82,218.16 3 1 +github.com/echovault/sugardb/sugardb/api_set.go:218.16,220.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:221.2,221.46 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:243.80,245.16 2 1 +github.com/echovault/sugardb/sugardb/api_set.go:245.16,247.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:248.2,248.41 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:264.71,266.16 2 1 +github.com/echovault/sugardb/sugardb/api_set.go:266.16,268.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:269.2,269.45 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:286.77,288.16 2 1 +github.com/echovault/sugardb/sugardb/api_set.go:288.16,290.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:291.2,291.45 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:307.73,310.16 3 1 +github.com/echovault/sugardb/sugardb/api_set.go:310.16,312.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:313.2,313.41 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:328.65,331.16 3 1 +github.com/echovault/sugardb/sugardb/api_set.go:331.16,333.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:334.2,334.45 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:341.85,344.16 3 1 +github.com/echovault/sugardb/sugardb/api_set.go:344.16,346.3 1 1 +github.com/echovault/sugardb/sugardb/api_set.go:347.2,347.41 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:105.87,107.28 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:107.28,108.17 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:108.17,110.18 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:110.18,112.5 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:113.4,114.12 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:116.3,116.23 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:118.2,118.20 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:142.103,145.9 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:146.18,147.26 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:148.18,149.26 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:152.2,152.9 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:153.18,154.26 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:155.18,156.26 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:159.2,159.16 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:159.16,161.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:163.2,163.18 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:163.18,165.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:167.2,167.37 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:167.37,169.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:171.2,172.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:172.16,174.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:176.2,176.41 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:190.55,192.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:192.16,194.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:195.2,195.41 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:213.74,221.16 3 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:221.16,223.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:224.2,224.41 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:242.91,244.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:244.16,246.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:247.2,248.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:248.16,250.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:252.2,253.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:253.16,255.3 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:257.2,257.45 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:274.84,277.16 3 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:277.16,279.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:280.2,280.41 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:297.97,300.30 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:300.30,302.45 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:302.45,304.4 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:307.2,307.29 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:307.29,309.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:311.2,311.24 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:311.24,313.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:315.2,316.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:316.16,318.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:320.2,321.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:321.16,323.3 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:325.2,325.53 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:344.112,347.30 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:347.30,349.42 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:349.42,351.4 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:354.2,354.29 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:354.29,356.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:358.2,358.24 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:358.24,360.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:362.2,363.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:363.16,365.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:367.2,367.41 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:384.97,387.30 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:387.30,389.42 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:389.42,391.4 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:394.2,394.29 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:394.29,396.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:398.2,398.24 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:398.24,400.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:402.2,403.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:403.16,405.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:407.2,408.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:408.16,410.3 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:412.2,412.53 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:431.112,434.30 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:434.30,436.42 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:436.42,438.4 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:441.2,441.29 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:441.29,443.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:445.2,445.24 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:445.24,447.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:449.2,450.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:450.16,452.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:454.2,454.41 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:473.95,476.16 3 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:476.16,478.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:479.2,480.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:480.16,482.3 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:483.2,483.15 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:500.87,503.9 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:504.19,505.27 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:506.19,507.27 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:508.10,509.27 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:512.2,512.9 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:513.26,514.76 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:515.10,516.59 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:519.2,520.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:520.16,522.3 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:524.2,524.51 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:542.86,544.33 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:544.33,546.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:548.2,549.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:549.16,551.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:553.2,554.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:554.16,556.3 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:558.2,559.24 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:559.24,560.14 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:560.14,562.12 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:564.3,565.17 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:565.17,567.4 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:568.3,568.20 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:571.2,571.20 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:591.69,594.16 3 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:594.16,596.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:597.2,597.41 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:616.76,618.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:618.16,620.3 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:621.2,621.51 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:640.76,642.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:642.16,644.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:645.2,645.51 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:669.96,671.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:671.16,673.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:674.2,674.16 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:674.16,676.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:678.2,679.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:679.16,681.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:683.2,683.51 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:704.99,706.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:706.16,708.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:710.2,711.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:711.16,713.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:715.2,717.19 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:717.19,719.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:721.2,722.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:722.16,724.3 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:726.2,728.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:728.16,730.17 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:730.17,732.4 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:733.3,733.13 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:736.2,736.17 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:741.102,743.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:743.16,745.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:747.2,748.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:748.16,750.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:752.2,754.19 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:754.19,756.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:758.2,759.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:759.16,761.3 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:763.2,765.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:765.16,767.17 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:767.17,769.4 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:770.3,770.13 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:773.2,773.17 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:790.79,793.16 3 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:793.16,795.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:797.2,798.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:798.16,800.3 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:802.2,802.11 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:802.11,804.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:806.2,807.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:807.16,809.3 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:811.2,811.19 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:827.73,829.33 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:829.33,831.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:832.2,833.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:833.16,835.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:836.2,836.41 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:854.92,863.16 3 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:863.16,865.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:867.2,867.41 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:885.74,892.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:892.16,894.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:895.2,895.41 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:913.79,920.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:920.16,922.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:923.2,923.41 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:943.107,946.9 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:947.23,948.31 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:949.21,950.29 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:951.19,952.27 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:953.10,954.31 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:957.2,957.24 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:957.24,959.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:961.2,961.47 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:961.47,963.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:965.2,966.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:966.16,968.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:970.2,971.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:971.16,973.3 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:975.2,975.53 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:997.118,1000.9 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:1001.23,1002.31 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:1003.21,1004.29 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:1005.19,1006.27 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:1007.10,1008.31 1 0 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:1011.2,1011.47 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:1011.47,1013.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:1015.2,1016.16 2 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:1016.16,1018.3 1 1 +github.com/echovault/sugardb/sugardb/api_sorted_set.go:1020.2,1020.41 1 1 +github.com/echovault/sugardb/sugardb/api_string.go:31.82,33.16 2 1 +github.com/echovault/sugardb/sugardb/api_string.go:33.16,35.3 1 0 +github.com/echovault/sugardb/sugardb/api_string.go:36.2,36.41 1 1 +github.com/echovault/sugardb/sugardb/api_string.go:46.56,48.16 2 1 +github.com/echovault/sugardb/sugardb/api_string.go:48.16,50.3 1 0 +github.com/echovault/sugardb/sugardb/api_string.go:51.2,51.41 1 1 +github.com/echovault/sugardb/sugardb/api_string.go:64.75,66.16 2 1 +github.com/echovault/sugardb/sugardb/api_string.go:66.16,68.3 1 0 +github.com/echovault/sugardb/sugardb/api_string.go:69.2,69.40 1 1 +github.com/echovault/sugardb/sugardb/api_string.go:73.77,75.16 2 1 +github.com/echovault/sugardb/sugardb/api_string.go:75.16,77.3 1 0 +github.com/echovault/sugardb/sugardb/api_string.go:78.2,78.40 1 1 +github.com/echovault/sugardb/sugardb/api_string.go:89.70,91.16 2 1 +github.com/echovault/sugardb/sugardb/api_string.go:91.16,93.3 1 1 +github.com/echovault/sugardb/sugardb/api_string.go:94.2,94.41 1 1 +github.com/echovault/sugardb/sugardb/cluster.go:25.43,27.2 1 1 +github.com/echovault/sugardb/sugardb/cluster.go:29.82,44.16 6 1 +github.com/echovault/sugardb/sugardb/cluster.go:44.16,46.3 1 0 +github.com/echovault/sugardb/sugardb/cluster.go:48.2,50.43 2 1 +github.com/echovault/sugardb/sugardb/cluster.go:50.43,52.3 1 0 +github.com/echovault/sugardb/sugardb/cluster.go:54.2,56.9 2 1 +github.com/echovault/sugardb/sugardb/cluster.go:56.9,58.3 1 0 +github.com/echovault/sugardb/sugardb/cluster.go:60.2,60.20 1 1 +github.com/echovault/sugardb/sugardb/cluster.go:60.20,62.3 1 0 +github.com/echovault/sugardb/sugardb/cluster.go:64.2,64.12 1 1 +github.com/echovault/sugardb/sugardb/cluster.go:67.92,83.16 7 1 +github.com/echovault/sugardb/sugardb/cluster.go:83.16,85.3 1 0 +github.com/echovault/sugardb/sugardb/cluster.go:87.2,89.43 2 1 +github.com/echovault/sugardb/sugardb/cluster.go:89.43,91.3 1 0 +github.com/echovault/sugardb/sugardb/cluster.go:93.2,95.9 2 1 +github.com/echovault/sugardb/sugardb/cluster.go:95.9,97.3 1 0 +github.com/echovault/sugardb/sugardb/cluster.go:99.2,99.20 1 1 +github.com/echovault/sugardb/sugardb/cluster.go:99.20,101.3 1 0 +github.com/echovault/sugardb/sugardb/cluster.go:103.2,103.24 1 1 +github.com/echovault/sugardb/sugardb/config.go:27.36,29.2 1 1 +github.com/echovault/sugardb/sugardb/config.go:31.60,36.23 1 1 +github.com/echovault/sugardb/sugardb/config.go:36.23,37.28 1 1 +github.com/echovault/sugardb/sugardb/config.go:37.28,39.5 1 1 +github.com/echovault/sugardb/sugardb/config.go:40.4,40.23 1 1 +github.com/echovault/sugardb/sugardb/config.go:42.23,43.29 1 1 +github.com/echovault/sugardb/sugardb/config.go:43.29,45.5 1 1 +github.com/echovault/sugardb/sugardb/config.go:46.4,46.34 1 1 +github.com/echovault/sugardb/sugardb/config.go:46.34,48.5 1 1 +github.com/echovault/sugardb/sugardb/config.go:49.4,49.20 1 1 +github.com/echovault/sugardb/sugardb/config.go:60.48,61.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:61.32,62.17 1 0 +github.com/echovault/sugardb/sugardb/config.go:62.17,64.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:64.9,66.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:73.62,74.32 1 1 +github.com/echovault/sugardb/sugardb/config.go:74.32,76.3 1 1 +github.com/echovault/sugardb/sugardb/config.go:82.62,83.32 1 1 +github.com/echovault/sugardb/sugardb/config.go:83.32,85.3 1 1 +github.com/echovault/sugardb/sugardb/config.go:91.49,92.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:92.32,93.17 1 0 +github.com/echovault/sugardb/sugardb/config.go:93.17,95.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:95.9,97.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:110.74,111.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:111.32,112.37 1 0 +github.com/echovault/sugardb/sugardb/config.go:112.37,114.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:121.63,122.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:122.32,124.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:130.51,131.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:131.32,133.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:139.59,140.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:140.32,142.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:148.59,149.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:149.32,151.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:157.59,158.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:158.32,160.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:166.57,167.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:167.32,169.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:175.61,176.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:176.32,177.17 1 0 +github.com/echovault/sugardb/sugardb/config.go:177.17,179.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:179.9,181.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:188.61,189.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:189.32,191.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:197.59,198.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:198.32,199.17 1 0 +github.com/echovault/sugardb/sugardb/config.go:199.17,201.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:201.9,203.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:210.56,211.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:211.32,212.17 1 0 +github.com/echovault/sugardb/sugardb/config.go:212.17,214.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:214.9,216.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:223.59,224.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:224.32,226.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:232.77,233.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:233.32,235.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:241.82,242.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:242.32,244.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:250.60,251.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:251.32,252.17 1 0 +github.com/echovault/sugardb/sugardb/config.go:252.17,254.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:254.9,256.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:263.55,264.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:264.32,265.17 1 0 +github.com/echovault/sugardb/sugardb/config.go:265.17,267.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:267.9,269.4 1 0 +github.com/echovault/sugardb/sugardb/config.go:276.73,277.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:277.32,279.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:285.61,286.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:286.32,288.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:294.71,295.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:295.32,297.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:303.69,304.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:304.32,306.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:312.82,313.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:313.32,315.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:321.59,322.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:322.32,324.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:330.69,331.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:331.32,333.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:339.67,340.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:340.32,342.3 1 0 +github.com/echovault/sugardb/sugardb/config.go:348.67,349.32 1 0 +github.com/echovault/sugardb/sugardb/config.go:349.32,351.3 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:42.58,44.28 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:44.28,46.3 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:49.2,50.55 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:50.55,51.36 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:51.36,53.4 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:55.2,60.59 4 0 +github.com/echovault/sugardb/sugardb/keyspace.go:60.59,61.24 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:62.18,68.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:69.18,75.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:82.44,89.20 5 0 +github.com/echovault/sugardb/sugardb/keyspace.go:89.20,90.35 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:90.35,103.4 8 0 +github.com/echovault/sugardb/sugardb/keyspace.go:104.3,104.9 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:108.2,118.48 8 0 +github.com/echovault/sugardb/sugardb/keyspace.go:121.86,129.27 5 1 +github.com/echovault/sugardb/sugardb/keyspace.go:129.27,132.3 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:134.2,134.15 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:137.77,144.9 5 1 +github.com/echovault/sugardb/sugardb/keyspace.go:144.9,146.3 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:148.2,148.23 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:151.95,158.9 5 0 +github.com/echovault/sugardb/sugardb/keyspace.go:158.9,160.3 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:162.2,164.29 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:167.93,175.27 5 1 +github.com/echovault/sugardb/sugardb/keyspace.go:175.27,177.10 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:177.10,179.12 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:182.3,182.83 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:182.83,183.29 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:183.29,186.19 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:186.19,188.6 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:189.10,189.65 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:189.65,192.19 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:192.19,194.6 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:195.10,195.66 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:195.66,200.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:201.4,202.12 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:205.3,205.28 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:209.2,209.46 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:209.46,210.64 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:210.64,212.4 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:215.2,215.15 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:218.93,222.131 3 1 +github.com/echovault/sugardb/sugardb/keyspace.go:222.131,225.3 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:227.2,230.35 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:230.35,232.3 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:234.2,234.34 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:234.34,236.47 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:236.47,238.4 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:239.3,245.17 4 1 +github.com/echovault/sugardb/sugardb/keyspace.go:245.17,247.4 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:248.3,252.28 4 1 +github.com/echovault/sugardb/sugardb/keyspace.go:252.28,254.4 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:258.2,258.63 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:258.63,259.31 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:259.31,261.18 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:261.18,263.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:267.2,267.12 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:270.99,283.65 6 1 +github.com/echovault/sugardb/sugardb/keyspace.go:283.65,285.3 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:286.2,289.11 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:289.11,290.44 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:290.44,292.18 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:292.18,294.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:299.111,306.9 5 1 +github.com/echovault/sugardb/sugardb/keyspace.go:306.9,308.3 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:309.2,315.65 3 1 +github.com/echovault/sugardb/sugardb/keyspace.go:315.65,317.3 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:318.2,320.12 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:323.73,329.16 4 1 +github.com/echovault/sugardb/sugardb/keyspace.go:329.16,331.3 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:332.2,342.117 7 1 +github.com/echovault/sugardb/sugardb/keyspace.go:342.117,344.3 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:347.2,347.9 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:348.108,349.46 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:350.108,351.46 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:354.2,356.12 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:359.53,377.2 10 1 +github.com/echovault/sugardb/sugardb/keyspace.go:379.66,381.6 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:381.6,382.83 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:382.83,384.9 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:387.2,388.38 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:388.38,390.27 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:390.27,392.4 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:394.2,395.13 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:400.93,405.83 3 1 +github.com/echovault/sugardb/sugardb/keyspace.go:405.83,407.3 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:409.2,409.34 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:409.34,411.3 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:413.2,416.27 3 1 +github.com/echovault/sugardb/sugardb/keyspace.go:416.27,418.48 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:418.48,419.12 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:422.3,424.56 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:425.29,428.50 3 1 +github.com/echovault/sugardb/sugardb/keyspace.go:429.29,432.50 3 1 +github.com/echovault/sugardb/sugardb/keyspace.go:433.30,435.61 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:435.61,437.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:438.4,438.50 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:439.30,441.61 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:441.61,443.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:444.4,444.50 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:448.2,452.34 4 1 +github.com/echovault/sugardb/sugardb/keyspace.go:452.34,455.87 3 1 +github.com/echovault/sugardb/sugardb/keyspace.go:455.87,456.56 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:456.56,458.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:459.4,459.13 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:463.2,463.12 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:463.12,466.3 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:468.2,468.9 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:469.24,470.71 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:471.18,471.18 0 1 +github.com/echovault/sugardb/sugardb/keyspace.go:474.2,474.26 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:478.69,480.34 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:480.34,482.3 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:484.2,489.54 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:489.54,491.3 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:493.2,494.54 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:494.54,496.3 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:502.2,503.9 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:504.125,509.7 3 0 +github.com/echovault/sugardb/sugardb/keyspace.go:509.7,511.50 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:511.50,513.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:515.4,516.29 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:516.29,518.54 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:518.54,522.6 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:523.10,523.65 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:523.65,525.63 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:525.63,528.6 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:531.4,533.56 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:533.56,535.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:537.125,542.7 3 0 +github.com/echovault/sugardb/sugardb/keyspace.go:542.7,544.50 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:544.50,546.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:548.4,549.29 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:549.29,551.54 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:551.54,554.6 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:555.10,555.65 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:555.65,558.63 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:558.63,560.6 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:564.4,566.56 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:566.56,568.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:570.105,573.7 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:573.7,575.30 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:575.30,578.5 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:580.4,581.39 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:581.39,582.23 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:582.23,583.31 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:583.31,584.19 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:584.19,585.33 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:585.33,587.58 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:587.58,591.10 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:592.14,592.69 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:592.69,593.67 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:593.67,596.10 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:599.8,601.60 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:601.60,603.9 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:605.7,605.12 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:610.106,613.7 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:613.7,620.29 5 0 +github.com/echovault/sugardb/sugardb/keyspace.go:620.29,622.54 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:622.54,626.6 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:627.10,627.65 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:627.65,628.63 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:628.63,631.6 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:635.4,637.56 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:637.56,639.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:641.10,642.13 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:651.75,653.57 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:653.57,655.3 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:657.2,664.60 4 0 +github.com/echovault/sugardb/sugardb/keyspace.go:664.60,666.3 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:667.2,674.33 6 0 +github.com/echovault/sugardb/sugardb/keyspace.go:674.33,675.7 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:675.7,679.35 3 0 +github.com/echovault/sugardb/sugardb/keyspace.go:679.35,681.10 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:685.2,690.25 4 0 +github.com/echovault/sugardb/sugardb/keyspace.go:690.25,695.30 3 0 +github.com/echovault/sugardb/sugardb/keyspace.go:695.30,698.11 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:698.11,700.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:702.4,702.30 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:702.30,703.38 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:703.38,705.6 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:711.3,712.36 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:712.36,713.12 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:717.3,718.28 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:718.28,719.51 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:719.51,721.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:722.9,722.64 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:722.64,723.60 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:723.60,725.5 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:730.2,730.21 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:730.21,732.3 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:734.2,737.58 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:737.58,741.3 2 0 +github.com/echovault/sugardb/sugardb/keyspace.go:743.2,743.12 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:746.62,753.15 5 1 +github.com/echovault/sugardb/sugardb/keyspace.go:753.15,755.3 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:757.2,761.45 4 1 +github.com/echovault/sugardb/sugardb/keyspace.go:761.45,762.19 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:762.19,764.9 2 1 +github.com/echovault/sugardb/sugardb/keyspace.go:765.9,767.4 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:771.2,771.16 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:774.56,780.2 4 1 +github.com/echovault/sugardb/sugardb/keyspace.go:782.84,787.34 4 1 +github.com/echovault/sugardb/sugardb/keyspace.go:787.34,791.3 3 1 +github.com/echovault/sugardb/sugardb/keyspace.go:791.8,793.3 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:795.2,795.16 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:795.16,797.3 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:799.2,799.18 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:802.92,807.34 4 1 +github.com/echovault/sugardb/sugardb/keyspace.go:807.34,811.3 3 1 +github.com/echovault/sugardb/sugardb/keyspace.go:811.8,813.3 1 0 +github.com/echovault/sugardb/sugardb/keyspace.go:815.2,815.16 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:815.16,817.3 1 1 +github.com/echovault/sugardb/sugardb/keyspace.go:819.2,822.18 3 1 +github.com/echovault/sugardb/sugardb/modules.go:30.73,33.42 3 1 +github.com/echovault/sugardb/sugardb/modules.go:33.42,34.46 1 1 +github.com/echovault/sugardb/sugardb/modules.go:34.46,36.4 1 1 +github.com/echovault/sugardb/sugardb/modules.go:38.2,38.72 1 1 +github.com/echovault/sugardb/sugardb/modules.go:41.123,72.58 1 1 +github.com/echovault/sugardb/sugardb/modules.go:72.58,76.4 3 1 +github.com/echovault/sugardb/sugardb/modules.go:77.67,81.4 3 1 +github.com/echovault/sugardb/sugardb/modules.go:82.90,92.24 5 1 +github.com/echovault/sugardb/sugardb/modules.go:92.24,94.5 1 0 +github.com/echovault/sugardb/sugardb/modules.go:97.4,98.37 2 1 +github.com/echovault/sugardb/sugardb/modules.go:98.37,100.5 1 1 +github.com/echovault/sugardb/sugardb/modules.go:101.4,106.43 3 1 +github.com/echovault/sugardb/sugardb/modules.go:111.135,114.25 2 1 +github.com/echovault/sugardb/sugardb/modules.go:114.25,120.3 3 1 +github.com/echovault/sugardb/sugardb/modules.go:120.8,126.3 3 1 +github.com/echovault/sugardb/sugardb/modules.go:127.2,130.16 3 1 +github.com/echovault/sugardb/sugardb/modules.go:130.16,132.3 1 1 +github.com/echovault/sugardb/sugardb/modules.go:134.2,134.19 1 1 +github.com/echovault/sugardb/sugardb/modules.go:134.19,136.3 1 1 +github.com/echovault/sugardb/sugardb/modules.go:139.2,139.39 1 1 +github.com/echovault/sugardb/sugardb/modules.go:139.39,141.3 1 0 +github.com/echovault/sugardb/sugardb/modules.go:143.2,144.16 2 1 +github.com/echovault/sugardb/sugardb/modules.go:144.16,146.3 1 1 +github.com/echovault/sugardb/sugardb/modules.go:148.2,152.16 4 1 +github.com/echovault/sugardb/sugardb/modules.go:152.16,154.3 1 1 +github.com/echovault/sugardb/sugardb/modules.go:155.2,156.8 2 1 +github.com/echovault/sugardb/sugardb/modules.go:156.8,159.3 2 1 +github.com/echovault/sugardb/sugardb/modules.go:161.2,161.51 1 1 +github.com/echovault/sugardb/sugardb/modules.go:161.51,164.87 1 1 +github.com/echovault/sugardb/sugardb/modules.go:164.87,166.4 1 0 +github.com/echovault/sugardb/sugardb/modules.go:170.2,170.50 1 1 +github.com/echovault/sugardb/sugardb/modules.go:170.50,171.7 1 1 +github.com/echovault/sugardb/sugardb/modules.go:171.7,172.42 1 1 +github.com/echovault/sugardb/sugardb/modules.go:172.42,174.10 2 1 +github.com/echovault/sugardb/sugardb/modules.go:179.2,179.43 1 1 +github.com/echovault/sugardb/sugardb/modules.go:179.43,181.17 2 1 +github.com/echovault/sugardb/sugardb/modules.go:181.17,183.4 1 1 +github.com/echovault/sugardb/sugardb/modules.go:185.3,185.62 1 1 +github.com/echovault/sugardb/sugardb/modules.go:185.62,189.4 3 1 +github.com/echovault/sugardb/sugardb/modules.go:191.3,193.18 2 1 +github.com/echovault/sugardb/sugardb/modules.go:197.2,197.32 1 1 +github.com/echovault/sugardb/sugardb/modules.go:197.32,200.17 3 1 +github.com/echovault/sugardb/sugardb/modules.go:200.17,202.4 1 0 +github.com/echovault/sugardb/sugardb/modules.go:203.3,203.18 1 1 +github.com/echovault/sugardb/sugardb/modules.go:207.2,207.34 1 1 +github.com/echovault/sugardb/sugardb/modules.go:207.34,210.3 2 1 +github.com/echovault/sugardb/sugardb/modules.go:212.2,212.72 1 1 +github.com/echovault/sugardb/sugardb/modules.go:215.57,217.2 1 1 +github.com/echovault/sugardb/sugardb/modules.go:219.45,221.2 1 1 +github.com/echovault/sugardb/sugardb/modules.go:223.48,225.2 1 1 +github.com/echovault/sugardb/sugardb/modules.go:227.47,229.2 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:30.105,32.2 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:37.9,40.37 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:40.37,42.3 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:42.8,42.43 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:42.43,44.3 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:47.2,48.65 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:48.65,50.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:53.2,61.33 8 1 +github.com/echovault/sugardb/sugardb/plugin.go:62.13,63.105 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:64.12,65.104 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:68.2,68.16 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:68.16,70.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:73.2,92.84 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:92.84,94.72 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:94.72,95.36 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:96.13,101.12 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:102.16,103.51 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:104.15,105.50 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:109.72,111.67 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:111.67,112.36 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:113.13,114.79 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:115.16,116.61 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:117.15,118.60 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:125.2,127.12 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:138.70,142.49 3 1 +github.com/echovault/sugardb/sugardb/plugin.go:142.49,143.38 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:143.38,145.4 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:148.2,148.41 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:148.41,149.37 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:149.37,151.4 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:152.3,152.44 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:155.2,156.16 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:156.16,158.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:160.2,161.16 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:161.16,163.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:164.2,165.9 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:165.9,167.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:169.2,170.16 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:170.16,172.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:173.2,174.9 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:174.9,176.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:178.2,179.16 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:179.16,181.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:182.2,183.9 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:183.9,185.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:187.2,188.16 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:188.16,190.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:191.2,192.9 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:192.9,194.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:196.2,197.16 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:197.16,199.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:200.2,201.9 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:201.9,203.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:205.2,206.16 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:206.16,208.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:209.2,217.9 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:217.9,219.3 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:222.2,222.91 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:222.91,224.3 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:227.2,230.31 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:230.31,233.36 2 1 +github.com/echovault/sugardb/sugardb/plugin.go:233.36,235.5 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:236.4,236.15 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:241.83,243.18 2 0 +github.com/echovault/sugardb/sugardb/plugin.go:243.18,245.5 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:246.4,250.10 1 0 +github.com/echovault/sugardb/sugardb/plugin.go:252.72,261.4 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:264.2,264.12 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:272.52,275.91 3 1 +github.com/echovault/sugardb/sugardb/plugin.go:275.91,277.3 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:283.47,287.42 4 1 +github.com/echovault/sugardb/sugardb/plugin.go:287.42,288.61 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:288.61,290.4 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:290.6,292.4 1 1 +github.com/echovault/sugardb/sugardb/plugin.go:294.2,294.16 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:39.48,43.2 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:45.51,47.2 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:49.28,52.2 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:54.101,60.16 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:60.16,62.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:63.2,63.42 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:63.42,65.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:68.2,68.61 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:68.61,72.33 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:72.33,74.36 2 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:74.36,78.5 3 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:81.3,83.21 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:87.2,87.60 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:87.60,91.33 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:91.33,94.36 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:94.36,98.5 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:99.4,99.16 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:102.3,104.21 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:108.2,108.64 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:108.64,112.34 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:112.34,114.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:115.3,117.55 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:117.55,119.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:121.3,129.21 7 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:133.2,133.61 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:133.61,136.41 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:136.41,137.23 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:137.23,139.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:140.4,142.15 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:142.15,144.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:145.4,146.11 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:146.11,148.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:149.4,149.31 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:151.3,155.21 4 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:159.2,160.16 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:160.16,162.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:163.2,164.37 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:164.37,166.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:169.2,170.16 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:170.16,172.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:173.2,174.39 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:174.39,176.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:177.2,182.16 4 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:182.16,184.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:185.2,186.41 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:186.41,188.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:191.2,192.16 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:192.16,194.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:195.2,195.20 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:195.20,197.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:198.2,203.93 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:207.115,210.9 2 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:210.9,212.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:213.2,223.21 6 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:223.21,225.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:226.2,227.16 2 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:227.16,229.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:230.2,230.19 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:230.19,232.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:233.2,238.9 5 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:238.9,239.39 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:239.39,241.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:242.3,242.24 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:245.2,248.9 4 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:248.9,249.39 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:249.39,251.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:252.3,252.25 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:255.2,259.8 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:263.120,266.9 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:266.9,268.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:269.2,279.21 6 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:279.21,281.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:282.2,286.21 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:286.21,291.4 4 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:297.34,300.35 3 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:300.35,302.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:303.4,303.22 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:307.34,310.35 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:310.35,311.25 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:312.13,313.29 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:314.14,315.40 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:316.19,318.44 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:318.44,320.7 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:321.6,321.33 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:322.20,325.33 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:326.19,329.33 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:330.32,333.34 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:336.4,336.22 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:340.40,342.36 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:342.36,343.25 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:344.13,345.99 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:346.14,347.23 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:348.17,349.54 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:350.16,351.38 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:352.18,353.35 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:354.19,355.36 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:356.33,358.37 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:358.37,360.7 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:361.6,362.17 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:362.17,370.7 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:371.6,371.24 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:372.14,373.91 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:374.21,375.36 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:376.20,377.35 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:378.33,379.48 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:383.4,383.67 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:383.67,385.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:391.2,391.16 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:391.16,393.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:394.2,398.25 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:401.53,404.61 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:404.61,406.35 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:406.35,410.4 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:412.3,413.15 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:415.2,415.63 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:415.63,418.35 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:418.35,419.35 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:419.35,420.13 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:422.4,425.37 4 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:427.3,428.11 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:430.2,430.61 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:430.61,432.41 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:432.41,436.4 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:437.3,437.24 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:439.2,439.61 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:439.61,442.3 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:443.2,443.61 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:443.61,445.29 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:445.29,448.4 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:449.3,449.24 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:451.2,451.64 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:451.64,453.41 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:453.41,458.4 4 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:459.3,459.24 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:461.2,461.61 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:461.61,463.41 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:463.41,465.35 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:465.35,468.5 2 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:470.3,471.16 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:475.51,478.61 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:478.61,480.18 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:480.18,482.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:483.3,484.35 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:484.35,488.4 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:489.3,491.16 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:493.2,493.61 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:493.61,498.28 5 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:498.28,500.4 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:501.3,501.24 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:503.2,503.66 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:503.66,507.3 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:508.2,508.69 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:508.69,511.3 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:512.2,512.64 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:512.64,514.18 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:514.18,516.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:517.3,518.35 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:518.35,522.4 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:523.3,524.16 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:526.2,526.61 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:526.61,530.25 4 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:530.25,532.4 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:533.3,533.24 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:535.2,535.64 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:535.64,540.28 5 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:540.28,542.4 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:543.3,543.24 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:545.2,545.62 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:545.62,550.14 5 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:550.14,552.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:553.3,553.19 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:554.11,555.59 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:556.17,559.17 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:561.3,561.26 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:563.2,563.66 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:563.66,564.67 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:564.67,566.34 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:566.34,568.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:569.4,570.31 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:570.31,572.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:573.4,573.36 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:573.36,576.30 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:576.30,578.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:580.5,583.16 4 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:583.16,585.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:586.5,587.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:587.12,589.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:590.5,590.27 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:592.4,592.20 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:594.3,595.17 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:595.17,597.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:598.3,601.24 4 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:605.74,608.63 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:608.63,609.33 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:610.10,613.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:614.10,617.19 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:617.19,619.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:620.4,620.33 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:621.11,628.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:630.3,630.26 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:632.2,632.63 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:632.63,633.33 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:634.10,636.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:637.10,639.21 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:639.21,641.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:642.4,642.33 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:643.11,650.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:652.3,652.26 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:656.56,659.28 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:659.28,661.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:662.2,663.79 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:663.79,665.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:666.2,667.23 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:667.23,669.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:670.2,670.12 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:673.71,675.83 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:675.83,677.35 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:677.35,679.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:680.3,681.30 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:681.30,683.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:684.3,684.35 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:684.35,687.29 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:687.29,689.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:691.4,694.15 4 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:694.15,696.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:697.4,698.11 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:698.11,700.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:701.4,701.33 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:703.3,703.22 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:707.2,713.82 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:713.82,715.33 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:715.33,717.4 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:718.3,718.35 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:718.35,720.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:721.3,723.35 3 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:723.35,724.43 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:724.43,727.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:728.4,729.15 2 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:730.18,731.23 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:731.23,733.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:734.5,735.15 2 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:735.15,737.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:737.11,739.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:740.22,741.38 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:742.19,743.23 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:743.23,745.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:746.5,747.32 2 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:748.16,749.23 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:749.23,751.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:752.5,753.26 2 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:756.3,756.24 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:759.2,761.61 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:761.61,762.63 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:762.63,764.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:766.3,767.17 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:767.17,769.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:771.3,772.17 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:772.17,774.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:775.3,782.17 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:782.17,784.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:785.3,786.11 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:788.2,788.64 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:788.64,789.63 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:789.63,791.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:793.3,794.17 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:794.17,796.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:798.3,799.17 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:799.17,801.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:802.3,809.17 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:809.17,811.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:812.3,813.11 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:815.2,815.64 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:815.64,816.34 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:816.34,818.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:819.3,821.11 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:823.2,823.69 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:823.69,826.3 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:827.2,827.66 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:827.66,828.34 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:828.34,830.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:831.3,832.11 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:834.2,834.64 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:834.64,835.34 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:835.34,837.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:838.3,840.46 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:840.46,844.4 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:845.3,846.11 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:848.2,848.61 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:848.61,850.33 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:850.33,854.4 3 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:855.3,856.11 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:858.2,858.66 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:858.66,859.81 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:859.81,861.34 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:861.34,863.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:864.4,865.31 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:865.31,867.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:868.4,868.36 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:868.36,871.30 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:871.30,873.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:875.5,878.16 4 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:878.16,880.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:881.5,882.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:882.12,884.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:885.5,885.29 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:887.4,887.21 1 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:889.3,890.17 2 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:890.17,892.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:893.3,896.24 4 1 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:900.68,902.12 2 0 +github.com/echovault/sugardb/sugardb/plugin_javascript.go:905.37,907.14 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:29.103,33.39 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:33.39,35.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:38.2,41.77 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:41.77,47.3 5 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:49.2,50.38 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:50.38,55.56 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:55.56,58.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:58.12,61.6 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:62.5,62.56 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:62.56,64.42 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:64.42,67.7 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:69.6,70.20 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:70.20,73.7 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:74.6,74.49 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:74.49,76.7 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:76.12,80.7 3 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:81.6,81.16 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:84.4,85.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:87.40,92.56 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:92.56,95.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:95.12,98.6 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:99.5,99.56 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:99.56,101.42 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:101.42,103.7 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:104.6,105.20 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:105.20,108.7 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:110.6,110.49 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:110.49,113.7 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:116.4,117.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:119.38,124.58 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:124.58,125.42 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:125.42,128.6 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:129.5,129.42 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:129.42,132.6 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:133.5,134.47 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:134.47,136.6 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:136.11,138.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:139.5,139.32 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:141.4,142.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:144.38,149.4 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:150.38,154.36 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:154.36,156.5 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:157.4,158.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:160.41,165.58 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:165.58,166.42 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:166.42,169.6 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:170.5,170.42 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:170.42,173.6 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:174.5,175.44 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:177.4,178.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:180.38,185.58 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:185.58,186.42 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:186.42,189.6 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:190.5,190.42 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:190.42,193.6 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:194.5,194.47 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:194.47,197.6 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:199.4,200.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:205.2,208.76 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:208.76,212.26 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:212.26,214.57 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:214.57,216.5 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:217.4,217.16 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:220.3,224.11 5 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:227.2,228.38 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:228.38,233.55 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:233.55,235.5 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:237.4,238.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:240.38,245.43 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:245.43,247.5 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:249.4,250.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:252.43,256.4 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:257.46,261.4 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:262.41,267.55 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:267.55,269.5 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:271.4,272.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:274.39,281.4 6 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:282.43,287.55 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:287.55,289.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:289.12,292.6 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:293.5,294.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:294.12,297.6 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:298.5,298.27 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:301.4,305.12 5 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:307.38,311.33 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:311.33,313.5 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:315.4,316.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:318.41,323.46 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:323.46,325.5 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:327.4,328.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:333.2,336.88 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:336.88,340.26 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:340.26,342.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:344.3,345.54 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:345.54,346.41 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:347.17,348.45 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:348.45,351.6 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:352.5,352.47 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:353.17,354.51 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:355.12,356.89 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:360.3,360.24 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:360.24,362.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:364.3,368.11 5 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:371.2,372.40 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:372.40,374.27 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:374.27,377.5 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:378.4,379.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:381.40,383.27 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:383.27,386.5 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:387.4,388.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:393.2,396.82 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:396.82,399.26 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:399.26,401.58 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:401.58,403.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:403.12,405.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:406.5,406.55 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:406.55,409.6 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:410.5,410.91 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:414.3,419.11 6 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:422.2,423.38 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:423.38,429.61 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:429.61,431.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:431.12,433.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:434.5,434.56 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:434.56,437.6 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:438.5,438.72 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:442.4,446.27 5 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:446.27,448.61 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:448.61,449.26 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:450.14,451.74 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:452.20,453.29 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:453.29,455.8 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:455.13,457.8 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:458.24,459.34 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:460.21,461.29 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:461.29,463.8 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:464.18,465.29 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:465.29,467.8 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:472.4,473.18 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:473.18,475.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:476.4,477.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:479.41,485.61 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:485.61,487.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:487.12,489.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:490.5,490.56 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:490.56,493.6 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:494.5,494.72 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:498.4,502.27 5 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:502.27,504.61 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:504.61,505.26 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:506.14,507.74 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:508.20,509.29 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:509.29,511.8 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:511.13,513.8 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:514.24,515.34 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:516.21,517.29 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:517.29,519.8 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:520.18,521.29 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:521.29,523.8 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:528.4,529.18 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:529.18,531.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:532.4,533.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:535.41,539.4 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:540.46,543.4 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:544.43,548.4 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:549.41,553.27 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:553.27,555.5 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:557.4,559.35 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:559.35,564.5 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:566.4,567.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:569.38,573.39 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:573.39,578.5 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:580.4,581.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:583.43,588.55 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:588.55,590.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:590.12,592.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:593.5,594.12 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:594.12,596.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:597.5,597.34 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:600.4,606.12 6 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:611.2,612.36 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:612.36,614.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:617.2,619.35 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:619.35,621.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:622.2,622.45 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:622.45,624.3 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:627.2,628.35 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:628.35,630.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:633.2,638.95 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:642.116,645.9 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:645.9,647.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:648.2,658.24 6 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:658.24,660.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:662.2,663.25 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:663.25,665.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:668.2,673.54 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:673.54,677.4 3 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:680.2,680.16 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:680.16,682.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:683.2,684.45 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:684.45,688.30 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:688.30,691.39 3 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:691.39,693.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:694.5,694.13 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:696.31,699.39 3 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:699.39,701.6 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:702.5,702.13 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:705.8,709.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:713.121,716.9 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:716.9,718.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:719.2,733.35 9 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:733.35,735.3 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:737.2,737.57 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:737.57,743.33 4 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:743.33,745.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:747.3,750.34 3 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:750.34,752.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:754.3,755.11 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:758.2,758.57 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:758.57,764.33 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:764.33,766.4 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:768.3,771.34 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:771.34,774.4 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:776.3,777.11 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:780.2,780.57 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:780.57,786.52 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:786.52,789.18 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:789.18,791.5 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:793.3,793.65 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:793.65,795.4 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:797.3,798.11 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:801.2,802.25 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:802.25,804.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:807.2,812.54 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:812.54,816.4 3 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:818.2,818.16 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:818.16,820.3 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:822.2,823.40 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:826.48,828.39 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:828.39,830.3 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:831.2,832.12 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:835.46,837.38 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:837.38,839.3 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:840.2,841.12 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:844.73,846.53 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:846.53,848.3 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:849.2,850.12 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:853.65,855.51 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:855.51,857.3 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:858.2,859.12 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:862.54,865.55 3 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:865.55,868.10 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:868.10,871.4 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:873.3,874.10 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:874.10,877.4 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:878.3,878.30 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:878.30,881.4 2 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:882.3,882.34 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:884.2,884.18 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:887.65,888.22 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:889.17,890.18 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:891.20,892.29 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:893.20,894.49 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:895.19,896.41 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:897.22,898.46 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:899.11,900.47 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:901.18,902.56 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:903.17,904.55 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:905.30,906.68 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:908.10,909.58 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:913.71,914.22 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:915.14,916.37 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:917.15,918.38 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:919.15,920.38 1 0 +github.com/echovault/sugardb/sugardb/plugin_lua.go:921.18,922.34 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:923.16,925.44 2 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:925.44,927.4 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:928.3,928.13 1 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:929.17,933.12 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:934.16,938.12 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:939.29,943.12 4 1 +github.com/echovault/sugardb/sugardb/plugin_lua.go:945.2,945.12 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:137.70,167.39 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:167.39,180.4 12 1 +github.com/echovault/sugardb/sugardb/sugardb.go:185.2,185.33 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:185.33,187.3 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:189.2,195.46 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:195.46,196.50 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:196.50,198.12 2 0 +github.com/echovault/sugardb/sugardb/sugardb.go:200.3,200.41 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:204.2,209.27 3 1 +github.com/echovault/sugardb/sugardb/sugardb.go:209.27,219.59 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:219.59,223.5 3 1 +github.com/echovault/sugardb/sugardb/sugardb.go:224.57,226.53 2 0 +github.com/echovault/sugardb/sugardb/sugardb.go:226.53,227.30 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:227.30,228.47 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:228.47,230.8 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:233.5,233.17 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:236.3,244.5 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:245.8,256.73 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:256.73,258.52 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:258.52,260.35 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:260.35,261.54 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:261.54,263.8 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:266.5,266.17 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:268.86,270.91 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:270.91,272.6 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:273.5,273.54 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:278.3,284.68 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:284.68,286.52 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:286.52,288.35 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:288.35,289.54 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:289.54,291.8 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:294.5,294.17 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:296.82,298.92 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:298.92,300.6 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:301.5,301.55 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:303.65,307.19 4 1 +github.com/echovault/sugardb/sugardb/sugardb.go:307.19,309.6 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:312.3,312.17 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:312.17,314.4 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:315.3,315.32 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:319.2,319.59 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:319.59,320.13 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:320.13,322.17 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:322.17,324.5 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:325.4,325.8 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:325.8,326.12 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:327.21,330.59 2 0 +github.com/echovault/sugardb/sugardb/sugardb.go:330.59,333.56 3 0 +github.com/echovault/sugardb/sugardb/sugardb.go:333.56,334.67 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:334.67,336.9 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:337.8,337.17 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:340.6,340.15 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:341.28,342.11 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:348.2,348.65 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:348.65,350.3 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:352.2,352.27 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:352.27,358.3 3 1 +github.com/echovault/sugardb/sugardb/sugardb.go:360.2,360.28 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:360.28,363.32 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:363.32,365.18 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:365.18,367.5 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:371.3,371.67 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:371.67,373.18 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:373.18,375.5 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:379.2,379.21 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:382.35,394.16 4 1 +github.com/echovault/sugardb/sugardb/sugardb.go:394.16,397.3 2 0 +github.com/echovault/sugardb/sugardb/sugardb.go:399.2,399.15 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:399.15,402.3 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:404.2,404.27 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:404.27,406.16 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:406.16,408.4 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:408.9,410.4 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:412.3,413.49 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:413.49,415.18 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:415.18,418.5 2 0 +github.com/echovault/sugardb/sugardb/sugardb.go:419.4,419.42 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:422.3,425.16 3 1 +github.com/echovault/sugardb/sugardb/sugardb.go:425.16,427.37 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:427.37,429.19 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:429.19,432.6 2 0 +github.com/echovault/sugardb/sugardb/sugardb.go:433.5,434.19 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:434.19,436.6 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:437.5,437.61 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:437.61,439.6 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:443.3,447.5 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:450.2,453.6 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:453.6,454.10 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:455.22,456.10 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:457.11,459.18 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:459.18,462.5 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:464.4,464.36 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:469.56,471.23 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:471.23,473.3 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:475.2,492.15 7 1 +github.com/echovault/sugardb/sugardb/sugardb.go:492.15,494.38 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:494.38,496.4 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:499.2,499.6 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:499.6,502.43 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:502.43,505.9 2 0 +github.com/echovault/sugardb/sugardb/sugardb.go:508.3,508.17 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:508.17,510.9 2 0 +github.com/echovault/sugardb/sugardb/sugardb.go:513.3,514.43 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:514.43,515.9 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:517.3,517.17 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:517.17,519.87 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:519.87,521.5 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:522.4,522.12 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:525.3,528.20 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:528.20,529.12 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:532.3,532.28 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:532.28,534.12 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:538.3,539.7 2 0 +github.com/echovault/sugardb/sugardb/sugardb.go:539.7,541.41 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:541.41,543.19 2 0 +github.com/echovault/sugardb/sugardb/sugardb.go:543.19,545.6 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:546.5,546.10 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:548.4,549.21 2 0 +github.com/echovault/sugardb/sugardb/sugardb.go:549.21,550.10 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:552.4,552.27 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:562.32,564.2 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:567.45,568.38 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:568.38,570.3 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:572.2,572.12 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:572.12,573.27 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:573.27,575.53 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:575.53,577.5 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:578.4,578.10 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:581.3,581.62 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:581.62,583.4 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:586.2,586.12 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:589.40,591.2 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:593.41,595.2 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:597.54,599.2 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:602.54,604.2 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:606.42,608.2 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:610.43,612.2 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:615.43,616.40 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:616.40,618.3 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:619.2,619.54 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:619.54,621.3 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:622.2,622.12 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:627.35,628.35 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:628.35,629.13 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:629.13,629.42 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:630.3,630.13 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:630.13,630.45 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:632.3,633.71 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:633.71,635.4 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:639.2,641.42 3 1 +github.com/echovault/sugardb/sugardb/sugardb.go:641.42,642.73 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:642.73,644.11 2 0 +github.com/echovault/sugardb/sugardb/sugardb.go:644.11,645.13 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:647.4,652.24 3 0 +github.com/echovault/sugardb/sugardb/sugardb.go:653.22,654.37 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:656.4,656.25 1 0 +github.com/echovault/sugardb/sugardb/sugardb.go:659.2,661.27 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:661.27,664.3 1 1 +github.com/echovault/sugardb/sugardb/sugardb.go:664.8,668.3 2 1 +github.com/echovault/sugardb/sugardb/sugardb.go:671.43,689.40 3 1 +github.com/echovault/sugardb/sugardb/sugardb.go:689.40,692.3 2 0 +github.com/echovault/sugardb/sugardb/test_helpers.go:12.31,20.2 2 1 +github.com/echovault/sugardb/sugardb/test_helpers.go:22.59,27.2 2 1 +github.com/echovault/sugardb/sugardb/test_helpers.go:29.93,31.82 2 1 +github.com/echovault/sugardb/sugardb/test_helpers.go:31.82,33.3 1 0 +github.com/echovault/sugardb/sugardb/test_helpers.go:34.2,34.12 1 1 +github.com/echovault/sugardb/sugardb/test_helpers.go:37.93,41.2 3 1 +github.com/echovault/sugardb/sugardb/test_helpers.go:43.104,45.16 2 1 +github.com/echovault/sugardb/sugardb/test_helpers.go:45.16,47.3 1 0 +github.com/echovault/sugardb/sugardb/test_helpers.go:48.2,50.55 2 1 diff --git a/docker-compose.yaml b/docker-compose.yaml index cbef450..2a34b9e 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -46,6 +46,7 @@ services: - ./internal/volumes/config:/etc/sugardb/config - ./internal/volumes/nodes/standalone_node:/var/lib/sugardb - ./internal/volumes/modules/lua:/var/lib/sugardb/scripts/lua + - ./internal/volumes/modules/js:/var/lib/sugardb/scripts/js networks: - testnet @@ -90,6 +91,8 @@ services: volumes: - ./internal/volumes/config:/etc/sugardb/config - ./internal/volumes/nodes/cluster_node_1:/var/lib/sugardb + - ./internal/volumes/modules/lua:/var/lib/sugardb/scripts/lua + - ./internal/volumes/modules/js:/var/lib/sugardb/scripts/js networks: - testnet @@ -134,6 +137,8 @@ services: volumes: - ./internal/volumes/config:/etc/sugardb/config - ./internal/volumes/nodes/cluster_node_2:/var/lib/sugardb + - ./internal/volumes/modules/lua:/var/lib/sugardb/scripts/lua + - ./internal/volumes/modules/js:/var/lib/sugardb/scripts/js networks: - testnet @@ -178,6 +183,8 @@ services: volumes: - ./internal/volumes/config:/etc/sugardb/config - ./internal/volumes/nodes/cluster_node_3:/var/lib/sugardb + - ./internal/volumes/modules/lua:/var/lib/sugardb/scripts/lua + - ./internal/volumes/modules/js:/var/lib/sugardb/scripts/js networks: - testnet @@ -222,6 +229,8 @@ services: volumes: - ./internal/volumes/config:/etc/sugardb/config - ./internal/volumes/nodes/cluster_node_4:/var/lib/sugardb + - ./internal/volumes/modules/lua:/var/lib/sugardb/scripts/lua + - ./internal/volumes/modules/js:/var/lib/sugardb/scripts/js networks: - testnet @@ -266,5 +275,7 @@ services: volumes: - ./internal/volumes/config:/etc/sugardb/config - ./internal/volumes/nodes/cluster_node_5:/var/lib/sugardb + - ./internal/volumes/modules/lua:/var/lib/sugardb/scripts/lua + - ./internal/volumes/modules/js:/var/lib/sugardb/scripts/js networks: - testnet \ No newline at end of file diff --git a/docs/docs/extension/js.mdx b/docs/docs/extension/js.mdx new file mode 100644 index 0000000..2446762 --- /dev/null +++ b/docs/docs/extension/js.mdx @@ -0,0 +1,548 @@ +--- +title: JavaScript Modules +toc_min_heading_level: 2 +toc_max_heading_level: 4 +--- + +import LoadModuleDocs from "@site/src/components/load_module" +import CodeBlock from "@theme/CodeBlock" + +# JavaScript Modules + +SugarDB allows you to create new command modules using JavaScript. +These scripts are loaded into SugarDB at runtime and can be triggered by both embedded clients and +TCP clients just like native commands. + +SugarDB uses the [Otto engine (v0.5.1)](https://github.com/robertkrimen/otto) which targets ES5. +ES6 and later features will not be avaliable so you should refrain from using them. + +## Creating a JavaScript Module + +A JavaScript module has the following anatomy: + +```js + +// The keyword to trigger the command +var command = "JS.EXAMPLE" + +// The string array of categories this command belongs to. +// This array can contain both built-in categories and new custom categories. +var categories = ["generic", "write", "fast"] + +// The description of the command. +var description = "(JS.EXAMPLE) Example JS command that sets various data types to keys" + +// Whether the command should be synced across the RAFT cluster. +var sync = true + +/** + * keyExtractionFunc is a function that extracts the keys from the command and returns them to SugarDB.keyExtractionFunc + * The returned data from this function is used in the Access Control Layer to determine if the current connection is + * authorized to execute this command. The function must return a table that specifies which keys in this command + * are read keys and which ones are write keys. + * Example return: {readKeys: ["key1", "key2"], writeKeys: ["key3", "key4", "key5"]} + * + * 1. "command" is a string array representing the command that triggered this key extraction function. + * + * 2. "args" is a string array of the modifier args that were passed when loading the module into SugarDB. + * These args are passed to the key extraction function everytime it's invoked. +*/ +function keyExtractionFunc(command, args) { + if (command.length > 1) { + throw "wrong number of args, expected 0" + } + return { + readKeys: [], + writeKeys: [] + } +} + +/** + * handlerFunc is the command's handler function. The function is passed some arguments that allow it to interact with + * SugarDB. The function must return a valid RESP response or throw an error. + * The handler function accepts the following args: + * + * 1. "context" is a table that contains some information about the environment this command has been executed in. + * Example: {protocol: 2, database: 0} + * This object contains the following properties: + * i) protocol - the protocol version of the client that executed the command (either 2 or 3). + * ii) database - the active database index of the client that executed the command. + * + * 2. "command" is the string array representing the command that triggered this handler function. + * + * 3. "keyExists" is a function that can be called to check if a list of keys exists in the SugarDB store database. + * This function accepts a string array of keys to check and returns a table with each key having a corresponding + * boolean value indicating whether it exists. + * Examples: + * i) Example invocation: keyExists(["key1", "key2", "key3"]) + * ii) Example return: {key1: true, key2: false, key3: true} + * + * 4. "getValues" is a function that can be called to retrieve values from the SugarDB store database. + * The function accepts a string array of keys whose values we would like to fetch, and returns a table with each key + * containing the corresponding value from the store. + * The possible data types for the values are: number, string, nil, hash, set, zset + * Examples: + * i) Example invocation: getValues(["key1", "key2", "key3"]) + * ii) Example return: {key1: 3.142, key2: nil, key3: "Pi"} + * + * 5. "setValues" is a function that can be called to set values in the active database in the SugarDB store. + * This function accepts a table with keys and the corresponding values to set for each key in the active database + * in the store. + * The accepted data types for the values are: number, string, nil, hash, set, zset. + * The setValues function does not return anything. + * Examples: + * i) Example invocation: setValues({key1: 3.142, key2: nil, key3: "Pi"}) + * + * 6. "args" is a string array of the modifier args passed to the module at load time. These args are passed to the + * handler everytime it's invoked. + */ +function handlerFunc(ctx, command, keysExist, getValues, setValues, args) { + // Set various data types to keys + var keyValues = { + "numberKey": 42, + "stringKey": "Hello, SugarDB!", + "floatKey": 3.142, + "nilKey": null, + } + + // Store the values in the database + setValues(keyValues) + + // Verify the values have been set correctly + var keysToGet = ["numberKey", "stringKey", "floatKey", "nilKey"] + var retrievedValues = getValues(keysToGet) + + // Create an array to track mismatches + var mismatches = []; + for (var key in keyValues) { + if (Object.prototype.hasOwnProperty.call(keyValues, key)) { + var expectedValue = keyValues[key]; + var retrievedValue = retrievedValues[key]; + if (retrievedValue !== expectedValue) { + var msg = "Key " + key + ": expected " + expectedValue + ", got " + retrievedValue + mismatches.push(msg); + console.log(msg) + } + } + } + + // If mismatches exist, return an error + if (mismatches.length > 0) { + throw "values mismatch" + } + + // If all values match, return OK + return "+OK\r\n" +} +``` + +## Loading JavaScript Modules + + +## Standard Data Types + +Sugar DB supports the following standard data types in JavaScript modules: + +- string +- number (integers and floating-point numbers) +- null +- arrays (tables with integer keys) + +These data types can be stored using the setValues function and retrieved using the getValues function. + +## Custom Data Types + +In addition to the standard data types, SugarDB also supports custom data types in JavaScript modules. +These custom data types include: + +- Hashes +- Sets +- Sorted Sets + +Just like the standard types, these custom data types can be stored and retrieved using the setValues +and getValues functions respectively. + +### Hashes + +The hash data type is a custom data type in SugarDB designed for storing and managing key-value pairs. +It supports several methods for interacting with the hash, including adding, updating, retrieving, deleting, +and checking values.This section explains how to make use of the hash data type in your JavaScript modules. + +#### Creating a Hash + +```js +var myHash = new Hash(); +``` + +#### Hash methods + +`set` - Adds or updates key-value pairs in the hash. If the key exists, +the value is updated; otherwise, it is added. + +```js +var myHash = new Hash(); +var numUpdated = myHash.set({ + "field1": "value1", + "field2": "value2", + "field3": "value3", + "field4": "value4" +}); +console.log(numUpdated) // Output: 4 +``` + +`setnx` - Adds key-value pairs to the hash only if the key does not already exist. + +```js +var myHash = new Hash(); +myHash.set({"field1": "value1"}); +var numAdded = myHash.setnx({ + "field1": "newValue", // Will not overwrite because field1 exists + "field2": "value2" // Will be added +}) +console.log(numAdded) // Output: 1 +``` + +`get` - Retrieves the values for the specified keys. Returns nil for keys that do not exist. + +```js +var myHash = new Hash(); +myHash.set({ + key1: "value1" , + key2: "value2" +}); +// Get values from the hash +var values = myHash.get(["key1", "key2", "key3"]); +// Iterate over the values and log them +for (var key in values) { + if (values.hasOwnProperty(key)) { + console.log(key, values[key]); // Output: key1 value1, key2 value2, key3 undefined + } +} +``` + +`len` - Returns the number of key-value pairs in the hash. + +```js +var myHash = new Hash(); +myHash.set({ + "key1": "value1", + "key2": "value2" +}); +console.log(myHash:len()) // Output: 2 +``` + +`all` - Returns a table containing all key-value pairs in the hash. + +```js +var myHash = new Hash(); +myHash.set({ + "key1": "value1", + "key2": "value2" +}); +var allKVPairs = myHash:all() +for (var key in allKVPairs) { + if (allKVPairs.hasOwnProperty(key)) { + console.log(key, allKVPairs[key]); // Output: key1 value1, key2 value2 + } +} +``` + +`exists` - Checks if specified keys exist in the hash. + +```js +var myHash = new Hash(); +myHash.set({ + "key1": "value1" +}); +var existence = myHash.exists(["key1", "key2"]) +for (var key in existence) { + if (existence.hasOwnProperty(key)) { + console.log(key, existence[key]); // Output: key1 true, key2 false + } +} +``` + +`del` - Deletes the specified keys from the hash. Returns the number of keys deleted. + +```js +var myHash = new Hash(); +myHash.set({ + "key1": "value1", + "key2": "value2" +}); +var numDeleted = myHash.del(["key1", "key3"]) +console.log(numDeleted) // Output: 1 +``` + +### Sets + +The `set` data type is a custom data type in SugarDB designed for managing unique elements. +It supports operations like adding, removing, checking for membership, +and performing set operations such as subtraction. +This section explains how to use the `set` data type in your JavaScript modules. + +#### Creating a Set + +```js +var mySet1 = new Set(); // Create new empty set +var mySet2 = new Set(["apple", "banana", "cherry"]) // Create new set with elements +``` + +#### Set methods + +`add` - Adds one or more elements to the set. Returns the number of elements added. + +```js +var mySet = new Set(); +var addedCount = mySet.add(["apple", "banana"]) +console.log(addedCount) // Output: 2 +``` + +`pop` - Removes and returns a specified number of random elements from the set. + +```js +var mySet = new Set(["apple", "banana", "cherry"]) +var popped = mySet.pop(2) +console.log(popped) // Outputs an array of 2 random elements from the set +``` + +`contains` - Checks if a specific element exists in the set. + +```js +var mySet = new Set(["apple", "banana"]) +console.log(mySet.contains("apple")) // Output: true +console.log(mySet.contains("cherry")) // Output: false +``` + +`cardinality` - Returns the number of elements in the set. + +```js +var mySet = new Set(["apple", "banana"]) +console.log(mySet.cardinality()) // Output: 2 +``` + +`remove` - Removes one or more specified elements from the set. Returns the number of elements removed. + +```js +var mySet = new Set(["apple", "banana", "cherry"]) +var removedCount = mySet.remove(["banana", "cherry"]) +console.log(removedCount) // Output: 2 +``` + +`move` - Moves an element from one set to another. Returns true if the element was successfully moved. + +```js +var set1 = new Set(["apple", "banana"]) +var set2 = new Set(["cherry"]) +var success = set1.move(set2, "banana") +console.log(success) // Output: true +``` + +`subtract` - Returns a new set that is the result of subtracting other sets from the current set. + +```js +var set1 = new Set(["apple", "banana", "cherry"]) +var set2 = new Set(["banana"]) +var resultSet = set1.subtract([set2]) +var allElems = resultSet.all() +for (var i = 0; i < allElems.length; i++) { + console.log(allElems[i]); // Output: "apple", "cherry" +} +``` + +`all` - Returns a table containing all elements in the set. + +```js +var mySet = new Set(["apple", "banana", "cherry"]) +var allElems = mySet.all() +for (var i = 0; i < allElems.length; i++) { + console.log(allElems[i]); // Output: "apple", "banana", "cherry" +} +``` + +`random` - Returns a table of randomly selected elements from the set. The number of elements to return is specified as an argument. + +```js +var mySet = new Set(["apple", "banana", "cherry", "date"]) +var randomElems = mySet.random(2) +console.log(randomElems) // Outputs an array of 2 random elements from the set +``` + +### Sorted Sets + +A zset is a sorted set that stores zmember elements, ordered by their score. +The zset type provides methods to manipulate and query the set. A zset is made up of +zmember elements, each of which has a value and a score. + +#### zmember + +A zmember represents an element in a zset (sorted set). Each zmember consists of: +- value: A unique identifier for the member (e.g., a string). +- score: A numeric value used to sort the member in the sorted set. + +You can create a zmember as follows: + +```js +var m = new ZMember({value: "example", score: 42}) +``` + +The zmember type provides methods to retrieve or modify these properties. + +To set/get the value of a zmember, use the `value` method: + +```js +// Get the value +var value = m.value() + +// Set the value +m.value("new_value") +``` + +To set/get the score, use the `score` method: + +```js +// Get the score +var score = m.score() + +// Set the score +m.score(99.5) +``` + +#### Creating a Sorted Set + +```js +// Create a new zset with no zmembers +var zset1 = new ZSet() + +// Create a new zset with two zmembers +var zset2 = new ZSet([ + new ZMember({value: "a", score: 10}), + new ZMember({value: "b", score: 20}), +]) +``` + +#### Sorted Set Methods + +`add` - Adds one or more zmember elements to the zset. +Optionally, you can specify update policies using the optional modifiers. + +Optional Modifiers: +- "exists": Specifies whether to only update existing members ("xx") or only add new members ("nx"). Defaults to no restriction. +- "comparison": Specifies a comparison method for updating scores (e.g., "min", "max"). +- "changed": If true, returns the count of changed elements. +- "incr": If true, increments the score of the specified member by the given score instead of replacing it. + +Basic usage: + +```js +// Create members +var m1 = new ZMember({value: "item1", score: 10}) +var m2 = new ZMember({value: "item2", score: 20}) + +// Create zset and add members +var zset = new ZSet() +zset.add([m1, m2]) + +// Check cardinality +console.log(zset.cardinality()) // Outputs: 2 +``` + +Usage with optional modifiers: + +```js +// Create zset +var zset = new ZSet([ + new ZMember({value: "a", score: 10}), + new ZMember({value: "b", score: 20}), +]) + +// Attempt to add members with different policies +var new_members = { + new ZMember({value: "a", score: 5}), // Existing member + new ZMember({value: "c", score: 15}), // New member +} + +// Use policies to update and add +var options = { + exists = "xx", // Only update existing members + comparison = "max", // Keep the maximum score for existing members + changed = true, // Return the count of changed elements +} +var changed_count = zset.add(new_members, options) + +// Display results +console.log("Changed count:", changed_count) // Outputs: 1 (only "a" is updated) + +// Adding with different policies +var incr_options = { + exists = "nx", // Only add new members + incr = true, // Increment the score of the added members +} +zset.add([new ZMember({value: "d", score: 10})], incr_options) +``` + +`update` - Updates one or more zmember elements in the zset. +If the member doesn’t exist, the behavior depends on the provided update options. + +Optional Modifiers: +- "exists": Specifies whether to only update existing members ("xx") or only add new members ("nx"). Defaults to no restriction. +- "comparison": Specifies a comparison method for updating scores (e.g., "min", "max"). +- "changed": If true, returns the count of changed elements. +- "incr": If true, increments the score of the specified member by the given score instead of replacing it. + +```js +// Create members +var m1 = new ZMember({value: "item1", score: 10}) +var m2 = new ZMember({value: "item2", score: 20}) + +// Create zset and add members +var zset = new ZSet([m1, m2]) + +// Update a member +var m_update = new ZMember({value: "item1", score: 15}) +var changed_count = zset.update([m_update], {exists = true, comparison = "max", changed = true}) +console.log("Changed count:", changed_count) // Outputs the number of elements updated +``` + +`remove` - Removes a member from the zset by its value. + +```js +var removed = zset.remove("a") // Returns true if removed +``` + +`cardinality` - Returns the number of zmembers in the zset. + +```js +var count = zset.cardinality() +``` + +`contains` - Checks if a zmember with the specified value exists in the zset. + +```js +var exists = zset.contains("b") // Returns true if exists +``` + +`random` - Returns a random zmember from the zset. + +```js +var members = zset.random(2) // Returns up to 2 random members +``` + +`all` - Returns all zmembers in the zset. + +```js +var members = zset.all() +for (var i = 0; i < members.length; i++) { + console.log(members[i].value(), members[i].score()) +} +``` + +`subtract` - Returns a new zset that is the result of subtracting other zsets from the current one. + +```js +var other_zset = new ZSet([ + new ZMember({value: "b", score: 20}), +]) +var result_zset = zset.subtract([other_zset]) +``` + diff --git a/docs/docs/extension/lua.mdx b/docs/docs/extension/lua.mdx index e534ba3..94854a4 100644 --- a/docs/docs/extension/lua.mdx +++ b/docs/docs/extension/lua.mdx @@ -44,9 +44,6 @@ Example return: {["readKeys"] = {"key1", "key2"}, ["writeKeys"] = {"key3", "key4 These args are passed to the key extraction function everytime it's invoked. ]] function keyExtractionFunc (command, args) - for k,v in pairs(args) do - print(k, v) - end if (#command ~= 1) then error("wrong number of args, expected 0") end @@ -138,8 +135,7 @@ Sugar DB supports the following standard data types in Lua scripts: - nil - arrays (tables with integer keys) -These data types can be used to stored using the setValues function and -retrieved using the getValues function. +These data types can be stored using the setValues function and retrieved using the getValues function. ## Custom Data Types @@ -439,13 +435,7 @@ local options = { changed = true, -- Return the count of changed elements } local changed_count = zset:add(new_members, options) - --- Display results print("Changed count:", changed_count) -- Outputs: 1 (only "a" is updated) -print("Updated zset:") -for _, member in ipairs(zset:all()) do - print(member:value(), member:score()) -end -- Adding with different policies local incr_options = { @@ -453,12 +443,6 @@ local incr_options = { incr = true, -- Increment the score of the added members } zset:add({zmember.new({value = "d", score = 10})}, incr_options) - --- Display updated zset -print("After adding with increment:") -for _, member in ipairs(zset:all()) do - print(member:value(), member:score()) -end ``` `update` - Updates one or more zmember elements in the zset. diff --git a/docs/src/components/load_module.tsx b/docs/src/components/load_module.tsx index 190ae60..4538866 100644 --- a/docs/src/components/load_module.tsx +++ b/docs/src/components/load_module.tsx @@ -1,9 +1,13 @@ import React from "react"; import CodeBlock from "@theme/CodeBlock"; -const LoadModuleDocs = ({ module }: { module: "lua" | "go" }) => { +const LoadModuleDocs = ({ module }: { module: "go" | "lua" | "js" }) => { const module_path = - module === "lua" ? "path/to/module/module.lua" : "path/to/module/module.so"; + module === "go" + ? "path/to/module/module.so" + : module === "lua" + ? "path/to/module/module.lua" + : "path/to/module/module.js"; return (
diff --git a/go.mod b/go.mod index 34b5578..8395848 100644 --- a/go.mod +++ b/go.mod @@ -30,8 +30,11 @@ require ( github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.14 // indirect github.com/miekg/dns v1.1.26 // indirect + github.com/robertkrimen/otto v0.5.1 // indirect github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect golang.org/x/crypto v0.14.0 // indirect golang.org/x/net v0.16.0 // indirect golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect + gopkg.in/sourcemap.v1 v1.0.5 // indirect ) diff --git a/go.sum b/go.sum index 4c192d5..444d91b 100644 --- a/go.sum +++ b/go.sum @@ -112,6 +112,8 @@ github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/robertkrimen/otto v0.5.1 h1:avDI4ToRk8k1hppLdYFTuuzND41n37vPGJU7547dGf0= +github.com/robertkrimen/otto v0.5.1/go.mod h1:bS433I4Q9p+E5pZLu7r17vP6FkE6/wLxBdmKjoqJXF8= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sethvargo/go-retry v0.3.0 h1:EEt31A35QhrcRZtrYFDTBg91cqZVnFL2navjDrah2SE= @@ -165,6 +167,8 @@ golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -174,6 +178,8 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/sourcemap.v1 v1.0.5 h1:inv58fC9f9J3TK2Y2R1NPntXEn3/wjWHkonhIUODNTI= +gopkg.in/sourcemap.v1 v1.0.5/go.mod h1:2RlvNNSMglmRrcvhfuzp4hQHwOtjxlbjX7UPY/GXb78= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/internal/types.go b/internal/types.go index 4ca0036..9861716 100644 --- a/internal/types.go +++ b/internal/types.go @@ -213,11 +213,6 @@ type HandlerFuncParams struct { // scriptType is either "FILE" or "RAW". // content contains the file path if scriptType is "FILE" and the raw script if scriptType is "RAW" AddScript func(engine string, scriptType string, content string, args []string) error - // AddScriptCommand adds a commands to SugarDB that is defined by a scripting language. - // engine defines the interpreter to be used. Possible values: "LUA" - // scriptType is either "FILE" or "RAW". - // content contains the file path if scriptType is "FILE" and the raw script if scriptType is "RAW". - AddScriptCommand func(content string, args []string) error } // HandlerFunc is a functions described by a command where the bulk of the command handling is done. diff --git a/internal/volumes/modules/js/example.js b/internal/volumes/modules/js/example.js new file mode 100644 index 0000000..d4c4336 --- /dev/null +++ b/internal/volumes/modules/js/example.js @@ -0,0 +1,113 @@ + +// The keyword to trigger the command +var command = "JS.EXAMPLE" + +// The string array of categories this command belongs to. +// This array can contain both built-in categories and new custom categories. +var categories = ["generic", "write", "fast"] + +// The description of the command. +var description = "(JS.EXAMPLE) Example JS command that sets various data types to keys" + +// Whether the command should be synced across the RAFT cluster. +var sync = true + +/** + * keyExtractionFunc is a function that extracts the keys from the command and returns them to SugarDB.keyExtractionFunc + * The returned data from this function is used in the Access Control Layer to determine if the current connection is + * authorized to execute this command. The function must return a table that specifies which keys in this command + * are read keys and which ones are write keys. + * Example return: {readKeys: ["key1", "key2"], writeKeys: ["key3", "key4", "key5"]} + * + * 1. "command" is a string array representing the command that triggered this key extraction function. + * + * 2. "args" is a string array of the modifier args that were passed when loading the module into SugarDB. + * These args are passed to the key extraction function everytime it's invoked. +*/ +function keyExtractionFunc(command, args) { + if (command.length > 1) { + throw "wrong number of args, expected 0" + } + return { + readKeys: [], + writeKeys: [] + } +} + +/** + * handlerFunc is the command's handler function. The function is passed some arguments that allow it to interact with + * SugarDB. The function must return a valid RESP response or throw an error. + * The handler function accepts the following args: + * + * 1. "context" is a table that contains some information about the environment this command has been executed in. + * Example: {protocol: 2, database: 0} + * This object contains the following properties: + * i) protocol - the protocol version of the client that executed the command (either 2 or 3). + * ii) database - the active database index of the client that executed the command. + * + * 2. "command" is the string array representing the command that triggered this handler function. + * + * 3. "keyExists" is a function that can be called to check if a list of keys exists in the SugarDB store database. + * This function accepts a string array of keys to check and returns a table with each key having a corresponding + * boolean value indicating whether it exists. + * Examples: + * i) Example invocation: keyExists(["key1", "key2", "key3"]) + * ii) Example return: {key1: true, key2: false, key3: true} + * + * 4. "getValues" is a function that can be called to retrieve values from the SugarDB store database. + * The function accepts a string array of keys whose values we would like to fetch, and returns a table with each key + * containing the corresponding value from the store. + * The possible data types for the values are: number, string, nil, hash, set, zset + * Examples: + * i) Example invocation: getValues(["key1", "key2", "key3"]) + * ii) Example return: {key1: 3.142, key2: nil, key3: "Pi"} + * + * 5. "setValues" is a function that can be called to set values in the active database in the SugarDB store. + * This function accepts a table with keys and the corresponding values to set for each key in the active database + * in the store. + * The accepted data types for the values are: number, string, nil, hash, set, zset. + * The setValues function does not return anything. + * Examples: + * i) Example invocation: setValues({key1: 3.142, key2: nil, key3: "Pi"}) + * + * 6. "args" is a string array of the modifier args passed to the module at load time. These args are passed to the + * handler everytime it's invoked. + */ +function handlerFunc(ctx, command, keysExist, getValues, setValues, args) { + // Set various data types to keys + var keyValues = { + "numberKey": 42, + "stringKey": "Hello, SugarDB!", + "floatKey": 3.142, + "nilKey": null, + } + + // Store the values in the database + setValues(keyValues) + + // Verify the values have been set correctly + var keysToGet = ["numberKey", "stringKey", "floatKey", "nilKey"] + var retrievedValues = getValues(keysToGet) + + // Create an array to track mismatches + var mismatches = []; + for (var key in keyValues) { + if (Object.prototype.hasOwnProperty.call(keyValues, key)) { + var expectedValue = keyValues[key]; + var retrievedValue = retrievedValues[key]; + if (retrievedValue !== expectedValue) { + var msg = "Key " + key + ": expected " + expectedValue + ", got " + retrievedValue + mismatches.push(msg); + console.log(msg) + } + } + } + + // If mismatches exist, return an error + if (mismatches.length > 0) { + throw "values mismatch" + } + + // If all values match, return OK + return "+OK\r\n" +} \ No newline at end of file diff --git a/internal/volumes/modules/js/hash.js b/internal/volumes/modules/js/hash.js new file mode 100644 index 0000000..51f33e4 --- /dev/null +++ b/internal/volumes/modules/js/hash.js @@ -0,0 +1,136 @@ + +// The keyword to trigger the command +var command = "JS.HASH" + +// The string array of categories this command belongs to. +// This array can contain both built-in categories and new custom categories. +var categories = ["hash", "write", "fast"] + +// The description of the command. +var description = "(JS.HASH key) This is an example of working with SugarDB hashes/maps in js scripts." + +// Whether the command should be synced across the RAFT cluster. +var sync = true + +/** + * keyExtractionFunc is a function that extracts the keys from the command and returns them to SugarDB.keyExtractionFunc + * The returned data from this function is used in the Access Control Layer to determine if the current connection is + * authorized to execute this command. The function must return a table that specifies which keys in this command + * are read keys and which ones are write keys. + * Example return: {readKeys: ["key1", "key2"], writeKeys: ["key3", "key4", "key5"]} + * + * 1. "command" is a string array representing the command that triggered this key extraction function. + * + * 2. "args" is a string array of the modifier args that were passed when loading the module into SugarDB. + * These args are passed to the key extraction function everytime it's invoked. + */ +function keyExtractionFunc(command, args) { + if (command.length !== 2) { + throw "wrong number of args, expected 1." + } + return { + "readKeys": [], + "writeKeys": [command[1]] + } +} + +/** + * handlerFunc is the command's handler function. The function is passed some arguments that allow it to interact with + * SugarDB. The function must return a valid RESP response or throw an error. + * The handler function accepts the following args: + * + * 1. "context" is a table that contains some information about the environment this command has been executed in. + * Example: {protocol: 2, database: 0} + * This object contains the following properties: + * i) protocol - the protocol version of the client that executed the command (either 2 or 3). + * ii) database - the active database index of the client that executed the command. + * + * 2. "command" is the string array representing the command that triggered this handler function. + * + * 3. "keyExists" is a function that can be called to check if a list of keys exists in the SugarDB store database. + * This function accepts a string array of keys to check and returns a table with each key having a corresponding + * boolean value indicating whether it exists. + * Examples: + * i) Example invocation: keyExists(["key1", "key2", "key3"]) + * ii) Example return: {key1: true, key2: false, key3: true} + * + * 4. "getValues" is a function that can be called to retrieve values from the SugarDB store database. + * The function accepts a string array of keys whose values we would like to fetch, and returns a table with each key + * containing the corresponding value from the store. + * The possible data types for the values are: number, string, nil, hash, set, zset + * Examples: + * i) Example invocation: getValues(["key1", "key2", "key3"]) + * ii) Example return: {key1: 3.142, key2: nil, key3: "Pi"} + * + * 5. "setValues" is a function that can be called to set values in the active database in the SugarDB store. + * This function accepts a table with keys and the corresponding values to set for each key in the active database + * in the store. + * The accepted data types for the values are: number, string, nil, hash, set, zset. + * The setValues function does not return anything. + * Examples: + * i) Example invocation: setValues({key1: 3.142, key2: nil, key3: "Pi"}) + * + * 6. "args" is a string array of the modifier args passed to the module at load time. These args are passed to the + * handler everytime it's invoked. + */ +function handlerFunc(ctx, command, keysExist, getValues, setValues, args) { + // Initialize a new hash + var h = new Hash(); + + // Set values in the hash + h.set({ + "field1": "value1", + "field2": "value2", + "field3": "value3", + "field4": "value4" + }); + + // Set hash in the store + var setVals = {} + setVals[command[1]] = h + setValues(setVals); + + // Check that the fields were correctly set in the database + var hashValue = getValues([command[1]])[command[1]]; + console.assert(hashValue.get(["field1"]).field1 === "value1", "field1 not set correctly"); + console.assert(hashValue.get(["field2"]).field2 === "value2", "field2 not set correctly"); + console.assert(hashValue.get(["field3"]).field3 === "value3", "field3 not set correctly"); + console.assert(hashValue.get(["field4"]).field4 === "value4", "field4 not set correctly"); + + // Test get method + var retrieved = h.get(["field1", "field2"]); + console.assert(retrieved.field1 === "value1", "get method failed for field1"); + console.assert(retrieved.field2 === "value2", "get method failed for field2"); + + // Test exists method + var exists = h.exists(["field1", "fieldX"]); + console.assert(exists.field1 === true, "exists method failed for field1"); + console.assert(exists.fieldX === false, "exists method failed for fieldX"); + + // Test setnx method + var setnxCount = h.setnx({ + "field1": "new_value1", // Should not overwrite + "field5": "value5" // Should set + }); + console.assert(setnxCount === 1, "setnx did not set the correct number of fields"); + console.assert(h.get(["field1"]).field1 === "value1", "setnx overwrote field1"); + console.assert(h.get(["field5"]).field5 === "value5", "setnx failed to set field5"); + + // Test del method + var delCount = h.del(["field2", "field3"]); + console.assert(delCount === 2, "del did not delete the correct number of fields"); + console.assert(h.exists(["field2"]).field2 === false, "del failed to delete field2"); + console.assert(h.exists(["field3"]).field3 === false, "del failed to delete field3"); + + // Test len method + console.assert(h.len() === 3, "len method returned incorrect value"); + + // Retrieve and verify all remaining fields + var remainingFields = h.all(); + console.assert(remainingFields.field1 === "value1", "field1 missing after deletion"); + console.assert(remainingFields.field4 === "value4", "field4 missing after deletion"); + console.assert(remainingFields.field5 === "value5", "field5 missing after deletion"); + + // Return RESP response + return "+OK\r\n"; +} \ No newline at end of file diff --git a/internal/volumes/modules/js/list.js b/internal/volumes/modules/js/list.js new file mode 100644 index 0000000..922ee2e --- /dev/null +++ b/internal/volumes/modules/js/list.js @@ -0,0 +1,128 @@ + +// The keyword to trigger the command +var command = "JS.LIST" + +// The string array of categories this command belongs to. +// This array can contain both built-in categories and new custom categories. +var categories = ["list", "write", "fast"] + +// The description of the command. +var description = "(JS.LIST key) This is an example of working with SugarDB lists in js scripts." + +// Whether the command should be synced across the RAFT cluster. +var sync = true + +/** + * keyExtractionFunc is a function that extracts the keys from the command and returns them to SugarDB.keyExtractionFunc + * The returned data from this function is used in the Access Control Layer to determine if the current connection is + * authorized to execute this command. The function must return a table that specifies which keys in this command + * are read keys and which ones are write keys. + * Example return: {readKeys: ["key1", "key2"], writeKeys: ["key3", "key4", "key5"]} + * + * 1. "command" is a string array representing the command that triggered this key extraction function. + * + * 2. "args" is a string array of the modifier args that were passed when loading the module into SugarDB. + * These args are passed to the key extraction function everytime it's invoked. + */ +function keyExtractionFunc(command, args) { + if (command.length !== 2) { + throw "wrong number of args, expected 4." + } + return { + "readKeys": [], + "writeKeys": [command[1]] + } +} + +/** + * handlerFunc is the command's handler function. The function is passed some arguments that allow it to interact with + * SugarDB. The function must return a valid RESP response or throw an error. + * The handler function accepts the following args: + * + * 1. "context" is a table that contains some information about the environment this command has been executed in. + * Example: {protocol: 2, database: 0} + * This object contains the following properties: + * i) protocol - the protocol version of the client that executed the command (either 2 or 3). + * ii) database - the active database index of the client that executed the command. + * + * 2. "command" is the string array representing the command that triggered this handler function. + * + * 3. "keyExists" is a function that can be called to check if a list of keys exists in the SugarDB store database. + * This function accepts a string array of keys to check and returns a table with each key having a corresponding + * boolean value indicating whether it exists. + * Examples: + * i) Example invocation: keyExists(["key1", "key2", "key3"]) + * ii) Example return: {key1: true, key2: false, key3: true} + * + * 4. "getValues" is a function that can be called to retrieve values from the SugarDB store database. + * The function accepts a string array of keys whose values we would like to fetch, and returns a table with each key + * containing the corresponding value from the store. + * The possible data types for the values are: number, string, nil, hash, set, zset + * Examples: + * i) Example invocation: getValues(["key1", "key2", "key3"]) + * ii) Example return: {key1: 3.142, key2: nil, key3: "Pi"} + * + * 5. "setValues" is a function that can be called to set values in the active database in the SugarDB store. + * This function accepts a table with keys and the corresponding values to set for each key in the active database + * in the store. + * The accepted data types for the values are: number, string, nil, hash, set, zset. + * The setValues function does not return anything. + * Examples: + * i) Example invocation: setValues({key1: 3.142, key2: nil, key3: "Pi"}) + * + * 6. "args" is a string array of the modifier args passed to the module at load time. These args are passed to the + * handler everytime it's invoked. + */ +function handlerFunc(ctx, command, keysExist, getValues, setValues, args) { + // Helper function to compare lists + function compareLists(expected, actual) { + if (expected.length !== actual.length) { + return { + isValid: false, + errorMessage: "Length mismatch: expected " + expected.length + ", got " + actual.length + }; + } + for (var i = 0; i < expected.length; i++) { + if (expected[i] !== actual[i]) { + return { + isValid: false, + errorMessage: "Mismatch at index " + (i + 1) + ": expected " + expected[i] + ", got " + actual[i] + }; + } + } + return { isValid: true }; + } + + var key = command[1]; // Adjusted for JavaScript's 0-based indexing + + // First list to set + var initialList = ["apple", "banana", "cherry"]; + var setVals = {} + setVals[key] = initialList + setValues(setVals); + + // Retrieve and verify the first list + var retrievedValues = getValues([key]); + var retrievedList = retrievedValues[key]; + var result = compareLists(initialList, retrievedList); + if (!result.isValid) { + throw new Error(result.errorMessage); + } + + // Update the list with new values + var updatedList = ["orange", "grape", "watermelon"]; + setVals = {} + setVals[key] = updatedList + setValues(setVals); + + // Retrieve and verify the updated list + retrievedValues = getValues([key]); + retrievedList = retrievedValues[key]; + result = compareLists(updatedList, retrievedList); + if (!result.isValid) { + throw result.errorMessage; + } + + // If all assertions pass + return "+OK\r\n"; +} \ No newline at end of file diff --git a/internal/volumes/modules/js/set.js b/internal/volumes/modules/js/set.js new file mode 100644 index 0000000..f33436c --- /dev/null +++ b/internal/volumes/modules/js/set.js @@ -0,0 +1,177 @@ + +// The keyword to trigger the command +var command = "JS.SET" + +// The string array of categories this command belongs to. +// This array can contain both built-in categories and new custom categories. +var categories = ["set", "write", "fast"] + +// The description of the command. +var description = "(JS.SET key member [member ...]]) " + + "This is an example of working with SugarDB sets in js scripts." + +// Whether the command should be synced across the RAFT cluster. +var sync = true + +/** + * keyExtractionFunc is a function that extracts the keys from the command and returns them to SugarDB.keyExtractionFunc + * The returned data from this function is used in the Access Control Layer to determine if the current connection is + * authorized to execute this command. The function must return a table that specifies which keys in this command + * are read keys and which ones are write keys. + * Example return: {readKeys: ["key1", "key2"], writeKeys: ["key3", "key4", "key5"]} + * + * 1. "command" is a string array representing the command that triggered this key extraction function. + * + * 2. "args" is a string array of the modifier args that were passed when loading the module into SugarDB. + * These args are passed to the key extraction function everytime it's invoked. + */ +function keyExtractionFunc(command, args) { + // Check the length of the command array + if (command.length < 3) { + throw new Error("wrong number of args, expected 2 or more"); + } + // Return the result object + return { + readKeys: [], + writeKeys: [command[1], command[2], command[3]] + }; +} + +/** + * handlerFunc is the command's handler function. The function is passed some arguments that allow it to interact with + * SugarDB. The function must return a valid RESP response or throw an error. + * The handler function accepts the following args: + * + * 1. "context" is a table that contains some information about the environment this command has been executed in. + * Example: {protocol: 2, database: 0} + * This object contains the following properties: + * i) protocol - the protocol version of the client that executed the command (either 2 or 3). + * ii) database - the active database index of the client that executed the command. + * + * 2. "command" is the string array representing the command that triggered this handler function. + * + * 3. "keyExists" is a function that can be called to check if a list of keys exists in the SugarDB store database. + * This function accepts a string array of keys to check and returns a table with each key having a corresponding + * boolean value indicating whether it exists. + * Examples: + * i) Example invocation: keyExists(["key1", "key2", "key3"]) + * ii) Example return: {key1: true, key2: false, key3: true} + * + * 4. "getValues" is a function that can be called to retrieve values from the SugarDB store database. + * The function accepts a string array of keys whose values we would like to fetch, and returns a table with each key + * containing the corresponding value from the store. + * The possible data types for the values are: number, string, nil, hash, set, zset + * Examples: + * i) Example invocation: getValues(["key1", "key2", "key3"]) + * ii) Example return: {key1: 3.142, key2: nil, key3: "Pi"} + * + * 5. "setValues" is a function that can be called to set values in the active database in the SugarDB store. + * This function accepts a table with keys and the corresponding values to set for each key in the active database + * in the store. + * The accepted data types for the values are: number, string, nil, hash, set, zset. + * The setValues function does not return anything. + * Examples: + * i) Example invocation: setValues({key1: 3.142, key2: nil, key3: "Pi"}) + * + * 6. "args" is a string array of the modifier args passed to the module at load time. These args are passed to the + * handler everytime it's invoked. + */ +function handlerFunc(ctx, command, keysExist, getValues, setValues, args) { + // Ensure there are enough arguments + if (command.length < 3) { + throw "wrong number of arguments, expected at least 3"; + } + + // Extract the keys + var key1 = command[1]; + var key2 = command[2]; + var key3 = command[3]; + + // Create two sets for testing `move` and `subtract` + var set1 = new Set(["elem1", "elem2", "elem3"]); + var set2 = new Set(["elem4", "elem5"]); + + // Add elements to set1 + set1.add(["elem6", "elem7"]); + + // Check if an element exists in set1 + var containsElem1 = set1.contains("elem1"); + console.assert(containsElem1, "set1 does not contain expected element elem1") + var containsElemUnknown = set1.contains("unknown"); + console.assert(!containsElemUnknown, "set1 contains unknown element") + + // Get the size of set1 + var set1Cardinality = set1.cardinality(); + console.assert(set1Cardinality, "set1 cardinality expected 3, got " + set1Cardinality) + + // Remove elements from set1 + set1.remove(["elem1", "elem2"]); + var removedCount = 2; // Manually track removed count + + // Pop elements from set1 + set1.add(["elem1", "elem2"]); + var poppedElements = set1.pop(2); + console.assert( + poppedElements.length === 2, + "popped elements length must be 2, got " + poppedElements.length + ) + + // Get random elements from set1 + var randomElements = set1.random(2); + console.assert( + randomElements.length === 2, + "random elements length must be 2, got " + randomElements.length + ) + + + // Retrieve all elements from set1 + var allElements = set1.all(); + console.assert( + allElements.length === set1.cardinality(), + "all elements length must be " + set1.cardinality() + ", got " + allElements.length + ) + + // Move an element from set1 to set2 + set1.add(["elem3"]) + var moveSuccess = false; + if (set1.contains("elem3")) { + moveSuccess = set1.move(set2, "elem3"); + } + console.assert(moveSuccess, "element not moved from set1 to set2") + + // Verify that the element was moved + var set2ContainsMoved = set2.contains("elem3"); + console.assert(set2ContainsMoved, "set2 does not contain expected element after move") + var set1NoLongerContainsMoved = !set1.contains("elem3"); + console.assert(set1NoLongerContainsMoved, "set1 still contains unexpected element after move") + + // Subtract set2 from set1 + var resultSet = set1.subtract([set2]); + + // Store the modified sets + var setVals = {} + setVals[key1] = set1 + setVals[key2] = set2 + setVals[key3] = resultSet + setValues(setVals); + + // Retrieve the sets back to verify storage + var storedValues = getValues([key1, key2, key3]); + var storedSet1 = storedValues[key1]; + var storedSet2 = storedValues[key2]; + var storedResultSet = storedValues[key3]; + + // Perform additional checks to ensure consistency + if (!storedSet1 || storedSet1.size !== set1.size) { + throw "Stored set1 does not match the modified set1"; + } + if (!storedSet2 || storedSet2.size !== set2.size) { + throw "Stored set2 does not match the modified set2"; + } + if (!storedResultSet || storedResultSet.size !== resultSet.size) { + throw "Stored result set does not match the computed result set"; + } + + // If all operations succeed, return "OK" + return "+OK\r\n"; +} \ No newline at end of file diff --git a/internal/volumes/modules/js/zset.js b/internal/volumes/modules/js/zset.js new file mode 100644 index 0000000..de6b0b5 --- /dev/null +++ b/internal/volumes/modules/js/zset.js @@ -0,0 +1,170 @@ + +// The keyword to trigger the command +var command = "JS.ZSET" + +// The string array of categories this command belongs to. +// This array can contain both built-in categories and new custom categories. +var categories = ["sortedset", "write", "fast"] + +// The description of the command. +var description = "(JS.ZSET key member score [member score ...]) " + + "This is an example of working with SugarDB sorted sets in js scripts." + +// Whether the command should be synced across the RAFT cluster. +var sync = true + +/** + * keyExtractionFunc is a function that extracts the keys from the command and returns them to SugarDB.keyExtractionFunc + * The returned data from this function is used in the Access Control Layer to determine if the current connection is + * authorized to execute this command. The function must return a table that specifies which keys in this command + * are read keys and which ones are write keys. + * Example return: {readKeys: ["key1", "key2"], writeKeys: ["key3", "key4", "key5"]} + * + * 1. "command" is a string array representing the command that triggered this key extraction function. + * + * 2. "args" is a string array of the modifier args that were passed when loading the module into SugarDB. + * These args are passed to the key extraction function everytime it's invoked. + */ +function keyExtractionFunc(command, args) { + if (command.length < 4) { + throw "wrong number of args, expected 3 or more"; + } + return { + readKeys: [], + writeKeys: [command[1], command[2], command[3]] + }; +} + +/** + * handlerFunc is the command's handler function. The function is passed some arguments that allow it to interact with + * SugarDB. The function must return a valid RESP response or throw an error. + * The handler function accepts the following args: + * + * 1. "context" is a table that contains some information about the environment this command has been executed in. + * Example: {protocol: 2, database: 0} + * This object contains the following properties: + * i) protocol - the protocol version of the client that executed the command (either 2 or 3). + * ii) database - the active database index of the client that executed the command. + * + * 2. "command" is the string array representing the command that triggered this handler function. + * + * 3. "keyExists" is a function that can be called to check if a list of keys exists in the SugarDB store database. + * This function accepts a string array of keys to check and returns a table with each key having a corresponding + * boolean value indicating whether it exists. + * Examples: + * i) Example invocation: keyExists(["key1", "key2", "key3"]) + * ii) Example return: {key1: true, key2: false, key3: true} + * + * 4. "getValues" is a function that can be called to retrieve values from the SugarDB store database. + * The function accepts a string array of keys whose values we would like to fetch, and returns a table with each key + * containing the corresponding value from the store. + * The possible data types for the values are: number, string, nil, hash, set, zset + * Examples: + * i) Example invocation: getValues(["key1", "key2", "key3"]) + * ii) Example return: {key1: 3.142, key2: nil, key3: "Pi"} + * + * 5. "setValues" is a function that can be called to set values in the active database in the SugarDB store. + * This function accepts a table with keys and the corresponding values to set for each key in the active database + * in the store. + * The accepted data types for the values are: number, string, nil, hash, set, zset. + * The setValues function does not return anything. + * Examples: + * i) Example invocation: setValues({key1: 3.142, key2: nil, key3: "Pi"}) + * + * 6. "args" is a string array of the modifier args passed to the module at load time. These args are passed to the + * handler everytime it's invoked. + */ +function handlerFunc(ctx, command, keysExist, getValues, setValues, args) { + // Ensure there are enough arguments + if (command.length < 4) { + throw new Error("wrong number of arguments, expected at least 3"); + } + + var key1 = command[1]; + var key2 = "key2"; + var key3 = "key3"; + + // Create `ZMember` instances + var member1 = new ZMember({ value: "member1", score: 10 }); + var member2 = new ZMember({ value: "member2", score: 20 }); + var member3 = new ZMember({ value: "member3", score: 30 }); + + // Create a `ZSet` and add initial members + var zset1 = new ZSet(member1, member2); + + // Test `add` method with a new member + zset1.add([member3]); + + // Test `update` method by modifying an existing member + zset1.update([new ZMember({ value: "member1", score: 15 })]); + + // Test `remove` method + zset1.remove("member2"); + + // Test `cardinality` method + var zset1Cardinality = zset1.cardinality(); + console.assert(zset1Cardinality === 2, "zset1 expected cardinality is 2, got " + zset1Cardinality) + + // Test `contains` method + var containsMember3 = zset1.contains("member3"); + console.assert(containsMember3, "zset1 does not contain expected member member3") + var containsNonExistent = zset1.contains("nonexistent"); + console.assert(!containsNonExistent, "zset1 contains unexpected element 'nonexistent'") + + // Test `random` method + var randomMembers = zset1.random(2); + console.assert( + randomMembers.length === 2, + "zset1 random members result should be length 2, got " + randomMembers.length + ) + + // Test `all` method + var allMembers = zset1.all(); + console.assert( + allMembers.length === zset1.cardinality(), + "zset1 'all' did not return expected cardinality of " + zset1.cardinality + ", got " + allMembers.length + ) + + // Create another `ZSet` to test `subtract` manually + var zset2 = new ZSet(new ZMember({ value: "member3", score: 30 })); + // Subtract the zset2 from zset1 + var resultZSet = zset1.subtract([zset2]) + + // Store the `ZSet` objects in SugarDB + var setVals = {} + setVals[key1] = zset1 + setVals[key2] = zset2 + setVals[key3] = resultZSet + setValues(setVals); + + // Retrieve the stored `ZSet` objects to verify storage + var storedValues = getValues([key1, key2, key3]); + var storedZset1 = storedValues[key1]; + var storedZset2 = storedValues[key2]; + var storedZset3 = storedValues[key3]; + + // Perform consistency checks + if (!storedZset1 || storedZset1.cardinality() !== zset1.cardinality()) { + throw "Stored zset1 does not match the modified zset1"; + } + if (!storedZset2 || storedZset2.cardinality() !== zset2.cardinality()) { + throw "Stored zset2 does not match the modified zset2"; + } + if (!storedZset3 || storedZset3.cardinality() !== resultZSet.cardinality()) { + throw "Stored result zset does not match the computed result zset" + } + + // Test `ZMember` methods + var memberValue = member1.value(); + member1.value("updated_member1"); + var updatedValue = member1.value(); + console.assert(updatedValue !== memberValue, "updated member value still the same as old value") + + var memberScore = member1.score(); + member1.score(50); + var updatedScore = member1.score(); + console.assert(updatedScore !== memberScore, "updated member score still the same as old score") + + // Return an "OK" response + return "+OK\r\n"; +} \ No newline at end of file diff --git a/internal/volumes/modules/lua/example.lua b/internal/volumes/modules/lua/example.lua index 4bb4faf..2c4b0c6 100644 --- a/internal/volumes/modules/lua/example.lua +++ b/internal/volumes/modules/lua/example.lua @@ -27,9 +27,6 @@ Example return: {["readKeys"] = {"key1", "key2"}, ["writeKeys"] = {"key3", "key4 These args are passed to the key extraction function everytime it's invoked. ]] function keyExtractionFunc (command, args) - for k,v in pairs(args) do - print(k, v) - end if (#command ~= 1) then error("wrong number of args, expected 0") end diff --git a/internal/volumes/modules/lua/hash.lua b/internal/volumes/modules/lua/hash.lua index b46de7f..b8d2f07 100644 --- a/internal/volumes/modules/lua/hash.lua +++ b/internal/volumes/modules/lua/hash.lua @@ -28,9 +28,6 @@ Example return: {["readKeys"] = {"key1", "key2"}, ["writeKeys"] = {"key3", "key4 These args are passed to the key extraction function everytime it's invoked. ]] function keyExtractionFunc (command, args) - for k,v in pairs(args) do - print(k, v) - end if (#command < 2) then error("wrong number of args, expected 1") end diff --git a/internal/volumes/modules/lua/list.lua b/internal/volumes/modules/lua/list.lua index a18373b..77f8700 100644 --- a/internal/volumes/modules/lua/list.lua +++ b/internal/volumes/modules/lua/list.lua @@ -27,9 +27,6 @@ Example return: {["readKeys"] = {"key1", "key2"}, ["writeKeys"] = {"key3", "key4 These args are passed to the key extraction function everytime it's invoked. ]] function keyExtractionFunc (command, args) - for k,v in pairs(args) do - print(k, v) - end if (#command < 2) then error("wrong number of args, expected 1") end diff --git a/internal/volumes/modules/lua/set.lua b/internal/volumes/modules/lua/set.lua index 04fe3a9..df28eda 100644 --- a/internal/volumes/modules/lua/set.lua +++ b/internal/volumes/modules/lua/set.lua @@ -28,11 +28,8 @@ Example return: {["readKeys"] = {"key1", "key2"}, ["writeKeys"] = {"key3", "key4 These args are passed to the key extraction function everytime it's invoked. ]] function keyExtractionFunc (command, args) - for k,v in pairs(args) do - print(k, v) - end - if (#command < 4) then - error("wrong number of args, expected 3") + if (#command < 3) then + error("wrong number of args, expected 2 or more") end return { ["readKeys"] = {}, ["writeKeys"] = {command[2], command[3], command[4]} } end diff --git a/internal/volumes/modules/lua/zset.lua b/internal/volumes/modules/lua/zset.lua index 53b71f4..88278e6 100644 --- a/internal/volumes/modules/lua/zset.lua +++ b/internal/volumes/modules/lua/zset.lua @@ -28,10 +28,7 @@ Example return: {["readKeys"] = {"key1", "key2"}, ["writeKeys"] = {"key3", "key4 These args are passed to the key extraction function everytime it's invoked. ]] function keyExtractionFunc (command, args) - for k,v in pairs(args) do - print(k, v) - end - if (#command ~= 4) then + if (#command < 4) then error("wrong number of args, expected 2") end return { ["readKeys"] = {}, ["writeKeys"] = {command[2], command[3], command[4]} } diff --git a/sugardb/api_admin_test.go b/sugardb/api_admin_test.go index 7c2cbfb..381028f 100644 --- a/sugardb/api_admin_test.go +++ b/sugardb/api_admin_test.go @@ -391,6 +391,51 @@ func TestSugarDB_Plugins(t *testing.T) { want: "OK", wantErr: nil, }, + { + name: "9. Test JS module that handles primitive types", + path: path.Join("..", "internal", "volumes", "modules", "js", "example.js"), + expect: true, + args: []string{}, + cmd: []string{"JS.EXAMPLE"}, + want: "OK", + wantErr: nil, + }, + { + name: "10. Test JS module that handles hashes", + path: path.Join("..", "internal", "volumes", "modules", "js", "hash.js"), + expect: true, + args: []string{}, + cmd: []string{"JS.HASH", "JS_HASH_KEY1"}, + want: "OK", + wantErr: nil, + }, + { + name: "11. Test JS module that handles sets", + path: path.Join("..", "internal", "volumes", "modules", "js", "set.js"), + expect: true, + args: []string{}, + cmd: []string{"JS.SET", "JS_SET_KEY1", "member1"}, + want: "OK", + wantErr: nil, + }, + { + name: "12. Test JS module that handles sorted sets", + path: path.Join("..", "internal", "volumes", "modules", "js", "zset.js"), + expect: true, + args: []string{}, + cmd: []string{"JS.ZSET", "JS_ZSET_KEY1", "member1", "2.142"}, + want: "OK", + wantErr: nil, + }, + { + name: "13. Test JS module that handles lists", + path: path.Join("..", "internal", "volumes", "modules", "js", "list.js"), + expect: true, + args: []string{}, + cmd: []string{"JS.LIST", "JS_LIST_KEY1"}, + want: "OK", + wantErr: nil, + }, } for _, test := range tests { diff --git a/sugardb/modules.go b/sugardb/modules.go index c871a58..a1a56c9 100644 --- a/sugardb/modules.go +++ b/sugardb/modules.go @@ -69,7 +69,6 @@ func (server *SugarDB) getHandlerFuncParams(ctx context.Context, cmd []string, c SwapDBs: server.SwapDBs, GetServerInfo: server.GetServerInfo, AddScript: server.AddScript, - AddScriptCommand: server.AddScriptCommand, DeleteKey: func(ctx context.Context, key string) error { server.storeLock.Lock() defer server.storeLock.Unlock() @@ -160,8 +159,8 @@ func (server *SugarDB) handleCommand(ctx context.Context, message []byte, conn * } if conn != nil && server.acl != nil && !embedded { - // Authorize connection if it's provided and if ACL module is present - // and the embedded parameter is false. + // Authorize connection if it's provided and if ACL module is present and the embedded parameter is false. + // Skip the authorization if the command is being executed from embedded mode. if err = server.acl.AuthorizeConnection(conn, cmd, command, subCommand); err != nil { return nil, err } diff --git a/sugardb/plugin.go b/sugardb/plugin.go index fce2738..be79e9f 100644 --- a/sugardb/plugin.go +++ b/sugardb/plugin.go @@ -39,10 +39,12 @@ func (server *SugarDB) AddScriptCommand( var engine string if strings.HasSuffix(path, ".lua") { engine = "lua" + } else if strings.HasSuffix(path, ".js") { + engine = "js" } // Check if the engine is supported - supportedEngines := []string{"lua"} + supportedEngines := []string{"lua", "js"} if !slices.Contains(supportedEngines, strings.ToLower(engine)) { return fmt.Errorf("engine %s not supported, only %v engines are supported", engine, supportedEngines) } @@ -59,6 +61,8 @@ func (server *SugarDB) AddScriptCommand( switch strings.ToLower(engine) { case "lua": vm, commandName, categories, description, synchronize, commandType, err = generateLuaCommandInfo(path) + case "js": + vm, commandName, categories, description, synchronize, commandType, err = generateJSCommandInfo(path) } if err != nil { @@ -85,7 +89,7 @@ func (server *SugarDB) AddScriptCommand( Description: description, Sync: synchronize, Type: commandType, - KeyExtractionFunc: func(engine string, vm any, args []string) internal.KeyExtractionFunc { + KeyExtractionFunc: func(engine string, args []string) internal.KeyExtractionFunc { // Wrapper for the key function return func(cmd []string) (internal.KeyExtractionFuncResult, error) { switch strings.ToLower(engine) { @@ -96,21 +100,25 @@ func (server *SugarDB) AddScriptCommand( WriteKeys: make([]string, 0), }, nil case "lua": - return server.buildLuaKeyExtractionFunc(vm, cmd, args) + return server.luaKeyExtractionFunc(cmd, args) + case "js": + return server.jsKeyExtractionFunc(cmd, args) } } - }(engine, vm, args), - HandlerFunc: func(engine string, vm any, args []string) internal.HandlerFunc { + }(engine, args), + HandlerFunc: func(engine string, args []string) internal.HandlerFunc { // Wrapper that generates handler function return func(params internal.HandlerFuncParams) ([]byte, error) { switch strings.ToLower(engine) { default: return nil, fmt.Errorf("command %s handler not implemented", commandName) case "lua": - return server.buildLuaHandlerFunc(vm, commandName, args, params) + return server.luaHandlerFunc(commandName, args, params) + case "js": + return server.jsHandlerFunc(commandName, args, params) } } - }(engine, vm, args), + }(engine, args), } // Add the commands to the list of commands. @@ -131,7 +139,7 @@ func (server *SugarDB) LoadModule(path string, args ...string) error { server.commandsRWMut.Lock() defer server.commandsRWMut.Unlock() - for _, suffix := range []string{".lua"} { + for _, suffix := range []string{".lua", ".js"} { if strings.HasSuffix(path, suffix) { return server.AddScriptCommand(path, args) } diff --git a/sugardb/plugin_javascript.go b/sugardb/plugin_javascript.go new file mode 100644 index 0000000..cc02d6d --- /dev/null +++ b/sugardb/plugin_javascript.go @@ -0,0 +1,908 @@ +// Copyright 2024 Kelvin Clement Mwinuka +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package sugardb + +import ( + "errors" + "fmt" + "github.com/echovault/sugardb/internal" + "github.com/echovault/sugardb/internal/modules/hash" + "github.com/echovault/sugardb/internal/modules/set" + "github.com/echovault/sugardb/internal/modules/sorted_set" + "github.com/robertkrimen/otto" + "math" + "os" + "reflect" + "slices" + "strings" + "sync" + "sync/atomic" +) + +var ( + objectRegistry sync.Map + idCounter uint64 +) + +func registerObject(object interface{}) string { + id := fmt.Sprintf("id-%d", atomic.AddUint64(&idCounter, 1)) + objectRegistry.Store(id, object) + return id +} + +func getObjectById(id string) (interface{}, bool) { + return objectRegistry.Load(id) +} + +func clearObjectRegistry() { + atomic.StoreUint64(&idCounter, 0) + objectRegistry.Clear() +} + +func generateJSCommandInfo(path string) (*otto.Otto, string, []string, string, bool, string, error) { + // Initialize the Otto vm + vm := otto.New() + + // Load JS file + content, err := os.ReadFile(path) + if err != nil { + return nil, "", nil, "", false, "", fmt.Errorf("could not load javascript script file %s: %v", path, err) + } + if _, err = vm.Run(content); err != nil { + return nil, "", nil, "", false, "", fmt.Errorf("could not run javascript script file %s: %v", path, err) + } + + // Register hash data type + _ = vm.Set("Hash", func(call otto.FunctionCall) otto.Value { + // Initialize hash + h := hash.Hash{} + // If an object is passed then initialize the default values of the hash + if len(call.ArgumentList) > 0 { + args := call.Argument(0).Object() + for _, key := range args.Keys() { + value, _ := args.Get(key) + v, _ := value.ToString() + h[key] = hash.HashValue{Value: v} + } + } + + obj, _ := call.Otto.Object(`({})`) + buildHashObject(obj, h) + return obj.Value() + }) + + // Register set data type + _ = vm.Set("Set", func(call otto.FunctionCall) otto.Value { + // Initialize set + s := set.NewSet([]string{}) + // If an array is passed add the values to the set + if len(call.ArgumentList) > 0 { + args := call.Argument(0).Object() + var elems []string + for _, key := range args.Keys() { + value, _ := args.Get(key) + v, _ := value.ToString() + elems = append(elems, v) + } + s.Add(elems) + } + + obj, _ := call.Otto.Object(`({})`) + buildSetObject(obj, s) + return obj.Value() + }) + + // Register sorted set member data type + _ = vm.Set("ZMember", func(call otto.FunctionCall) otto.Value { + obj, _ := call.Otto.Object(`({})`) + + m := &sorted_set.MemberParam{} + if len(call.ArgumentList) != 1 { + panicWithFunctionCall(call, "expected an object with score and value properties") + } + arg := call.Argument(0).Object() + // Validate the object + if err = validateMemberParamObject(arg); err != nil { + panicWithFunctionCall(call, err.Error()) + } + // Get the value + value, _ := arg.Get("value") + m.Value = sorted_set.Value(value.String()) + // Get the score + s, _ := arg.Get("score") + score, _ := s.ToFloat() + m.Score = sorted_set.Score(score) + // Build the Otto member param object + buildMemberParamObject(obj, m) + return obj.Value() + }) + + // Register sorted set data type + _ = vm.Set("ZSet", func(call otto.FunctionCall) otto.Value { + // If default args are passed when initializing sorted set, add them to the member params + var params []sorted_set.MemberParam + for _, arg := range call.ArgumentList { + if !arg.IsObject() { + panicWithFunctionCall(call, "zset constructor args must be sorted set members") + } + id, _ := arg.Object().Get("__id") + o, exists := getObjectById(id.String()) + if !exists { + panicWithFunctionCall(call, "unknown object passed to zset constructor") + } + p, ok := o.(*sorted_set.MemberParam) + if !ok { + panicWithFunctionCall(call, "unknown object passed to createZSet function") + } + params = append(params, *p) + } + ss := sorted_set.NewSortedSet(params) + + obj, _ := call.Otto.Object(`({})`) + buildSortedSetObject(obj, ss) + return obj.Value() + }) + + // Get the command name + v, err := vm.Get("command") + if err != nil { + return nil, "", nil, "", false, "", fmt.Errorf("could not get javascript command %s: %v", path, err) + } + command, err := v.ToString() + if err != nil || len(command) <= 0 { + return nil, "", nil, "", false, "", fmt.Errorf("javascript command not found %s: %v", path, err) + } + + // Get the categories + v, err = vm.Get("categories") + if err != nil { + return nil, "", nil, "", false, "", fmt.Errorf("could not get javascript command categories %s: %v", path, err) + } + isArray, _ := vm.Run(`Array.isArray(categories)`) + if ok, _ := isArray.ToBoolean(); !ok { + return nil, "", nil, "", false, "", fmt.Errorf("javascript command categories is not an array %s: %v", path, err) + } + c, _ := v.Export() + categories := c.([]string) + + // Get the description + v, err = vm.Get("description") + if err != nil { + return nil, "", nil, "", false, "", fmt.Errorf("could not get javascript command description %s: %v", path, err) + } + description, err := v.ToString() + if err != nil || len(description) <= 0 { + return nil, "", nil, "", false, "", fmt.Errorf("javascript command description not found %s: %v", path, err) + } + + // Get the sync policy + v, err = vm.Get("sync") + if err != nil { + return nil, "", nil, "", false, "", fmt.Errorf("could not get javascript command sync policy %s: %v", path, err) + } + if !v.IsBoolean() { + return nil, "", nil, "", false, "", fmt.Errorf("javascript command sync policy is not a boolean %s: %v", path, err) + } + synchronize, _ := v.ToBoolean() + + // Set command type + commandType := "JS_SCRIPT" + + return vm, strings.ToLower(command), categories, description, synchronize, commandType, nil +} + +// jsKeyExtractionFunc executes the extraction function defined in the script and returns the result or error. +func (server *SugarDB) jsKeyExtractionFunc(cmd []string, args []string) (internal.KeyExtractionFuncResult, error) { + // Lock the script before executing the key extraction function. + script, ok := server.scriptVMs.Load(strings.ToLower(cmd[0])) + if !ok { + return internal.KeyExtractionFuncResult{}, fmt.Errorf("no lock found for script command %s", cmd[0]) + } + machine := script.(struct { + vm any + lock *sync.Mutex + }) + machine.lock.Lock() + defer machine.lock.Unlock() + + vm := machine.vm.(*otto.Otto) + + f, _ := vm.Get("keyExtractionFunc") + if !f.IsFunction() { + return internal.KeyExtractionFuncResult{}, errors.New("keyExtractionFunc is not a function") + } + v, err := f.Call(f, cmd, args) + if err != nil { + return internal.KeyExtractionFuncResult{}, err + } + if !v.IsObject() { + return internal.KeyExtractionFuncResult{}, errors.New("keyExtractionFunc return type is not an object") + } + data := v.Object() + + rk, _ := data.Get("readKeys") + rkv, _ := rk.Export() + readKeys, ok := rkv.([]string) + if !ok { + if _, ok = rkv.([]interface{}); !ok { + return internal.KeyExtractionFuncResult{}, fmt.Errorf("readKeys for command %s is not an array", cmd[0]) + } + readKeys = []string{} + } + + wk, _ := data.Get("writeKeys") + wkv, _ := wk.Export() + writeKeys, ok := wkv.([]string) + if !ok { + if _, ok = wkv.([]interface{}); !ok { + return internal.KeyExtractionFuncResult{}, fmt.Errorf("writeKeys for command %s is not an array", cmd[0]) + } + writeKeys = []string{} + } + + return internal.KeyExtractionFuncResult{ + Channels: make([]string, 0), + ReadKeys: readKeys, + WriteKeys: writeKeys, + }, nil +} + +// jsHandlerFunc executes the extraction function defined in the script nad returns the RESP response or error. +func (server *SugarDB) jsHandlerFunc(command string, args []string, params internal.HandlerFuncParams) ([]byte, error) { + // Lock the script before executing the key extraction function. + script, ok := server.scriptVMs.Load(strings.ToLower(command)) + if !ok { + return nil, fmt.Errorf("no lock found for script command %s", command) + } + machine := script.(struct { + vm any + lock *sync.Mutex + }) + machine.lock.Lock() + defer machine.lock.Unlock() + + vm := machine.vm.(*otto.Otto) + + f, _ := vm.Get("handlerFunc") + if !f.IsFunction() { + return nil, errors.New("handlerFunc is not a function") + } + v, err := f.Call( + f, + + // Build context + func() otto.Value { + obj, _ := vm.Object(`({})`) + _ = obj.Set("protocol", params.Context.Value("Protocol").(int)) + _ = obj.Set("database", params.Context.Value("Database").(int)) + return obj.Value() + }(), + + // Command + params.Command, + + // Build keysExist function + func(keys []string) otto.Value { + obj, _ := vm.Object(`({})`) + exists := server.keysExist(params.Context, keys) + for key, value := range exists { + _ = obj.Set(key, value) + } + return obj.Value() + }, + + // Build getValues function + func(keys []string) otto.Value { + obj, _ := vm.Object(`({})`) + values := server.getValues(params.Context, keys) + for key, value := range values { + switch value.(type) { + default: + _ = obj.Set(key, value) + case nil: + _ = obj.Set(key, otto.NullValue()) + case []string: + l, _ := vm.Object(`([])`) + for i, elem := range value.([]string) { + _ = l.Set(fmt.Sprintf("%d", i), elem) + } + _ = obj.Set(key, l.Value()) + case hash.Hash: + h, _ := vm.Object(`({})`) + buildHashObject(h, value.(hash.Hash)) + _ = obj.Set(key, h.Value()) + case *set.Set: + s, _ := vm.Object(`({})`) + buildSetObject(s, value.(*set.Set)) + _ = obj.Set(key, s.Value()) + case *sorted_set.SortedSet: + ss, _ := vm.Object(`({})`) + buildSortedSetObject(ss, value.(*sorted_set.SortedSet)) + _ = obj.Set(key, ss.Value()) + } + } + return obj.Value() + }, + + // Build setValues function + func(entries map[string]interface{}) { + values := make(map[string]interface{}) + for key, entry := range entries { + switch entry.(type) { + default: + panicInHandler(fmt.Sprintf("unknown type %s on key %s", reflect.TypeOf(entry).String(), key)) + case nil: + values[key] = nil + case string: + values[key] = internal.AdaptType(entry.(string)) + case int64: + values[key] = int(entry.(int64)) + case float64: + values[key] = entry.(float64) + case []string: + values[key] = entry.([]string) + case map[string]interface{}: + value, ok := entry.(map[string]interface{}) + if !ok || value["__id"] == nil { + panicInHandler(fmt.Sprintf("unknown object on key %s", key)) + } + obj, exists := getObjectById(value["__id"].(string)) + if !exists { + panicInHandler( + fmt.Sprintf( + "could not find object of id %s in the object registry on key %s", + value["__id"].(string), + key, + ), + ) + } + switch obj.(type) { + default: + panicInHandler(fmt.Sprintf("unknown type on key %s for command %s\n", key, command)) + case hash.Hash: + values[key] = obj.(hash.Hash) + case *set.Set: + values[key] = obj.(*set.Set) + case *sorted_set.SortedSet: + values[key] = obj.(*sorted_set.SortedSet) + } + } + } + if err := server.setValues(params.Context, values); err != nil { + panicInHandler(err.Error()) + } + }, + + // Args + args, + ) + if err != nil { + return nil, err + } + res, err := v.ToString() + + clearObjectRegistry() + + return []byte(res), err +} + +func buildHashObject(obj *otto.Object, h hash.Hash) { + _ = obj.Set("__type", "hash") + _ = obj.Set("__id", registerObject(h)) + _ = obj.Set("set", func(call otto.FunctionCall) otto.Value { + args := call.Argument(0).Object() + for _, key := range args.Keys() { + value, _ := args.Get(key) + v, _ := value.ToString() + h[key] = hash.HashValue{Value: v} + } + // Return changed count using the set data type + count, _ := otto.ToValue(set.NewSet(args.Keys()).Cardinality()) + return count + }) + _ = obj.Set("setnx", func(call otto.FunctionCall) otto.Value { + count := 0 + args := call.Argument(0).Object() + for _, key := range args.Keys() { + if _, exists := h[key]; exists { + continue + } + count += 1 + value, _ := args.Get(key) + v, _ := value.ToString() + h[key] = hash.HashValue{Value: v} + } + c, _ := otto.ToValue(count) + return c + }) + _ = obj.Set("get", func(call otto.FunctionCall) otto.Value { + result, _ := call.Otto.Object(`({})`) + for _, arg := range call.ArgumentList { + key, _ := arg.ToString() + value, _ := otto.ToValue(h[key].Value) + _ = result.Set(key, value) + } + return result.Value() + }) + _ = obj.Set("len", func(call otto.FunctionCall) otto.Value { + length, _ := otto.ToValue(len(h)) + return length + }) + _ = obj.Set("all", func(call otto.FunctionCall) otto.Value { + result, _ := call.Otto.Object(`({})`) + for key, value := range h { + v, _ := otto.ToValue(value.Value) + _ = result.Set(key, v) + } + return result.Value() + }) + _ = obj.Set("exists", func(call otto.FunctionCall) otto.Value { + result, _ := call.Otto.Object(`({})`) + for _, arg := range call.ArgumentList { + key, _ := arg.ToString() + _, ok := h[key] + exists, _ := call.Otto.ToValue(ok) + _ = result.Set(key, exists) + } + return result.Value() + }) + _ = obj.Set("del", func(call otto.FunctionCall) otto.Value { + count := 0 + for _, arg := range call.ArgumentList { + key, _ := arg.ToString() + if _, exists := h[key]; exists { + count += 1 + delete(h, key) + } + } + result, _ := otto.ToValue(count) + return result + }) +} + +func buildSetObject(obj *otto.Object, s *set.Set) { + _ = obj.Set("__type", "set") + _ = obj.Set("__id", registerObject(s)) + _ = obj.Set("add", func(call otto.FunctionCall) otto.Value { + args := call.Argument(0).Object() + if args == nil { + panicWithFunctionCall(call, "set add method argument not an object") + } + var elems []string + for _, key := range args.Keys() { + value, _ := args.Get(key) + v, _ := value.ToString() + elems = append(elems, v) + } + count := s.Add(elems) + result, _ := otto.ToValue(count) + return result + }) + _ = obj.Set("pop", func(call otto.FunctionCall) otto.Value { + count, _ := call.Argument(0).ToInteger() + popped := s.Pop(int(count)) + result, _ := call.Otto.Object(`([])`) + _ = result.Set("length", len(popped)) + for i, p := range popped { + _ = result.Set(fmt.Sprintf("%d", i), p) + } + return result.Value() + }) + _ = obj.Set("contains", func(call otto.FunctionCall) otto.Value { + value, _ := call.Argument(0).ToString() + result, _ := otto.ToValue(s.Contains(value)) + return result + }) + _ = obj.Set("cardinality", func(call otto.FunctionCall) otto.Value { + result, _ := otto.ToValue(s.Cardinality()) + return result + }) + _ = obj.Set("remove", func(call otto.FunctionCall) otto.Value { + args := call.Argument(0).Object() + if args == nil { + panicWithFunctionCall(call, "set remove method argument not an object") + } + var elems []string + for _, key := range args.Keys() { + value, _ := args.Get(key) + v, _ := value.ToString() + elems = append(elems, v) + } + result, _ := otto.ToValue(s.Remove(elems)) + return result + }) + _ = obj.Set("all", func(call otto.FunctionCall) otto.Value { + all := s.GetAll() + result, _ := call.Otto.Object(`([])`) + _ = result.Set("length", len(all)) + for i, e := range all { + _ = result.Set(fmt.Sprintf("%d", i), e) + } + return result.Value() + }) + _ = obj.Set("random", func(call otto.FunctionCall) otto.Value { + count, _ := call.Argument(0).ToInteger() + random := s.GetRandom(int(count)) + result, _ := call.Otto.Object(`([])`) + _ = result.Set("length", len(random)) + for i, r := range random { + _ = result.Set(fmt.Sprintf("%d", i), r) + } + return result.Value() + }) + _ = obj.Set("move", func(call otto.FunctionCall) otto.Value { + arg := call.Argument(0).Object() + elem := call.Argument(1).String() + id, _ := arg.Get("__id") + o, exists := getObjectById(id.String()) + if !exists { + panicWithFunctionCall(call, "move target set does not exist") + } + switch o.(type) { + default: + panicWithFunctionCall(call, "move target is not a set") + case *set.Set: + moved := s.Move(o.(*set.Set), elem) == 1 + result, _ := otto.ToValue(moved) + return result + } + return otto.NullValue() + }) + _ = obj.Set("subtract", func(call otto.FunctionCall) otto.Value { + extractSets := func(call otto.FunctionCall) ([]*set.Set, error) { + var sets []*set.Set + if len(call.ArgumentList) > 1 { + return sets, fmt.Errorf("set subtract method expects 1 arg, got %d", len(call.ArgumentList)) + } + arg1 := call.Argument(0).Object() + if arg1.Class() != "Array" { + return sets, errors.New("set subtract method expects the first argument to be an array") + } + for _, key := range arg1.Keys() { + // Check if the array element is a valid MemberParam type. + argMember, _ := arg1.Get(key) + if !argMember.IsObject() { + panicWithFunctionCall(call, "set subtract method first arg must be an array of valid sets") + } + // Get the member param from the object registry + argMemberObj := argMember.Object() + id, _ := argMemberObj.Get("__id") + o, exists := getObjectById(id.String()) + if !exists { + panicWithFunctionCall(call, "set subtract method first arg must be an array of valid sets") + } + m, ok := o.(*set.Set) + if !ok { + panicWithFunctionCall(call, "set subtract method first arg must be an array of valid sets") + } + sets = append(sets, m) + } + return sets, nil + } + sets, err := extractSets(call) + if err != nil { + panicWithFunctionCall(call, err.Error()) + } + diff := s.Subtract(sets) + result, _ := call.Otto.Object(`({})`) + buildSetObject(result, diff) + return result.Value() + }) +} + +func buildMemberParamObject(obj *otto.Object, m *sorted_set.MemberParam) { + _ = obj.Set("__type", "zmember") + _ = obj.Set("__id", registerObject(m)) + _ = obj.Set("value", func(call otto.FunctionCall) otto.Value { + switch len(call.ArgumentList) { + case 0: + // If no value is passed, then return the current value + v, _ := otto.ToValue(m.Value) + return v + case 1: + // If a value is passed, then set the value + v := call.Argument(0).String() + if len(v) <= 0 { + panicWithFunctionCall(call, "zset member value must be a non-empty string") + } + m.Value = sorted_set.Value(v) + default: + panicWithFunctionCall( + call, + fmt.Sprintf( + "expected either 0 or 1 args for value method of zmember, got %d", + len(call.ArgumentList), + ), + ) + } + return otto.NullValue() + }) + _ = obj.Set("score", func(call otto.FunctionCall) otto.Value { + switch len(call.ArgumentList) { + case 0: + s, _ := otto.ToValue(m.Score) + return s + case 1: + s, _ := call.Argument(0).ToFloat() + if math.IsNaN(s) { + panicWithFunctionCall(call, "zset member score must be a valid number") + } + m.Score = sorted_set.Score(s) + default: + panicWithFunctionCall( + call, + fmt.Sprintf( + "expected either 0 or 1 args for score method of zmember, got %d", + len(call.ArgumentList), + ), + ) + } + return otto.NullValue() + }) +} + +func validateMemberParamObject(obj *otto.Object) error { + value, _ := obj.Get("value") + if slices.Contains([]otto.Value{otto.UndefinedValue(), otto.NullValue()}, value) || + len(value.String()) == 0 { + return errors.New("zset member value must be a non-empty string") + } + s, _ := obj.Get("score") + if slices.Contains([]otto.Value{otto.UndefinedValue(), otto.NullValue()}, s) { + return errors.New("zset member must have a score") + } + score, _ := s.ToFloat() + if math.IsNaN(score) { + return errors.New("zset member score must be a valid number") + } + return nil +} + +func buildSortedSetObject(obj *otto.Object, ss *sorted_set.SortedSet) { + // Function to extract member param arguments for "add" and "update" methods. + extractMembers := func(call otto.FunctionCall) ([]sorted_set.MemberParam, error) { + var members []sorted_set.MemberParam + if !call.Argument(0).IsObject() { + return members, errors.New("zset add or update method expects the first argument to be an array") + } + arg1 := call.Argument(0).Object() + if arg1.Class() != "Array" { + return members, errors.New("zset add or update method expects the first argument to be an array") + } + for _, key := range arg1.Keys() { + // Check if the array element is a valid MemberParam type. + argMember, _ := arg1.Get(key) + if !argMember.IsObject() { + panicWithFunctionCall(call, "zset add or update method first arg must be an array of valid zmembers") + } + // Get the member param from the object registry + argMemberObj := argMember.Object() + id, _ := argMemberObj.Get("__id") + o, exists := getObjectById(id.String()) + if !exists { + panicWithFunctionCall(call, "zset add or update method first arg must be an array of valid zmembers") + } + m, ok := o.(*sorted_set.MemberParam) + if !ok { + panicWithFunctionCall(call, "zset add or update method first arg must be an array of valid zmembers") + } + members = append(members, *m) + } + return members, nil + } + + // Function to build and verify the update policy for "add" and "update" methods + type updateModifiers struct { + updatePolicy interface{} + comparison interface{} + changed interface{} + incr interface{} + } + extractUpdateModifiers := func(call otto.FunctionCall) (updateModifiers, error) { + modifiers := updateModifiers{updatePolicy: nil, comparison: nil, changed: nil, incr: nil} + if len(call.ArgumentList) < 2 { + return modifiers, nil + } + if !call.Argument(1).IsObject() { + return modifiers, errors.New("zset add or update method second arg must be an object") + } + arg2 := call.Argument(1).Object() + acceptedKeys := []string{"exists", "comparison", "changed", "incr"} + for _, key := range arg2.Keys() { + if !slices.Contains(acceptedKeys, key) { + return modifiers, fmt.Errorf( + "zset add or update method second arg unknown key '%s', expected %+v", key, acceptedKeys) + } + v, _ := arg2.Get(key) + switch key { + case "exists": + if !v.IsBoolean() { + return modifiers, errors.New("zset add or update method second arg 'exists' key should be a boolean") + } + exists, _ := v.ToBoolean() + if exists { + modifiers.updatePolicy = "xx" + } else { + modifiers.updatePolicy = "nx" + } + case "comparison": + modifiers.comparison = v.String() + case "changed": + if !v.IsBoolean() { + return modifiers, errors.New("zset add or update method second arg 'changed' key should be a boolean") + } + changed, _ := v.ToBoolean() + modifiers.changed = changed + case "incr": + if !v.IsBoolean() { + return modifiers, errors.New("zset add or update method second arg 'incr' key should be a boolean") + } + incr, _ := v.ToBoolean() + modifiers.incr = incr + } + } + return modifiers, nil + } + + _ = obj.Set("__type", "zset") + _ = obj.Set("__id", registerObject(ss)) + _ = obj.Set("add", func(call otto.FunctionCall) otto.Value { + if len(call.ArgumentList) < 1 || len(call.ArgumentList) > 2 { + panicWithFunctionCall(call, fmt.Sprintf("zset add method expects 1 or 2 args, got %d", len(call.ArgumentList))) + } + // Extract the member params from the first arg + members, err := extractMembers(call) + if err != nil { + panicWithFunctionCall(call, err.Error()) + } + // Extract the modifiers in the second arg, if they are passed. + modifiers, err := extractUpdateModifiers(call) + if err != nil { + panicWithFunctionCall(call, err.Error()) + } + count, err := ss.AddOrUpdate( + members, + modifiers.updatePolicy, + modifiers.comparison, + modifiers.changed, + modifiers.incr, + ) + if err != nil { + panicWithFunctionCall(call, err.Error()) + } + v, _ := call.Otto.ToValue(count) + return v + }) + _ = obj.Set("update", func(call otto.FunctionCall) otto.Value { + if len(call.ArgumentList) < 1 || len(call.ArgumentList) > 2 { + panicWithFunctionCall(call, fmt.Sprintf("zset update method expects 1 or 2 args, got %d", len(call.ArgumentList))) + } + // Extract the member params from the first arg + members, err := extractMembers(call) + if err != nil { + panicWithFunctionCall(call, err.Error()) + } + // Extract the modifiers in the second arg, if they are passed. + modifiers, err := extractUpdateModifiers(call) + if err != nil { + panicWithFunctionCall(call, err.Error()) + } + count, err := ss.AddOrUpdate( + members, + modifiers.updatePolicy, + modifiers.comparison, + modifiers.changed, + modifiers.incr, + ) + if err != nil { + panicWithFunctionCall(call, err.Error()) + } + v, _ := call.Otto.ToValue(count) + return v + }) + _ = obj.Set("remove", func(call otto.FunctionCall) otto.Value { + if len(call.ArgumentList) != 1 { + panicWithFunctionCall(call, fmt.Sprintf("zset remove method expects 1 ard, got %d", len(call.ArgumentList))) + } + value := sorted_set.Value(call.Argument(0).String()) + v, _ := call.Otto.ToValue(ss.Remove(value)) + return v + }) + _ = obj.Set("cardinality", func(call otto.FunctionCall) otto.Value { + value, _ := otto.ToValue(ss.Cardinality()) + return value + }) + _ = obj.Set("contains", func(call otto.FunctionCall) otto.Value { + if len(call.ArgumentList) != 1 { + panicWithFunctionCall(call, fmt.Sprintf("zset contains method expects 1 arg, got %d", len(call.ArgumentList))) + } + v, _ := otto.ToValue(ss.Contains(sorted_set.Value(call.Argument(0).String()))) + return v + }) + _ = obj.Set("random", func(call otto.FunctionCall) otto.Value { + if len(call.ArgumentList) != 1 { + panicWithFunctionCall(call, fmt.Sprintf("zset random method expects 1 arg, got %d", len(call.ArgumentList))) + } + count, _ := call.Argument(0).ToInteger() + var paramValues []otto.Value + for _, p := range ss.GetRandom(int(count)) { + m, _ := call.Otto.Object(`({})`) + buildMemberParamObject(m, &p) + paramValues = append(paramValues, m.Value()) + } + p, _ := call.Otto.ToValue(paramValues) + return p + }) + _ = obj.Set("all", func(call otto.FunctionCall) otto.Value { + var paramValues []otto.Value + for _, p := range ss.GetAll() { + m, _ := call.Otto.Object(`({})`) + buildMemberParamObject(m, &p) + paramValues = append(paramValues, m.Value()) + } + p, _ := call.Otto.ToValue(paramValues) + return p + }) + _ = obj.Set("subtract", func(call otto.FunctionCall) otto.Value { + extractZSets := func(call otto.FunctionCall) ([]*sorted_set.SortedSet, error) { + var zsets []*sorted_set.SortedSet + if len(call.ArgumentList) > 1 { + return zsets, fmt.Errorf("zset subtract method expects 1 arg, got %d", len(call.ArgumentList)) + } + arg1 := call.Argument(0).Object() + if arg1.Class() != "Array" { + return zsets, errors.New("zset subtract method expects the first argument to be an array") + } + for _, key := range arg1.Keys() { + // Check if the array element is a valid MemberParam type. + argMember, _ := arg1.Get(key) + if !argMember.IsObject() { + panicWithFunctionCall(call, "zset subtract method first arg must be an array of valid zsets") + } + // Get the member param from the object registry + argMemberObj := argMember.Object() + id, _ := argMemberObj.Get("__id") + o, exists := getObjectById(id.String()) + if !exists { + panicWithFunctionCall(call, "zset subtract method first arg must be an array of valid zsets") + } + m, ok := o.(*sorted_set.SortedSet) + if !ok { + panicWithFunctionCall(call, "zset subtract method first arg must be an array of valid zsets") + } + zsets = append(zsets, m) + } + return zsets, nil + } + zsets, err := extractZSets(call) + if err != nil { + panicWithFunctionCall(call, err.Error()) + } + diff := ss.Subtract(zsets) + result, _ := call.Otto.Object(`({})`) + buildSortedSetObject(result, diff) + return result.Value() + }) +} + +func panicWithFunctionCall(call otto.FunctionCall, message string) { + err, _ := call.Otto.ToValue(message) + panic(err) +} + +func panicInHandler(message string) { + value, _ := otto.ToValue(message) + panic(value) +} diff --git a/sugardb/plugin_lua.go b/sugardb/plugin_lua.go index a1fd490..1195cae 100644 --- a/sugardb/plugin_lua.go +++ b/sugardb/plugin_lua.go @@ -638,8 +638,21 @@ func generateLuaCommandInfo(path string) (*lua.LState, string, []string, string, return L, strings.ToLower(cn.String()), categories, d.String(), synchronize, commandType, nil } -func (server *SugarDB) buildLuaKeyExtractionFunc(vm any, cmd []string, args []string) (internal.KeyExtractionFuncResult, error) { - L := vm.(*lua.LState) +// luaKeyExtractionFunc executes the extraction function defined in the script and returns the result or error. +func (server *SugarDB) luaKeyExtractionFunc(cmd []string, args []string) (internal.KeyExtractionFuncResult, error) { + // Lock the script before executing the key extraction function + script, ok := server.scriptVMs.Load(strings.ToLower(cmd[0])) + if !ok { + return internal.KeyExtractionFuncResult{}, fmt.Errorf("no lock found for script command %s", cmd[0]) + } + machine := script.(struct { + vm any + lock *sync.Mutex + }) + machine.lock.Lock() + defer machine.lock.Unlock() + + L := machine.vm.(*lua.LState) // Create command table to pass to the Lua function command := L.NewTable() for i, s := range cmd { @@ -650,17 +663,7 @@ func (server *SugarDB) buildLuaKeyExtractionFunc(vm any, cmd []string, args []st for i, s := range args { funcArgs.RawSetInt(i+1, lua.LString(s)) } - // Lock the script before executing the key extraction function - script, ok := server.scriptVMs.Load(strings.ToLower(cmd[0])) - if !ok { - return internal.KeyExtractionFuncResult{}, fmt.Errorf("no lock found for script command %s", command) - } - machine := script.(struct { - vm any - lock *sync.Mutex - }) - machine.lock.Lock() - defer machine.lock.Unlock() + // Call the Lua key extraction function var err error _ = L.CallByParam(lua.P{ @@ -706,8 +709,21 @@ func (server *SugarDB) buildLuaKeyExtractionFunc(vm any, cmd []string, args []st } } -func (server *SugarDB) buildLuaHandlerFunc(vm any, command string, args []string, params internal.HandlerFuncParams) ([]byte, error) { - L := vm.(*lua.LState) +// luaHandlerFunc executes the extraction function defined in the script nad returns the RESP response or error. +func (server *SugarDB) luaHandlerFunc(command string, args []string, params internal.HandlerFuncParams) ([]byte, error) { + // Lock this script's execution key before executing the handler. + script, ok := server.scriptVMs.Load(command) + if !ok { + return nil, fmt.Errorf("no lock found for script command %s", command) + } + machine := script.(struct { + vm any + lock *sync.Mutex + }) + machine.lock.Lock() + defer machine.lock.Unlock() + + L := machine.vm.(*lua.LState) // Lua table context ctx := L.NewTable() ctx.RawSetString("protocol", lua.LNumber(params.Context.Value("Protocol").(int))) @@ -786,17 +802,7 @@ func (server *SugarDB) buildLuaHandlerFunc(vm any, command string, args []string for i, s := range args { funcArgs.RawSetInt(i+1, lua.LString(s)) } - // Lock this script's execution key before executing the handler - script, ok := server.scriptVMs.Load(command) - if !ok { - return nil, fmt.Errorf("no lock found for script command %s", command) - } - lock := script.(struct { - vm any - lock *sync.Mutex - }) - lock.lock.Lock() - defer lock.lock.Unlock() + // Call the lua handler function var err error _ = L.CallByParam(lua.P{ diff --git a/sugardb/sugardb.go b/sugardb/sugardb.go index d69ca2e..938471c 100644 --- a/sugardb/sugardb.go +++ b/sugardb/sugardb.go @@ -105,7 +105,7 @@ type SugarDB struct { commandsRWMut sync.RWMutex // Mutex used for modifying/reading the list of commands in the instance. commands []internal.Command // Holds the list of all commands supported by SugarDB. - // Each commands that's added using a script (e.g. lua), will have a lock associated with the command. + // Each commands that's added using a script (lua,js), will have a lock associated with the command. // Only one goroutine will be able to trigger a script-associated command at a time. This is because the VM state // for each of the commands is not thread safe. // This map's shape is map[string]struct{vm: any, lock: sync.Mutex} with the string key being the command name. @@ -639,7 +639,7 @@ func (server *SugarDB) ShutDown() { log.Println("shutting down script vms...") server.commandsRWMut.Lock() for _, command := range server.commands { - if slices.Contains([]string{"LUA_SCRIPT"}, command.Type) { + if slices.Contains([]string{"LUA_SCRIPT", "JS_SCRIPT"}, command.Type) { v, ok := server.scriptVMs.Load(command.Command) if !ok { continue