databroker: add list types method (#3937)

* databroker: add list types method

* fix test

* Update pkg/storage/redis/redis.go

Co-authored-by: Denis Mishin <dmishin@pomerium.com>

---------

Co-authored-by: Denis Mishin <dmishin@pomerium.com>
This commit is contained in:
Caleb Doxsey 2023-02-03 13:16:28 -07:00 committed by GitHub
parent 424b743b11
commit 7895bf431f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 495 additions and 232 deletions

View file

@ -4,12 +4,14 @@ package inmemory
import (
"context"
"fmt"
"sort"
"sync"
"sync/atomic"
"time"
"github.com/google/btree"
"github.com/rs/zerolog"
"golang.org/x/exp/maps"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/timestamppb"
@ -186,6 +188,16 @@ func (backend *Backend) Lease(_ context.Context, leaseName, leaseID string, ttl
return true, nil
}
// ListTypes lists the record types.
func (backend *Backend) ListTypes(ctx context.Context) ([]string, error) {
backend.mu.Lock()
keys := maps.Keys(backend.lookup)
backend.mu.Unlock()
sort.Strings(keys)
return keys, nil
}
// Put puts a record into the in-memory store.
func (backend *Backend) Put(ctx context.Context, records []*databroker.Record) (serverVersion uint64, err error) {
backend.mu.Lock()