Skip to content
Snippets Groups Projects
Verified Commit 11e12f7e authored by Timm Fitschen's avatar Timm Fitschen
Browse files

WIP: insert delete

parent 1aba35eb
No related branches found
No related tags found
1 merge request!4ENH: Allow insertion and deletion of single entities
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
cmake_minimum_required(VERSION 3.14) cmake_minimum_required(VERSION 3.14)
set(libcaosdb_VERSION 0.0.6) set(libcaosdb_VERSION 0.0.7)
set(libcaosdb_COMPATIBLE_SERVER_VERSION_MAJOR 0) set(libcaosdb_COMPATIBLE_SERVER_VERSION_MAJOR 0)
set(libcaosdb_COMPATIBLE_SERVER_VERSION_MINOR 5) set(libcaosdb_COMPATIBLE_SERVER_VERSION_MINOR 5)
set(libcaosdb_COMPATIBLE_SERVER_VERSION_PATCH 0) set(libcaosdb_COMPATIBLE_SERVER_VERSION_PATCH 0)
...@@ -31,7 +31,7 @@ project(libcaosdb ...@@ -31,7 +31,7 @@ project(libcaosdb
DESCRIPTION "C and C++ client libraries for CaosDB" DESCRIPTION "C and C++ client libraries for CaosDB"
LANGUAGES CXX C) LANGUAGES CXX C)
set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_EXTENSIONS OFF) set(CMAKE_C_EXTENSIONS OFF)
......
...@@ -3,7 +3,7 @@ from conans import ConanFile, CMake, tools ...@@ -3,7 +3,7 @@ from conans import ConanFile, CMake, tools
class CaosdbConan(ConanFile): class CaosdbConan(ConanFile):
name = "caosdb" name = "caosdb"
version = "0.0.6" version = "0.0.7"
license = "AGPL-3.0-or-later" license = "AGPL-3.0-or-later"
author = "Timm C. Fitschen <t.fitschen@indiscale.com>" author = "Timm C. Fitschen <t.fitschen@indiscale.com>"
url = "https://gitlab.indiscale.com/caosdb/src/caosdb-cpplib.git" url = "https://gitlab.indiscale.com/caosdb/src/caosdb-cpplib.git"
......
...@@ -35,7 +35,7 @@ namespace caosdb::transaction { ...@@ -35,7 +35,7 @@ namespace caosdb::transaction {
using caosdb::entity::Entity; using caosdb::entity::Entity;
using ProtoEntity = caosdb::entity::v1alpha1::Entity; using ProtoEntity = caosdb::entity::v1alpha1::Entity;
using caosdb::entity::v1alpha1::EntityTransactionService; using caosdb::entity::v1alpha1::EntityTransactionService;
using caosdb::entity::v1alpha1::RetrieveRequest; using caosdb::entity::v1alpha1::SingleRetrieveRequest;
using caosdb::transaction::TransactionStatus; using caosdb::transaction::TransactionStatus;
class ResultSet { class ResultSet {
...@@ -62,7 +62,7 @@ private: ...@@ -62,7 +62,7 @@ private:
std::unique_ptr<ResultSet> result_set; std::unique_ptr<ResultSet> result_set;
TransactionStatus status = TransactionStatus::INITIAL(); TransactionStatus status = TransactionStatus::INITIAL();
std::shared_ptr<EntityTransactionService::Stub> service_stub; std::shared_ptr<EntityTransactionService::Stub> service_stub;
RetrieveRequest request; // TODO(tf) SingleRetrieveRequest request; // TODO(tf)
std::string error_message; std::string error_message;
public: public:
......
Subproject commit 4845aa8e479b85b50a130530bbc96a0cab4f8688 Subproject commit 72306a73676e6880a7164108ab0ab17b8978f7e1
...@@ -19,7 +19,8 @@ ...@@ -19,7 +19,8 @@
*/ */
#include "caosdb/transaction.h" #include "caosdb/transaction.h"
#include "caosdb/entity/v1alpha1/main.grpc.pb.h" // for EntityTransactionS... #include "caosdb/entity/v1alpha1/main.grpc.pb.h" // for EntityTransactionS...
#include "caosdb/entity/v1alpha1/main.pb.h" // for RetrieveRequest #include "caosdb/entity/v1alpha1/main.pb.h" // for SingleRetrieveRequest
#include "caosdb/status_code.h" // for StatusCode, AUTHEN...
#include "grpcpp/grpcpp.h" // for CompletionQueue #include "grpcpp/grpcpp.h" // for CompletionQueue
#include "grpcpp/impl/codegen/async_unary_call.h" // for ClientAsyncRespons... #include "grpcpp/impl/codegen/async_unary_call.h" // for ClientAsyncRespons...
#include "grpcpp/impl/codegen/client_context.h" // for ClientContext #include "grpcpp/impl/codegen/client_context.h" // for ClientContext
...@@ -27,7 +28,9 @@ ...@@ -27,7 +28,9 @@
#include "grpcpp/impl/codegen/status.h" // for Status #include "grpcpp/impl/codegen/status.h" // for Status
#include "grpcpp/impl/codegen/status_code_enum.h" // for StatusCode, UNAUTH... #include "grpcpp/impl/codegen/status_code_enum.h" // for StatusCode, UNAUTH...
#include <cassert> // for assert #include <cassert> // for assert
#include <map> // for map
#include <memory> // for allocator, unique_ptr #include <memory> // for allocator, unique_ptr
#include <stdexcept> // for out_of_range
#include <utility> // for move #include <utility> // for move
namespace caosdb { namespace caosdb {
...@@ -68,8 +71,8 @@ auto get_status_description(int code) -> const std::string & { ...@@ -68,8 +71,8 @@ auto get_status_description(int code) -> const std::string & {
namespace caosdb::transaction { namespace caosdb::transaction {
using caosdb::entity::v1alpha1::EntityTransactionService; using caosdb::entity::v1alpha1::EntityTransactionService;
using caosdb::entity::v1alpha1::RetrieveRequest; using caosdb::entity::v1alpha1::SingleRetrieveRequest;
using caosdb::entity::v1alpha1::RetrieveResponse; using caosdb::entity::v1alpha1::SingleRetrieveResponse;
using grpc::ClientAsyncResponseReader; using grpc::ClientAsyncResponseReader;
using ProtoEntity = caosdb::entity::v1alpha1::Entity; using ProtoEntity = caosdb::entity::v1alpha1::Entity;
using grpc::CompletionQueue; using grpc::CompletionQueue;
...@@ -85,9 +88,9 @@ Transaction::Transaction( ...@@ -85,9 +88,9 @@ Transaction::Transaction(
} }
auto Transaction::RetrieveById(const std::string &id) -> void { auto Transaction::RetrieveById(const std::string &id) -> void {
RetrieveRequest request; SingleRetrieveRequest request;
// this copies the id, so we're safe. // this copies the id, so we're safe.
request.mutable_by_id()->set_id(id); request.mutable_retrieve_request()->set_id(id);
this->request = request; this->request = request;
} }
...@@ -103,11 +106,12 @@ auto Transaction::ExecuteAsynchronously() noexcept -> void { ...@@ -103,11 +106,12 @@ auto Transaction::ExecuteAsynchronously() noexcept -> void {
grpc::Status grpc_status; grpc::Status grpc_status;
CompletionQueue cq; CompletionQueue cq;
RetrieveResponse response; SingleRetrieveResponse response;
grpc::ClientContext context; grpc::ClientContext context;
std::unique_ptr<ClientAsyncResponseReader<RetrieveResponse>> rpc( std::unique_ptr<ClientAsyncResponseReader<SingleRetrieveResponse>> rpc(
this->service_stub->PrepareAsyncRetrieve(&context, this->request, &cq)); this->service_stub->PrepareAsyncSingleRetrieve(&context, this->request,
&cq));
rpc->StartCall(); rpc->StartCall();
int tag = 1; int tag = 1;
...@@ -121,9 +125,6 @@ auto Transaction::ExecuteAsynchronously() noexcept -> void { ...@@ -121,9 +125,6 @@ auto Transaction::ExecuteAsynchronously() noexcept -> void {
assert(recv_tag == send_tag); assert(recv_tag == send_tag);
assert(ok); assert(ok);
// const grpc::Status grpc_status =
// this->service_stub->Retrieve(&context, this->request, &response);
if (!grpc_status.ok()) { if (!grpc_status.ok()) {
switch (grpc_status.error_code()) { switch (grpc_status.error_code()) {
case grpc::StatusCode::UNAUTHENTICATED: case grpc::StatusCode::UNAUTHENTICATED:
...@@ -141,7 +142,7 @@ auto Transaction::ExecuteAsynchronously() noexcept -> void { ...@@ -141,7 +142,7 @@ auto Transaction::ExecuteAsynchronously() noexcept -> void {
this->status = TransactionStatus::SUCCESS(); this->status = TransactionStatus::SUCCESS();
} }
auto *entity = response.release_entity(); auto *entity = response.mutable_retrieve_response()->release_entity();
this->result_set = std::make_unique<UniqueResult>(entity); this->result_set = std::make_unique<UniqueResult>(entity);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment