Created outward-facing API for hash module commands

This commit is contained in:
Kelvin Mwinuka
2024-03-28 21:31:14 +08:00
parent ede32b481f
commit 1d15b89b87
6 changed files with 477 additions and 324 deletions

View File

@@ -1,268 +1,4 @@
mode: set
github.com/echovault/echovault/pkg/modules/hash/commands.go:30.105,32.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:32.16,34.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:36.2,39.25 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:39.25,41.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:43.2,43.38 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:43.38,45.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:47.2,47.33 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:47.33,49.17 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:49.17,51.4 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:52.3,53.59 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:53.59,55.4 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:56.3,56.59 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:59.2,59.51 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:59.51,61.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:62.2,65.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:65.9,67.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:69.2,70.36 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:70.36,71.42 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:71.42,72.26 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:72.26,75.5 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:76.4,76.12 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:78.3,79.13 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:81.2,81.55 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:81.55,83.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:85.2,85.51 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:88.108,90.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:90.16,92.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:94.2,97.33 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:97.33,99.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:101.2,101.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:101.52,103.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:104.2,107.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:107.9,109.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:111.2,114.31 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:114.31,116.19 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:116.19,118.12 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:120.3,120.34 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:120.34,122.12 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:124.3,124.31 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:124.31,126.12 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:128.3,128.35 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:128.35,131.12 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:133.3,133.32 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:136.2,136.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:139.111,141.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:141.16,143.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:145.2,148.33 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:148.33,150.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:152.2,152.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:152.52,154.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:155.2,158.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:158.9,160.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:162.2,165.31 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:165.31,167.19 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:167.19,169.12 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:171.3,171.34 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:171.34,173.12 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:175.3,175.35 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:175.35,178.12 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:180.3,180.31 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:180.31,182.12 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:184.3,184.18 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:187.2,187.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:190.109,192.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:192.16,194.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:196.2,198.33 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:198.33,200.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:202.2,202.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:202.52,204.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:205.2,208.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:208.9,210.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:212.2,213.27 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:213.27,214.32 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:214.32,216.12 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:218.3,218.33 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:218.33,221.12 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:223.3,223.29 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:223.29,225.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:228.2,228.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:231.114,233.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:233.16,235.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:237.2,240.19 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:240.19,242.17 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:242.17,244.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:245.3,245.13 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:245.13,247.4 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:248.3,248.12 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:251.2,252.19 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:252.19,253.46 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:253.46,255.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:255.9,257.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:260.2,260.33 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:260.33,262.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:264.2,264.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:264.52,266.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:267.2,270.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:270.9,272.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:275.2,275.24 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:275.24,277.17 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:277.17,279.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:280.3,280.34 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:280.34,282.18 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:282.18,283.36 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:283.36,285.14 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:287.5,287.37 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:287.37,290.14 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:292.5,292.33 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:292.33,294.14 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:298.3,298.26 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:302.2,303.29 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:303.29,305.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:308.2,310.46 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:310.46,314.16 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:314.16,315.59 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:315.59,317.5 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:321.2,322.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:322.16,324.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:325.2,325.38 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:325.38,327.17 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:327.17,328.41 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:328.41,330.13 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:332.4,332.42 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:332.42,335.13 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:337.4,337.38 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:337.38,339.13 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:344.2,344.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:347.108,349.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:349.16,351.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:353.2,355.33 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:355.33,357.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:359.2,359.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:359.52,361.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:362.2,365.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:365.9,367.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:369.2,369.55 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:372.109,374.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:374.16,376.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:378.2,380.33 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:380.33,382.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:384.2,384.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:384.52,386.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:387.2,390.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:390.9,392.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:394.2,395.29 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:395.29,397.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:399.2,399.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:402.111,404.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:404.16,406.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:408.2,414.47 5 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:414.47,416.17 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:416.17,418.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:419.3,419.21 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:420.8,422.17 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:422.17,424.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:425.3,425.19 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:428.2,428.33 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:428.33,429.62 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:429.62,431.4 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:432.3,434.48 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:434.48,436.57 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:436.57,438.5 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:439.4,439.96 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:440.9,442.57 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:442.57,444.5 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:445.4,445.60 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:449.2,449.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:449.52,451.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:452.2,455.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:455.9,457.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:459.2,459.24 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:459.24,461.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:463.2,463.28 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:464.10,465.69 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:466.11,468.48 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:468.48,470.4 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:470.9,472.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:473.15,475.48 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:475.48,477.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:477.9,479.4 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:482.2,482.55 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:482.55,484.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:486.2,486.40 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:486.40,488.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:490.2,491.47 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:494.111,496.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:496.16,498.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:500.2,502.33 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:502.33,504.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:506.2,506.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:506.52,508.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:509.2,512.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:512.9,514.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:516.2,517.33 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:517.33,519.34 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:519.34,521.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:522.3,522.35 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:522.35,525.4 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:526.3,526.31 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:526.31,528.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:531.2,531.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:534.111,536.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:536.16,538.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:540.2,543.33 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:543.33,545.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:547.2,547.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:547.52,549.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:550.2,553.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:553.9,555.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:557.2,557.24 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:557.24,559.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:561.2,561.30 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:564.108,566.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:566.16,568.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:570.2,573.33 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:573.33,575.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:577.2,577.51 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:577.51,579.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:580.2,583.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:583.9,585.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:587.2,589.31 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:589.31,590.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:590.25,593.4 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:596.2,596.55 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:596.55,598.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:600.2,600.51 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:603.33,711.2 1 0
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:22.50,23.18 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:23.18,25.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:26.2,26.22 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:29.52,30.18 1 0
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:30.18,32.3 1 0
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:33.2,33.22 1 0
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:36.50,37.18 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:37.18,39.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:40.2,40.22 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:43.53,44.18 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:44.18,46.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:47.2,47.22 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:50.51,51.19 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:51.19,53.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:54.2,54.21 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:57.56,58.34 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:58.34,60.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:61.2,61.19 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:61.19,63.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:64.2,64.22 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:67.50,68.19 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:68.19,70.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:71.2,71.21 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:74.51,75.19 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:75.19,77.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:78.2,78.21 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:81.53,82.19 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:82.19,84.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:85.2,85.22 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:88.53,89.19 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:89.19,91.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:92.2,92.21 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:95.53,96.19 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:96.19,98.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:99.2,99.22 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:102.50,103.18 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:103.18,105.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:106.2,106.22 1 1
github.com/echovault/echovault/pkg/modules/admin/commands.go:28.115,34.29 4 1
github.com/echovault/echovault/pkg/modules/admin/commands.go:34.29,35.54 1 1
github.com/echovault/echovault/pkg/modules/admin/commands.go:35.54,41.42 4 1
@@ -794,6 +530,270 @@ github.com/echovault/echovault/pkg/modules/generic/utils.go:106.3,108.17 3 1
github.com/echovault/echovault/pkg/modules/generic/utils.go:108.17,110.4 1 1
github.com/echovault/echovault/pkg/modules/generic/utils.go:111.3,112.46 2 1
github.com/echovault/echovault/pkg/modules/generic/utils.go:114.10,115.95 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:30.105,32.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:32.16,34.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:36.2,39.25 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:39.25,41.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:43.2,43.38 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:43.38,45.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:47.2,47.33 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:47.33,49.17 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:49.17,51.4 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:52.3,53.59 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:53.59,55.4 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:56.3,56.59 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:59.2,59.51 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:59.51,61.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:62.2,65.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:65.9,67.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:69.2,70.36 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:70.36,71.42 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:71.42,72.26 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:72.26,75.5 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:76.4,76.12 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:78.3,79.13 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:81.2,81.55 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:81.55,83.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:85.2,85.51 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:88.105,90.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:90.16,92.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:94.2,97.33 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:97.33,99.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:101.2,101.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:101.52,103.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:104.2,107.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:107.9,109.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:111.2,114.31 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:114.31,116.19 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:116.19,118.12 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:120.3,120.34 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:120.34,122.12 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:124.3,124.31 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:124.31,126.12 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:128.3,128.35 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:128.35,131.12 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:133.3,133.32 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:136.2,136.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:139.111,141.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:141.16,143.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:145.2,148.33 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:148.33,150.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:152.2,152.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:152.52,154.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:155.2,158.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:158.9,160.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:162.2,165.31 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:165.31,167.19 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:167.19,169.12 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:171.3,171.34 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:171.34,173.12 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:175.3,175.35 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:175.35,178.12 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:180.3,180.31 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:180.31,182.12 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:184.3,184.18 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:187.2,187.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:190.109,192.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:192.16,194.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:196.2,198.33 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:198.33,200.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:202.2,202.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:202.52,204.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:205.2,208.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:208.9,210.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:212.2,213.27 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:213.27,214.32 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:214.32,216.12 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:218.3,218.33 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:218.33,221.12 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:223.3,223.29 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:223.29,225.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:228.2,228.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:231.114,233.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:233.16,235.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:237.2,240.19 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:240.19,242.17 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:242.17,244.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:245.3,245.13 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:245.13,247.4 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:248.3,248.12 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:251.2,252.19 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:252.19,253.46 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:253.46,255.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:255.9,257.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:260.2,260.33 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:260.33,262.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:264.2,264.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:264.52,266.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:267.2,270.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:270.9,272.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:275.2,275.24 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:275.24,277.17 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:277.17,279.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:280.3,280.34 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:280.34,282.18 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:282.18,283.36 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:283.36,285.14 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:287.5,287.37 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:287.37,290.14 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:292.5,292.33 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:292.33,294.14 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:298.3,298.26 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:302.2,303.29 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:303.29,305.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:308.2,310.46 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:310.46,314.16 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:314.16,315.59 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:315.59,317.5 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:321.2,322.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:322.16,324.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:325.2,325.38 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:325.38,327.17 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:327.17,328.41 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:328.41,330.13 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:332.4,332.42 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:332.42,335.13 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:337.4,337.38 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:337.38,339.13 2 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:344.2,344.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:347.108,349.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:349.16,351.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:353.2,355.33 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:355.33,357.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:359.2,359.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:359.52,361.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:362.2,365.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:365.9,367.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:369.2,369.55 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:372.109,374.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:374.16,376.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:378.2,380.33 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:380.33,382.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:384.2,384.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:384.52,386.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:387.2,390.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:390.9,392.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:394.2,395.29 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:395.29,397.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:399.2,399.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:402.111,404.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:404.16,406.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:408.2,414.47 5 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:414.47,416.17 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:416.17,418.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:419.3,419.21 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:420.8,422.17 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:422.17,424.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:425.3,425.19 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:428.2,428.33 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:428.33,429.62 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:429.62,431.4 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:432.3,434.48 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:434.48,436.57 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:436.57,438.5 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:439.4,439.96 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:440.9,442.57 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:442.57,444.5 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:445.4,445.60 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:449.2,449.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:449.52,451.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:452.2,455.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:455.9,457.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:459.2,459.24 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:459.24,461.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:463.2,463.28 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:464.10,465.69 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:466.11,468.48 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:468.48,470.4 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:470.9,472.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:473.15,475.48 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:475.48,477.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:477.9,479.4 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:482.2,482.55 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:482.55,484.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:486.2,486.40 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:486.40,488.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:490.2,491.47 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:494.111,496.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:496.16,498.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:500.2,502.33 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:502.33,504.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:506.2,506.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:506.52,508.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:509.2,512.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:512.9,514.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:516.2,517.33 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:517.33,519.34 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:519.34,521.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:522.3,522.35 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:522.35,525.4 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:526.3,526.31 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:526.31,528.4 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:531.2,531.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:534.111,536.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:536.16,538.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:540.2,543.33 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:543.33,545.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:547.2,547.52 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:547.52,549.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:550.2,553.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:553.9,555.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:557.2,557.24 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:557.24,559.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:561.2,561.30 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:564.108,566.16 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:566.16,568.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:570.2,573.33 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:573.33,575.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:577.2,577.51 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:577.51,579.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:580.2,583.9 3 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:583.9,585.3 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:587.2,589.31 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:589.31,590.25 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:590.25,593.4 2 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:596.2,596.55 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:596.55,598.3 1 0
github.com/echovault/echovault/pkg/modules/hash/commands.go:600.2,600.51 1 1
github.com/echovault/echovault/pkg/modules/hash/commands.go:603.33,711.2 1 0
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:22.50,23.18 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:23.18,25.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:26.2,26.22 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:29.52,30.18 1 0
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:30.18,32.3 1 0
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:33.2,33.22 1 0
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:36.50,37.18 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:37.18,39.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:40.2,40.22 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:43.53,44.18 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:44.18,46.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:47.2,47.22 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:50.51,51.19 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:51.19,53.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:54.2,54.21 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:57.56,58.34 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:58.34,60.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:61.2,61.19 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:61.19,63.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:64.2,64.22 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:67.50,68.19 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:68.19,70.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:71.2,71.21 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:74.51,75.19 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:75.19,77.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:78.2,78.21 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:81.53,82.19 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:82.19,84.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:85.2,85.22 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:88.53,89.19 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:89.19,91.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:92.2,92.21 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:95.53,96.19 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:96.19,98.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:99.2,99.22 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:102.50,103.18 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:103.18,105.3 1 1
github.com/echovault/echovault/pkg/modules/hash/key_funcs.go:106.2,106.22 1 1
github.com/echovault/echovault/pkg/modules/list/commands.go:29.105,31.16 2 1
github.com/echovault/echovault/pkg/modules/list/commands.go:31.16,33.3 1 1
github.com/echovault/echovault/pkg/modules/list/commands.go:35.2,37.33 2 1

View File

@@ -246,7 +246,25 @@ func ParseIntegerResponse(b []byte) (int, error) {
return v.Integer(), nil
}
func ParseArrayResponse(b []byte) ([]string, error) {
func ParseFloatResponse(b []byte) (float64, error) {
r := resp.NewReader(bytes.NewReader(b))
v, _, err := r.ReadValue()
if err != nil {
return 0, err
}
return v.Float(), nil
}
func ParseBooleanResponse(b []byte) (bool, error) {
r := resp.NewReader(bytes.NewReader(b))
v, _, err := r.ReadValue()
if err != nil {
return false, err
}
return v.Bool(), nil
}
func ParseStringArrayResponse(b []byte) ([]string, error) {
r := resp.NewReader(bytes.NewReader(b))
v, _, err := r.ReadValue()
if err != nil {
@@ -257,7 +275,31 @@ func ParseArrayResponse(b []byte) ([]string, error) {
}
arr := make([]string, len(v.Array()))
for i, e := range v.Array() {
if e.IsNull() {
arr[i] = ""
continue
}
arr[i] = e.String()
}
return arr, nil
}
func ParseIntegerArrayResponse(b []byte) ([]int, error) {
r := resp.NewReader(bytes.NewReader(b))
v, _, err := r.ReadValue()
if err != nil {
return nil, err
}
if v.IsNull() {
return []int{}, nil
}
arr := make([]int, len(v.Array()))
for i, e := range v.Array() {
if e.IsNull() {
arr[i] = 0
continue
}
arr[i] = e.Integer()
}
return arr, nil
}

View File

@@ -69,9 +69,7 @@ func (server *EchoVault) SET(key, value string, options SETOptions) (string, err
cmd = append(cmd, "GET")
}
encoded := internal.EncodeCommand(cmd)
b, err := server.handleCommand(server.context, encoded, nil, false)
b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false)
if err != nil {
return "", err
}
@@ -86,9 +84,7 @@ func (server *EchoVault) MSET(kvPairs map[string]string) (string, error) {
cmd = append(cmd, []string{k, v}...)
}
encoded := internal.EncodeCommand(cmd)
b, err := server.handleCommand(server.context, encoded, nil, false)
b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false)
if err != nil {
return "", err
}
@@ -97,90 +93,66 @@ func (server *EchoVault) MSET(kvPairs map[string]string) (string, error) {
}
func (server *EchoVault) GET(key string) (string, error) {
encoded := internal.EncodeCommand([]string{"GET", key})
b, err := server.handleCommand(server.context, encoded, nil, false)
b, err := server.handleCommand(server.context, internal.EncodeCommand([]string{"GET", key}), nil, false)
if err != nil {
return "", err
}
return internal.ParseStringResponse(b)
}
func (server *EchoVault) MGET(keys []string) ([]string, error) {
encoded := internal.EncodeCommand(append([]string{"MGET"}, keys...))
b, err := server.handleCommand(server.context, encoded, nil, false)
func (server *EchoVault) MGET(keys ...string) ([]string, error) {
b, err := server.handleCommand(server.context, internal.EncodeCommand(append([]string{"MGET"}, keys...)), nil, false)
if err != nil {
return []string{}, err
}
return internal.ParseArrayResponse(b)
return internal.ParseStringArrayResponse(b)
}
func (server *EchoVault) DEL(keys []string) (int, error) {
encoded := internal.EncodeCommand(append([]string{"DEL"}, keys...))
b, err := server.handleCommand(server.context, encoded, nil, false)
func (server *EchoVault) DEL(keys ...string) (int, error) {
b, err := server.handleCommand(server.context, internal.EncodeCommand(append([]string{"DEL"}, keys...)), nil, false)
if err != nil {
return 0, err
}
return internal.ParseIntegerResponse(b)
}
func (server *EchoVault) PERSIST(key string) (int, error) {
encoded := internal.EncodeCommand([]string{"PERSIST", key})
b, err := server.handleCommand(server.context, encoded, nil, false)
b, err := server.handleCommand(server.context, internal.EncodeCommand([]string{"PERSIST", key}), nil, false)
if err != nil {
return 0, err
}
return internal.ParseIntegerResponse(b)
}
func (server *EchoVault) EXPIRETIME(key string) (int, error) {
encoded := internal.EncodeCommand([]string{"EXPIRETIME", key})
b, err := server.handleCommand(server.context, encoded, nil, false)
b, err := server.handleCommand(server.context, internal.EncodeCommand([]string{"EXPIRETIME", key}), nil, false)
if err != nil {
return 0, err
}
return internal.ParseIntegerResponse(b)
}
func (server *EchoVault) PEXPIRETIME(key string) (int, error) {
encoded := internal.EncodeCommand([]string{"PEXPIRETIME", key})
b, err := server.handleCommand(server.context, encoded, nil, false)
b, err := server.handleCommand(server.context, internal.EncodeCommand([]string{"PEXPIRETIME", key}), nil, false)
if err != nil {
return 0, err
}
return internal.ParseIntegerResponse(b)
}
func (server *EchoVault) TTL(key string) (int, error) {
encoded := internal.EncodeCommand([]string{"TTL", key})
b, err := server.handleCommand(server.context, encoded, nil, false)
b, err := server.handleCommand(server.context, internal.EncodeCommand([]string{"TTL", key}), nil, false)
if err != nil {
return 0, err
}
return internal.ParseIntegerResponse(b)
}
func (server *EchoVault) PTTL(key string) (int, error) {
encoded := internal.EncodeCommand([]string{"PTTL", key})
b, err := server.handleCommand(server.context, encoded, nil, false)
b, err := server.handleCommand(server.context, internal.EncodeCommand([]string{"PTTL", key}), nil, false)
if err != nil {
return 0, err
}
return internal.ParseIntegerResponse(b)
}
@@ -198,9 +170,7 @@ func (server *EchoVault) EXPIRE(key string, seconds int, options EXPIREOptions)
cmd = append(cmd, "GT")
}
encoded := internal.EncodeCommand(cmd)
b, err := server.handleCommand(server.context, encoded, nil, false)
b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false)
if err != nil {
return 0, err
}
@@ -222,9 +192,7 @@ func (server *EchoVault) PEXPIRE(key string, milliseconds int, options PEXPIREOp
cmd = append(cmd, "GT")
}
encoded := internal.EncodeCommand(cmd)
b, err := server.handleCommand(server.context, encoded, nil, false)
b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false)
if err != nil {
return 0, err
}
@@ -246,9 +214,7 @@ func (server *EchoVault) EXPIREAT(key string, unixSeconds int, options EXPIREATO
cmd = append(cmd, "GT")
}
encoded := internal.EncodeCommand(cmd)
b, err := server.handleCommand(server.context, encoded, nil, false)
b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false)
if err != nil {
return 0, err
}
@@ -270,9 +236,7 @@ func (server *EchoVault) PEXPIREAT(key string, unixMilliseconds int, options PEX
cmd = append(cmd, "GT")
}
encoded := internal.EncodeCommand(cmd)
b, err := server.handleCommand(server.context, encoded, nil, false)
b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false)
if err != nil {
return 0, err
}

