From bd751023c6208d00240d72cc45541a20bdc117df Mon Sep 17 00:00:00 2001 From: florian <f.spreckelsen@inidscale.com> Date: Mon, 9 Aug 2021 16:23:37 +0200 Subject: [PATCH] WIP: Add queries to Extern C --- include/ccaosdb.h | 2 ++ src/ccaosdb.cpp | 12 ++++++++++++ test/test_ccaosdb.cpp | 14 ++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/include/ccaosdb.h b/include/ccaosdb.h index 245d961..fb21d00 100644 --- a/include/ccaosdb.h +++ b/include/ccaosdb.h @@ -251,6 +251,8 @@ int caosdb_transaction_transaction_retrieve_by_id( caosdb_transaction_transaction *transaction, const char *id); int caosdb_transaction_transaction_retrieve_by_ids( caosdb_transaction_transaction *transaction, const char *ids[]); +int caosdb_transaction_transaction_query( + caosdb_transaction_transaction *transaction, const char *query); int caosdb_transaction_transaction_execute( caosdb_transaction_transaction *transaction); // TODO(fspreck) execute_asynchronously may be added as a separate diff --git a/src/ccaosdb.cpp b/src/ccaosdb.cpp index 0b1c7df..e847f61 100644 --- a/src/ccaosdb.cpp +++ b/src/ccaosdb.cpp @@ -269,6 +269,7 @@ ERROR_RETURN_CODE(GENERIC_ERROR, transaction->wrapped_transaction); return wrapped_transaction->RetrieveById(std::string(id)); }) + ERROR_RETURN_CODE( GENERIC_ERROR, int caosdb_transaction_transaction_retrieve_by_ids( @@ -284,6 +285,17 @@ ERROR_RETURN_CODE( return wrapped_transaction->RetrieveById(str_ids.begin(), str_ids.end()); }) +ERROR_RETURN_CODE(GENERIC_ERROR, + int caosdb_transaction_transaction_query( + caosdb_transaction_transaction *transaction, + const char *query), + { + auto *wrapped_transaction = + static_cast<caosdb::transaction::Transaction *>( + transaction->wrapped_transaction); + return wrapped_transaction->Query(std::string(query)); + }) + ERROR_RETURN_CODE(GENERIC_ERROR, int caosdb_transaction_transaction_execute( caosdb_transaction_transaction *transaction), diff --git a/test/test_ccaosdb.cpp b/test/test_ccaosdb.cpp index ff05fa0..9d06acd 100644 --- a/test/test_ccaosdb.cpp +++ b/test/test_ccaosdb.cpp @@ -108,3 +108,17 @@ TEST_F(test_ccaosdb, test_multi_retrieve) { caosdb_transaction_transaction_retrieve_by_ids(&multi_transaction, ids)); EXPECT_EQ(return_code, 0); } + +TEST_F(test_ccaosdb, test_query) { + caosdb_connection_connection connection; + caosdb_connection_connection_manager_get_connection(&connection, + "local-caosdb-admin"); + + caosdb_transaction_transaction transaction; + caosdb_connection_connection_create_transaction(&connection, + &transaction); + + int return_code(caosdb_transaction_transaction_query( + &transaction, "FIND ENTITY WITH id=123")); + EXPECT_EQ(return_code, 0); +} -- GitLab