in store/engine/postgresql/postgresql.go [181:220]
func (p *Postgresql) List(ctx context.Context, prefix string) ([]engine.Entry, error) {
prefixWithWildcard := prefix + "%"
query := "SELECT key, value from kv WHERE key LIKE $1"
rows, err := p.db.Query(query, prefixWithWildcard)
if err != nil {
return nil, err
}
defer rows.Close()
prefixLen := len(prefix)
entries := make([]engine.Entry, 0)
for rows.Next() {
var key string
var value []byte
err := rows.Scan(&key, &value)
if err != nil {
return nil, err
}
if key == prefix {
continue
}
key = strings.TrimLeft(key[prefixLen+1:], "/")
if strings.ContainsRune(key, '/') {
continue
}
entries = append(entries, engine.Entry{
Key: key,
Value: value,
})
}
if err := rows.Err(); err != nil {
return nil, err
}
return entries, nil
}