View File

@@ -13,3 +13,150 @@
// limitations under the License.
package echovault
import (
"github.com/echovault/echovault/internal"
"strconv"
)
type HRANDFIELDOptions struct {
Count int
WithValues bool
}
func (server *EchoVault) HSET(key string, fieldValuePairs map[string]string) (int, error) {
cmd := []string{"HSET", key}
for k, v := range fieldValuePairs {
cmd = append(cmd, []string{k, v}...)
}
b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false)
if err != nil {
return 0, err
}
return internal.ParseIntegerResponse(b)
}
func (server *EchoVault) HSETNX(key string, fieldValuePairs map[string]string) (int, error) {
cmd := []string{"HSETNX", key}
for k, v := range fieldValuePairs {
cmd = append(cmd, []string{k, v}...)
}
b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false)
if err != nil {
return 0, err
}
return internal.ParseIntegerResponse(b)
}
func (server *EchoVault) HSTRLEN(key string, fields ...string) ([]int, error) {
cmd := append([]string{"HSTRLEN", key}, fields...)
b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false)
if err != nil {
return nil, err
}
return internal.ParseIntegerArrayResponse(b)
}
func (server *EchoVault) HVALS(key string) ([]string, error) {
b, err := server.handleCommand(server.context, internal.EncodeCommand([]string{"HVALS", key}), nil, false)
if err != nil {
return nil, err
}
return internal.ParseStringArrayResponse(b)
}
func (server *EchoVault) HRANDFIELD(key string, options HRANDFIELDOptions) ([]string, error) {
cmd := []string{"HRANDFIELD", key}
if options.Count == 0 {
cmd = append(cmd, strconv.Itoa(1))
} else {
cmd = append(cmd, strconv.Itoa(options.Count))
}
if options.WithValues {
cmd = append(cmd, "WITHVALUES")
}
b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false)
if err != nil {
return nil, err
}
return internal.ParseStringArrayResponse(b)
}
func (server *EchoVault) HLEN(key string) (int, error) {
b, err := server.handleCommand(server.context, internal.EncodeCommand([]string{"HLEN", key}), nil, false)
if err != nil {
return 0, err
}
return internal.ParseIntegerResponse(b)
}
func (server *EchoVault) HKEYS(key string) ([]string, error) {
b, err := server.handleCommand(server.context, internal.EncodeCommand([]string{"HKEYS", key}), nil, false)
if err != nil {
return nil, err
}
return internal.ParseStringArrayResponse(b)
}
func (server *EchoVault) HINCRBY(key, field string, increment int) (float64, error) {
b, err := server.handleCommand(
server.context,
internal.EncodeCommand([]string{"HINCRBY", key, field, strconv.Itoa(increment)}),
nil,
false,
)
if err != nil {
return 0, err
}
return internal.ParseFloatResponse(b)
}
func (server *EchoVault) HINCRBYFLOAT(key, field string, increment float64) (float64, error) {
b, err := server.handleCommand(
server.context,
internal.EncodeCommand([]string{"HINCRBYFLOAT", key, field, strconv.FormatFloat(increment, 'f', -1, 64)}),
nil,
false,
)
if err != nil {
return 0, err
}
return internal.ParseFloatResponse(b)
}
func (server *EchoVault) HGETALL(key string) ([]string, error) {
b, err := server.handleCommand(server.context, internal.EncodeCommand([]string{"HGETALL", key}), nil, false)
if err != nil {
return nil, err
}
return internal.ParseStringArrayResponse(b)
}
func (server *EchoVault) HEXISTS(key, field string) (bool, error) {
b, err := server.handleCommand(server.context, internal.EncodeCommand([]string{"HEXISTS", key, field}), nil, false)
if err != nil {
return false, err
}
return internal.ParseBooleanResponse(b)
}
func (server *EchoVault) HDEL(key string, fields ...string) (int, error) {
cmd := append([]string{"HDEL", key}, fields...)
b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false)
if err != nil {
return 0, err
}
return internal.ParseIntegerResponse(b)
}

