waymaker-client/proto/collections.proto

289 lines
6.8 KiB
Protocol Buffer

syntax = "proto3";
package waymaker.collections;
option go_package = "/apis/waymaker_collections";
// ============================================================
// WaymakerCollectionsService — Hash / Set / Queue data
// structures layered on streams. Each store name is the
// underlying stream name; subjects encode the
// (hash_key|set_key) + (field|member) tuple; member-existence
// uses a "1" marker payload (Set) or per-field values (Hash).
//
// Lives in its own proto + crate so the wire surface is
// composable; handlers continue to share `StreamsController`
// state in the server crate.
// ============================================================
service WaymakerCollectionsService {
// ----- Hash -------------------------------------------------
rpc CreateHashStore (CreateHashStoreRequest) returns (CreateHashStoreResponse);
rpc DeleteHashStore (DeleteHashStoreRequest) returns (DeleteHashStoreResponse);
rpc HashSet (HashSetRequest) returns (HashSetResponse);
rpc HashGet (HashGetRequest) returns (HashGetResponse);
rpc HashExists (HashExistsRequest) returns (HashExistsResponse);
rpc HashDelete (HashDeleteRequest) returns (HashDeleteResponse);
rpc HashGetAll (HashGetAllRequest) returns (HashGetAllResponse);
rpc HashFields (HashFieldsRequest) returns (HashFieldsResponse);
rpc HashLen (HashLenRequest) returns (HashLenResponse);
// ----- Set --------------------------------------------------
rpc CreateSetStore (CreateSetStoreRequest) returns (CreateSetStoreResponse);
rpc DeleteSetStore (DeleteSetStoreRequest) returns (DeleteSetStoreResponse);
rpc SetAdd (SetAddRequest) returns (SetAddResponse);
rpc SetRemove (SetRemoveRequest) returns (SetRemoveResponse);
rpc SetIsMember (SetIsMemberRequest) returns (SetIsMemberResponse);
rpc SetMembers (SetMembersRequest) returns (SetMembersResponse);
rpc SetLen (SetLenRequest) returns (SetLenResponse);
// ----- Queue ------------------------------------------------
rpc CreateQueue (CreateQueueRequest) returns (CreateQueueResponse);
rpc DeleteQueue (DeleteQueueRequest) returns (DeleteQueueResponse);
rpc QueuePush (QueuePushRequest) returns (QueuePushResponse);
rpc QueuePop (QueuePopRequest) returns (QueuePopResponse);
rpc QueueRange (QueueRangeRequest) returns (QueueRangeResponse);
rpc QueueLen (QueueLenRequest) returns (QueueLenResponse);
}
// ===== Hash ==================================================
message CreateHashStoreRequest {
string name = 1;
uint64 max_bytes = 2;
bool ephemeral = 3;
}
message CreateHashStoreResponse {
bool success = 1;
string result_code = 2;
string message = 3;
}
message DeleteHashStoreRequest { string name = 1; }
message DeleteHashStoreResponse {
bool success = 1;
string result_code = 2;
string message = 3;
}
message HashSetRequest {
string bucket = 1;
string hash_key = 2;
string field = 3;
bytes value = 4;
}
message HashSetResponse {
bool success = 1;
string result_code = 2;
string message = 3;
uint64 revision = 4;
}
message HashGetRequest {
string bucket = 1;
string hash_key = 2;
string field = 3;
}
message HashGetResponse {
bool success = 1;
string result_code = 2;
string message = 3;
optional bytes value = 4;
uint64 revision = 5;
}
message HashExistsRequest {
string bucket = 1;
string hash_key = 2;
string field = 3;
}
message HashExistsResponse {
bool success = 1;
string result_code = 2;
string message = 3;
bool exists = 4;
}
message HashDeleteRequest {
string bucket = 1;
string hash_key = 2;
string field = 3;
}
message HashDeleteResponse {
bool success = 1;
string result_code = 2;
string message = 3;
}
message HashGetAllRequest {
string bucket = 1;
string hash_key = 2;
}
message HashGetAllResponse {
bool success = 1;
string result_code = 2;
string message = 3;
repeated HashFieldEntry entries = 4;
}
message HashFieldEntry {
string field = 1;
bytes value = 2;
uint64 revision = 3;
}
message HashFieldsRequest {
string bucket = 1;
string hash_key = 2;
}
message HashFieldsResponse {
bool success = 1;
string result_code = 2;
string message = 3;
repeated string fields = 4;
}
message HashLenRequest {
string bucket = 1;
string hash_key = 2;
}
message HashLenResponse {
bool success = 1;
string result_code = 2;
string message = 3;
uint64 count = 4;
}
// ===== Set ====================================================
message CreateSetStoreRequest {
string name = 1;
uint64 max_bytes = 2;
bool ephemeral = 3;
}
message CreateSetStoreResponse {
bool success = 1;
string result_code = 2;
string message = 3;
}
message DeleteSetStoreRequest { string name = 1; }
message DeleteSetStoreResponse {
bool success = 1;
string result_code = 2;
string message = 3;
}
message SetAddRequest {
string bucket = 1;
string set_key = 2;
string member = 3;
}
message SetAddResponse {
bool success = 1;
string result_code = 2;
string message = 3;
}
message SetRemoveRequest {
string bucket = 1;
string set_key = 2;
string member = 3;
}
message SetRemoveResponse {
bool success = 1;
string result_code = 2;
string message = 3;
}
message SetIsMemberRequest {
string bucket = 1;
string set_key = 2;
string member = 3;
}
message SetIsMemberResponse {
bool success = 1;
string result_code = 2;
string message = 3;
bool is_member = 4;
}
message SetMembersRequest {
string bucket = 1;
string set_key = 2;
}
message SetMembersResponse {
bool success = 1;
string result_code = 2;
string message = 3;
repeated string members = 4;
}
message SetLenRequest {
string bucket = 1;
string set_key = 2;
}
message SetLenResponse {
bool success = 1;
string result_code = 2;
string message = 3;
uint64 count = 4;
}
// ===== Queue =================================================
message CreateQueueRequest {
string name = 1;
uint64 max_bytes = 2;
uint64 max_messages = 3;
bool ephemeral = 4;
}
message CreateQueueResponse {
bool success = 1;
string result_code = 2;
string message = 3;
}
message DeleteQueueRequest { string name = 1; }
message DeleteQueueResponse {
bool success = 1;
string result_code = 2;
string message = 3;
}
message QueuePushRequest {
string bucket = 1;
bytes value = 2;
}
message QueuePushResponse {
bool success = 1;
string result_code = 2;
string message = 3;
uint64 sequence = 4;
}
message QueuePopRequest {
string bucket = 1;
}
message QueuePopResponse {
bool success = 1;
string result_code = 2;
string message = 3;
optional bytes value = 4;
}
message QueueRangeRequest {
string bucket = 1;
uint64 from_sequence = 2;
uint64 limit = 3;
}
message QueueRangeResponse {
bool success = 1;
string result_code = 2;
string message = 3;
repeated bytes values = 4;
}
message QueueLenRequest { string bucket = 1; }
message QueueLenResponse {
bool success = 1;
string result_code = 2;
string message = 3;
uint64 count = 4;
}