pomerium/pkg/storage/storage.go
2020-07-15 10:30:37 +07:00

32 lines
951 B
Go

// Package storage provide generic interface to interact with storage backend.
package storage
import (
"context"
"time"
"google.golang.org/protobuf/types/known/anypb"
"github.com/pomerium/pomerium/pkg/grpc/databroker"
)
// Backend is the interface required for a storage backend.
type Backend interface {
// Put is used to insert or update a record.
Put(ctx context.Context, id string, data *anypb.Any) error
// Get is used to retrieve a record.
Get(ctx context.Context, id string) *databroker.Record
// GetAll is used to retrieve all the records.
GetAll(ctx context.Context) []*databroker.Record
// List is used to retrieve all the records since a version.
List(ctx context.Context, sinceVersion string) []*databroker.Record
// Delete is used to mark a record as deleted.
Delete(ctx context.Context, id string) error
// ClearDeleted is used clear marked delete records.
ClearDeleted(ctx context.Context, cutoff time.Time)
}