View File

@@ -85,7 +85,7 @@ func handleHSET(ctx context.Context, cmd []string, server utils.EchoVault, _ *ne
return []byte(fmt.Sprintf(":%d\r\n", count)), nil
}
func handleHGET(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) {
func handleHGET(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) {
keys, err := hgetKeyFunc(cmd)
if err != nil {
return nil, err

View File

@@ -190,7 +190,7 @@ func Test_HandleHINCRBY(t *testing.T) {
key: "HincrbyKey2",
presetValue: nil,
command: []string{"HINCRBYFLOAT", "HincrbyKey2", "field1", "3.142"},
expectedResponse: "3.142",
expectedResponse: 3.142,
expectedValue: map[string]interface{}{"field1": 3.142},
expectedError: nil,
},
@@ -208,7 +208,7 @@ func Test_HandleHINCRBY(t *testing.T) {
key: "HincrbyKey4",
presetValue: map[string]interface{}{"field1": 3.142},
command: []string{"HINCRBYFLOAT", "HincrbyKey4", "field1", "3.142"},
expectedResponse: "6.284",
expectedResponse: 6.284,
expectedValue: map[string]interface{}{"field1": 6.284},
expectedError: nil,
},
@@ -299,9 +299,9 @@ func Test_HandleHINCRBY(t *testing.T) {
if rv.Integer() != test.expectedResponse {
t.Errorf("expected response \"%+v\", got \"%d\"", test.expectedResponse, rv.Integer())
}
case string:
if rv.String() != test.expectedResponse {
t.Errorf("expected response \"%+v\", got \"%s\"", test.expectedResponse, rv.String())
case float64:
if rv.Float() != test.expectedResponse {
t.Errorf("expected response \"%+v\", got \"%+v\"", test.expectedResponse, rv.Float())
}
}
// Check that all the values are what is expected