mirror of
https://github.com/pomerium/pomerium.git
synced 2025-05-02 03:46:29 +02:00
Currently, we're doing "sync" in databroker server. If we're going to support multiple databroker servers instance, this mechanism won't work. This commit moves the "sync" to storage backend, by adding new Watch method. The Watch method will return a channel for the caller. Everytime something happens inside the storage, we notify the caller by sending a message to this channel.
37 lines
1.2 KiB
Go
37 lines
1.2 KiB
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, error)
|
|
|
|
// GetAll is used to retrieve all the records.
|
|
GetAll(ctx context.Context) ([]*databroker.Record, error)
|
|
|
|
// List is used to retrieve all the records since a version.
|
|
List(ctx context.Context, sinceVersion string) ([]*databroker.Record, error)
|
|
|
|
// 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)
|
|
|
|
// Watch returns a channel to the caller. The channel is used to notify
|
|
// about changes that happen in storage. When ctx is finished, Watch will close
|
|
// the channel.
|
|
Watch(ctx context.Context) chan struct{}
|
|
}
|