Skip to content

Commit

Permalink
Merge pull request #63 from brotherlogic/adder
Browse files Browse the repository at this point in the history
  • Loading branch information
brotherlogic committed Jan 3, 2024
2 parents 2159cc5 + 1d780db commit e5b9322
Showing 1 changed file with 23 additions and 18 deletions.
41 changes: 23 additions & 18 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,27 +60,32 @@ func (s *Server) Write(ctx context.Context, req *pb.WriteRequest) (*pb.WriteResp
}

func (s *Server) GetKeys(ctx context.Context, req *pb.GetKeysRequest) (*pb.GetKeysResponse, error) {
t := time.Now()
keys, err := s.rdb.Keys(ctx, fmt.Sprintf("%v*", req.GetPrefix())).Result()
if err != nil {
log.Printf("Failed to read keys (%v) in %v", req.GetPrefix(), time.Since(t))
return nil, fmt.Errorf("database error reading keys %w", err)
}

var akeys []string
for _, key := range keys {
if req.GetAllKeys() || strings.Count(key, "/") == strings.Count(req.GetPrefix(), "/") {
valid := true
for _, suffix := range req.GetAvoidSuffix() {
if strings.HasSuffix(key, suffix) {
valid = false
var cursor uint64
t := time.Now()
for {
iter := s.rdb.Scan(ctx, cursor, fmt.Sprintf("%v*", req.GetPrefix()), 0).Iterator()

for iter.Next(ctx) {
key := iter.Val()
if req.GetAllKeys() || strings.Count(key, "/") == strings.Count(req.GetPrefix(), "/") {
valid := true
for _, suffix := range req.GetAvoidSuffix() {
if strings.HasSuffix(key, suffix) {
valid = false
}
}
if valid {
akeys = append(akeys, key)
}
} else {
log.Printf("dropping %v -> %v vs %v (%v)", key, strings.Count(key, "/"), strings.Count(req.GetPrefix(), "/"), req.GetPrefix())
}
if valid {
akeys = append(akeys, key)
}
} else {
log.Printf("dropping %v -> %v vs %v (%v)", key, strings.Count(key, "/"), strings.Count(req.GetPrefix(), "/"), req.GetPrefix())
}

if err := iter.Err(); err != nil {
log.Printf("Failed to read keys (%v) in %v", req.GetPrefix(), time.Since(t))
return nil, fmt.Errorf("database error reading keys %w", err)
}
}

Expand Down

0 comments on commit e5b9322

Please sign in to comment.