diff --git a/proto/caosdb/entity/v1alpha1/main.proto b/proto/caosdb/entity/v1alpha1/main.proto index f920154ec81f126bdff8407c93741b78a25051e5..9446eb53e12301bae2942c421aff695b13eb2758 100644 --- a/proto/caosdb/entity/v1alpha1/main.proto +++ b/proto/caosdb/entity/v1alpha1/main.proto @@ -137,7 +137,56 @@ message ByIdRequest { // Response to a retrieve request message RetrieveResponse { // Payload of the retrieval - Entity entity = 1; + oneof query_response { + Entity entity = 1; + SelectQueryResult select_result = 3; + CountResult = 4; + } +} + +// Response to single retrieve request +message SingleRetrieveRequest { + // Retrieve by query or by id + QueryOrIdRequest retrieve_request = 1; +} + +// CaosDB Query +message Query { + // The string representation of the query, e.g. "FIND Person WITH name = Aisha" + string query = 1; +} + +message SelectQueryRows { + repeated string cells = 1; +} + +message SelectQueryResult { + SelectQueryRows header = 1; + repeated SelectQueryRows data_rows = 2; +} + + +message SingleRetrieveResponse { + RetrieveResponse retrieve_response = 1; + // Transaction errors. + repeated Message transaction_errors = 2; + // Transaction warnings. + repeated Message transaction_warnings = 3; + // Transaction info messages. + repeated Message transaction_infos = 4; +} + +message QueryOrIdRequest { + oneof wrapped_request { + // A single id + ByIdRequest by_id = 1; + // A query + QueryRequest query = 2; + } +} + +message SingleDeleteResponse { + IdResponse delete_response = 1; // Transaction errors. repeated Message errors = 2; // Transaction warnings. @@ -146,19 +195,117 @@ message RetrieveResponse { repeated Message infos = 4; } -// Wrapper for different kinds of retrievals (currently, only by ID). We need -// this in order to make a repeated field of these different kinds of -// retrievals. -message RetrieveRequest { - // Wrapped special kind of request. - oneof wrapped_request { - // A single retrieve - ByIdRequest by_id = 1; +message TransactionResponse { + oneof wrapped_response { + IdResponse delete_response = 1; + IdResponse update_response = 2; + RetrieveResponse retrieve_response = 3; + IdResponse insert_response = 4; } } +message SingleTransactionResponse { + TransactionResponse response = 1; + // Transaction errors. + repeated Message transaction_errors = 2; + // Transaction warnings. + repeated Message transaction_warnings = 3; + // Transaction info messages. + repeated Message transaction_infos = 4; +} + +message MultiTransactionResponse { + repeated TransactionResponse responses = 1; + // Transaction errors. + repeated Message transaction_errors = 2; + // Transaction warnings. + repeated Message transaction_warnings = 3; + // Transaction info messages. + repeated Message transaction_infos = 4; +} + +message IdResponse { + string id = 1; + // Entity errors. + repeated Message entity_errors = 2; + // Entity warnings. + repeated Message entity_warnings = 3; + // Entity info messages. + repeated Message entity_infos = 4; +} + +message SingleDeleteRequest { + // Delete by query or by id + QueryOrIdRequest retrieve_request = 1; +} + +message FullEntityRequest { + // Payload of the entity request + Entity entity = 1; +} + +message SingleUpdateRequest { + FullEntityRequest update_request = 1; +} + +message SingleInsertRequest { + FullEntityRequest insert_request = 1; +} + +message SingleInsertResponse { + // Reponse contains the id of the new entity. + IdResponse insert_response = 1; + // Transaction errors. + repeated Message transaction_errors = 2; + // Transaction warnings. + repeated Message transaction_warnings = 3; + // Transaction info messages. + repeated Message transaction_infos = 4; +} + +message SingleUpdateResponse { + // Reponse contains the id of the updated entity. + IdResponse update_response = 1; + // Transaction errors. + repeated Message transaction_errors = 2; + // Transaction warnings. + repeated Message transaction_warnings = 3; + // Transaction info messages. + repeated Message transaction_infos = 4; +} + +message MultiRetrieveRequest { + // Wrapped retrieve requests + repeated QueryOrIdRequest requests = 1; +} + +message MultiRetrieveResponse { + repeated RetrieveResponse response = 1; + // Transaction errors. + repeated Message transaction_errors = 2; + // Transaction warnings. + repeated Message transaction_warnings = 3; + // Transaction info messages. + repeated Message transaction_infos = 4; +} + // Entity Transaction Service service EntityTransactionService { // Issue a single retrieve request - rpc Retrieve(RetrieveRequest) returns (RetrieveResponse); + rpc SingleRetrieve(SingleRetrieveRequest) returns (SingleRetrieveResponse); + // Issue a single retrieve request + rpc SingleInsert(SingleInsertRequest) returns (SingleInsertResponse); + // Issue a single delete request + rpc SingleDelete(SingleDeleteRequest) returns (SingleDeleteResponse); + // Issue a single update request + rpc SingleUpdate(SingleUpdateRequest) returns (SingleUpdateResponse); + + // Issue a single retrieve request + rpc MultiRetrieve(MultiRetrieveRequest) returns (MultiRetrieveResponse); + // Issue a single retrieve request + /*rpc Insert(MultiInsertRequest) returns (MultiInsertResponse);*/ + /*// Issue a single delete request*/ + /*rpc Delete(MultiDeleteRequest) returns (MultiDeleteResponse);*/ + /*// Issue a single update request*/ + /*rpc Update(MultiUpdateRequest) returns (MultiUpdateResponse);*/ }