stub namespaces now that i realize file trees arent namespaces

This commit is contained in:
bel
2021-08-05 21:51:50 -06:00
parent 9cda5ad071
commit f647664b54
6 changed files with 63 additions and 15 deletions

View File

@@ -33,6 +33,31 @@ func (m *Redis) Close() error {
return m.client.Close()
}
func (m *Redis) Namespaces() ([][]string, error) {
resp, err := m.client.Do("KEYS", "*")
if err != nil {
return nil, err
}
keys := map[string][]string{}
results, ok := resp.([]interface{})
if !ok {
return nil, ErrNotFound
}
for _, key := range results {
pieces := resolve.UnNamespace(fmt.Sprintf("%s", key))
if len(pieces) < 2 {
continue
}
pieces = pieces[:len(pieces)-1]
keys[fmt.Sprint(pieces)] = pieces
}
result := make([][]string, 0, len(keys))
for _, v := range keys {
result = append(result, v)
}
return result, nil
}
func (m *Redis) List(ns []string, limits ...string) ([]string, error) {
limits = resolve.Limits(limits)
limits[0] = resolve.Namespace(append(ns, limits[0]))
@@ -44,23 +69,23 @@ func (m *Redis) List(ns []string, limits ...string) ([]string, error) {
}
keys := []string{}
if results, ok := resp.([]interface{}); !ok {
results, ok := resp.([]interface{})
if !ok {
return nil, ErrNotFound
} else {
for i := range results {
_, ok := results[i].([]uint8)
if !ok {
return nil, errors.New("not a []byte key")
}
k := fmt.Sprintf("%s", results[i])
if k < limits[0] {
continue
}
if k > limits[1] {
break
}
keys = append(keys, k)
}
for i := range results {
_, ok := results[i].([]uint8)
if !ok {
return nil, errors.New("not a []byte key")
}
k := fmt.Sprintf("%s", results[i])
if k < limits[0] {
continue
}
if k > limits[1] {
break
}
keys = append(keys, k)
}
return keys, nil
}