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

@@ -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
}