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; }