syntax = "proto3"; package go.micro.store; service Store { rpc Read(ReadRequest) returns (ReadResponse) {}; rpc Write(WriteRequest) returns (WriteResponse) {}; rpc Delete(DeleteRequest) returns (DeleteResponse) {}; rpc List(ListRequest) returns (stream ListResponse) {}; rpc Databases(DatabasesRequest) returns (DatabasesResponse) {}; rpc Tables(TablesRequest) returns (TablesResponse) {}; } message Record { // key of the record string key = 1; // value in the record bytes value = 2; // time.Duration (signed int64 nanoseconds) int64 expiry = 3; } message ReadOptions { bool prefix = 1; bool suffix = 2; uint64 limit = 3; uint64 offset = 4; } message ReadRequest { string key = 1; ReadOptions options = 2; } message ReadResponse { repeated Record records = 1; } message WriteOptions { // time.Time int64 expiry = 1; // time.Duration int64 ttl = 2; } message WriteRequest { Record record = 1; WriteOptions options = 2; } message WriteResponse {} message DeleteOptions {} message DeleteRequest { string key = 1; DeleteOptions options = 2; } message DeleteResponse {} message ListOptions { string prefix = 1; string suffix = 2; uint64 limit = 3; uint64 offset = 4; } message ListRequest { ListOptions options = 1; } message ListResponse { reserved 1; //repeated Record records = 1; repeated string keys = 2; } message DatabasesRequest {} message DatabasesResponse { repeated string databases = 1; } message TablesRequest { string database = 1; } message TablesResponse { repeated string tables = 1; }