Add proto files for store service and include generated code

This commit is contained in:
Juan Pablo Villafáñez
2022-01-31 09:35:40 +01:00
parent cce51fdd61
commit 2593ff0f70
11 changed files with 2554 additions and 1 deletions
@@ -0,0 +1,56 @@
syntax = "proto3";
package ocis.messages.store.v1;
option go_package = "github.com/owncloud/ocis/protogen/gen/ocis/messages/store/v1";
message Field {
// type of value e.g string, int, int64, bool, float64
string type = 1;
// the actual value
string value = 2;
}
message Record {
// key of the recorda
string key = 1;
// value in the record
bytes value = 2;
// time.Duration (signed int64 nanoseconds)
int64 expiry = 3;
// the associated metadata
map<string,Field> metadata = 4;
}
message ReadOptions {
string database = 1;
string table = 2;
bool prefix = 3;
bool suffix = 4;
uint64 limit = 5;
uint64 offset = 6;
map<string,Field> where = 7;
}
message WriteOptions {
string database = 1;
string table = 2;
// time.Time
int64 expiry = 3;
// time.Duration
int64 ttl = 4;
}
message DeleteOptions {
string database = 1;
string table = 2;
}
message ListOptions {
string database = 1;
string table = 2;
string prefix = 3;
string suffix = 4;
uint64 limit = 5;
uint64 offset = 6;
}
@@ -0,0 +1,87 @@
syntax = "proto3";
package ocis.services.store.v1;
option go_package = "github.com/owncloud/ocis/protogen/gen/ocis/service/store/v1";
import "ocis/messages/store/v1/store.proto";
import "protoc-gen-openapiv2/options/annotations.proto";
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = {
info: {
title: "ownCloud Infinite Scale store";
version: "1.0.0";
contact: {
name: "ownCloud GmbH";
url: "https://github.com/owncloud/ocis";
email: "support@owncloud.com";
};
license: {
name: "Apache-2.0";
url: "https://github.com/owncloud/ocis/blob/master/LICENSE";
};
};
schemes: HTTP;
schemes: HTTPS;
consumes: "application/json";
produces: "application/json";
external_docs: {
description: "Developer Manual";
url: "https://owncloud.dev/extensions/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 ReadRequest {
string key = 1;
ocis.messages.store.v1.ReadOptions options = 2;
}
message ReadResponse {
repeated ocis.messages.store.v1.Record records = 1;
}
message WriteRequest {
ocis.messages.store.v1.Record record = 1;
ocis.messages.store.v1.WriteOptions options = 2;
}
message WriteResponse {}
message DeleteRequest {
string key = 1;
ocis.messages.store.v1.DeleteOptions options = 2;
}
message DeleteResponse {}
message ListRequest {
ocis.messages.store.v1.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;
}