From cdbea281ed8022a14cc5a8a876bc9a9ff47b331c Mon Sep 17 00:00:00 2001 From: JohnDoe6345789 Date: Fri, 26 Dec 2025 06:17:12 +0000 Subject: [PATCH] docs: cpp,dbal,client (3 files) --- dbal/cpp/src/client.cpp | 6 ++++ dbal/cpp/tests/unit/client_test.cpp | 45 +++++++++++++++++++++++++++++ frontends/dbal/qml/conanfile.txt | 1 + 3 files changed, 52 insertions(+) diff --git a/dbal/cpp/src/client.cpp b/dbal/cpp/src/client.cpp index a829105ec..d150d132e 100644 --- a/dbal/cpp/src/client.cpp +++ b/dbal/cpp/src/client.cpp @@ -138,6 +138,12 @@ Result Client::moveComponent(const MoveComponentInput& input return entities::component::move(getStore(), input); } +Result> Client::searchComponents(const std::string& query, + const std::optional& page_id, + int limit) { + return entities::component::search(getStore(), query, page_id, limit); +} + Result Client::createWorkflow(const CreateWorkflowInput& input) { return entities::workflow::create(getStore(), input); } diff --git a/dbal/cpp/tests/unit/client_test.cpp b/dbal/cpp/tests/unit/client_test.cpp index e38e59cb5..b17593988 100644 --- a/dbal/cpp/tests/unit/client_test.cpp +++ b/dbal/cpp/tests/unit/client_test.cpp @@ -775,6 +775,51 @@ void test_component_validation() { std::cout << " ✓ Negative order rejected" << std::endl; } +void test_component_search() { + std::cout << "Testing component search..." << std::endl; + + dbal::ClientConfig config; + config.adapter = "sqlite"; + config.database_url = ":memory:"; + dbal::Client client(config); + + dbal::CreatePageInput pageInput; + pageInput.slug = "component-search"; + pageInput.title = "Component Search"; + pageInput.level = 1; + pageInput.layout = {{"row", "search"}}; + pageInput.is_active = true; + auto pageResult = client.createPage(pageInput); + assert(pageResult.isOk()); + std::string pageId = pageResult.value().id; + + dbal::CreateComponentHierarchyInput targetInput; + targetInput.page_id = pageId; + targetInput.component_type = "SearchButton"; + targetInput.order = 0; + targetInput.props = {{"payload", "find-me"}}; + auto targetResult = client.createComponent(targetInput); + assert(targetResult.isOk()); + std::string targetId = targetResult.value().id; + + auto typeSearch = client.searchComponents("searchbutton", pageId); + assert(typeSearch.isOk()); + assert(!typeSearch.value().empty()); + bool foundType = std::any_of(typeSearch.value().begin(), typeSearch.value().end(), [&](const dbal::ComponentHierarchy& entry) { + return entry.id == targetId; + }); + assert(foundType); + std::cout << " ✓ Component type search works" << std::endl; + + auto propSearch = client.searchComponents("find-me", pageId); + assert(propSearch.isOk()); + bool foundProp = std::any_of(propSearch.value().begin(), propSearch.value().end(), [&](const dbal::ComponentHierarchy& entry) { + return entry.id == targetId; + }); + assert(foundProp); + std::cout << " ✓ Component prop search works" << std::endl; +} + void test_workflow_crud() { std::cout << "Testing workflow CRUD operations..." << std::endl; diff --git a/frontends/dbal/qml/conanfile.txt b/frontends/dbal/qml/conanfile.txt index 5dfde36e1..da7adb98d 100644 --- a/frontends/dbal/qml/conanfile.txt +++ b/frontends/dbal/qml/conanfile.txt @@ -1,5 +1,6 @@ [requires] qt/6.7.0 +cpr/1.14.1 [generators] CMakeDeps