mirror of
https://github.com/pomerium/pomerium.git
synced 2025-06-02 10:52:49 +02:00
* refactor backend, implement encrypted store * refactor in-memory store * wip * wip * wip * add syncer test * fix redis expiry * fix linting issues * fix test by skipping non-config records * fix backoff import * fix init issues * fix query * wait for initial sync before starting directory sync * add type to SyncLatest * add more log messages, fix deadlock in in-memory store, always return server version from SyncLatest * update sync types and tests * add redis tests * skip macos in github actions * add comments to proto * split getBackend into separate methods * handle errors in initVersion * return different error for not found vs other errors in get * use exponential backoff for redis transaction retry * rename raw to result * use context instead of close channel * store type urls as constants in databroker * use timestampb instead of ptypes * fix group merging not waiting * change locked names * update GetAll to return latest record version * add method to grpcutil to get the type url for a protobuf type
75 lines
1.8 KiB
Protocol Buffer
75 lines
1.8 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package databroker;
|
|
option go_package = "github.com/pomerium/pomerium/pkg/grpc/databroker";
|
|
|
|
import "google/protobuf/any.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
message Record {
|
|
uint64 version = 1;
|
|
string type = 2;
|
|
string id = 3;
|
|
google.protobuf.Any data = 4;
|
|
google.protobuf.Timestamp modified_at = 5;
|
|
google.protobuf.Timestamp deleted_at = 6;
|
|
}
|
|
message Versions {
|
|
// the server version indicates the version of the server storing the data
|
|
uint64 server_version = 1;
|
|
uint64 latest_record_version = 2;
|
|
}
|
|
|
|
message GetRequest {
|
|
string type = 1;
|
|
string id = 2;
|
|
}
|
|
message GetResponse { Record record = 1; }
|
|
|
|
message QueryRequest {
|
|
string type = 1;
|
|
string query = 2;
|
|
int64 offset = 3;
|
|
int64 limit = 4;
|
|
}
|
|
message QueryResponse {
|
|
repeated Record records = 1;
|
|
int64 total_count = 2;
|
|
}
|
|
|
|
message PutRequest { Record record = 1; }
|
|
message PutResponse {
|
|
uint64 server_version = 1;
|
|
Record record = 2;
|
|
}
|
|
|
|
message SyncRequest {
|
|
uint64 server_version = 1;
|
|
uint64 record_version = 2;
|
|
}
|
|
message SyncResponse {
|
|
uint64 server_version = 1;
|
|
Record record = 2;
|
|
}
|
|
|
|
message SyncLatestRequest { string type = 1; }
|
|
message SyncLatestResponse {
|
|
oneof response {
|
|
Record record = 1;
|
|
Versions versions = 2;
|
|
}
|
|
}
|
|
|
|
// The DataBrokerService stores key-value data.
|
|
service DataBrokerService {
|
|
// Get gets a record.
|
|
rpc Get(GetRequest) returns (GetResponse);
|
|
// Put saves a record.
|
|
rpc Put(PutRequest) returns (PutResponse);
|
|
// Query queries for records.
|
|
rpc Query(QueryRequest) returns (QueryResponse);
|
|
// Sync streams changes to records after the specified version.
|
|
rpc Sync(SyncRequest) returns (stream SyncResponse);
|
|
// SyncLatest streams the latest version of every record.
|
|
rpc SyncLatest(SyncLatestRequest) returns (stream SyncLatestResponse);
|
|
}
|