From 5d774bf4d210237317be375760c091b757a7a0e3 Mon Sep 17 00:00:00 2001 From: sdk-team Date: Tue, 26 Nov 2024 12:15:42 +0000 Subject: [PATCH] Add SmartqQueryAbility api. --- VERSION | 2 +- quickbi-public/CMakeLists.txt | 4 + .../quickbi-public/Quickbi_publicClient.h | 8 ++ .../model/SmartqQueryAbilityRequest.h | 54 +++++++++++++ .../model/SmartqQueryAbilityResult.h | 68 ++++++++++++++++ quickbi-public/src/Quickbi-publicClient.cc | 36 +++++++++ .../src/model/SmartqQueryAbilityRequest.cc | 72 +++++++++++++++++ .../src/model/SmartqQueryAbilityResult.cc | 78 +++++++++++++++++++ 8 files changed, 321 insertions(+), 1 deletion(-) create mode 100644 quickbi-public/include/alibabacloud/quickbi-public/model/SmartqQueryAbilityRequest.h create mode 100644 quickbi-public/include/alibabacloud/quickbi-public/model/SmartqQueryAbilityResult.h create mode 100644 quickbi-public/src/model/SmartqQueryAbilityRequest.cc create mode 100644 quickbi-public/src/model/SmartqQueryAbilityResult.cc diff --git a/VERSION b/VERSION index 36265b2df..1f60f44c9 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.36.2020 \ No newline at end of file +1.36.2021 \ No newline at end of file diff --git a/quickbi-public/CMakeLists.txt b/quickbi-public/CMakeLists.txt index 2e52f90a9..023987419 100644 --- a/quickbi-public/CMakeLists.txt +++ b/quickbi-public/CMakeLists.txt @@ -211,6 +211,8 @@ set(quickbi-public_public_header_model include/alibabacloud/quickbi-public/model/SetDataLevelPermissionRuleConfigResult.h include/alibabacloud/quickbi-public/model/SetDataLevelPermissionWhiteListRequest.h include/alibabacloud/quickbi-public/model/SetDataLevelPermissionWhiteListResult.h + include/alibabacloud/quickbi-public/model/SmartqQueryAbilityRequest.h + include/alibabacloud/quickbi-public/model/SmartqQueryAbilityResult.h include/alibabacloud/quickbi-public/model/UpdateDataLevelPermissionStatusRequest.h include/alibabacloud/quickbi-public/model/UpdateDataLevelPermissionStatusResult.h include/alibabacloud/quickbi-public/model/UpdateEmbeddedStatusRequest.h @@ -424,6 +426,8 @@ set(quickbi-public_src src/model/SetDataLevelPermissionRuleConfigResult.cc src/model/SetDataLevelPermissionWhiteListRequest.cc src/model/SetDataLevelPermissionWhiteListResult.cc + src/model/SmartqQueryAbilityRequest.cc + src/model/SmartqQueryAbilityResult.cc src/model/UpdateDataLevelPermissionStatusRequest.cc src/model/UpdateDataLevelPermissionStatusResult.cc src/model/UpdateEmbeddedStatusRequest.cc diff --git a/quickbi-public/include/alibabacloud/quickbi-public/Quickbi_publicClient.h b/quickbi-public/include/alibabacloud/quickbi-public/Quickbi_publicClient.h index 061d61bb0..91e931a89 100644 --- a/quickbi-public/include/alibabacloud/quickbi-public/Quickbi_publicClient.h +++ b/quickbi-public/include/alibabacloud/quickbi-public/Quickbi_publicClient.h @@ -212,6 +212,8 @@ #include "model/SetDataLevelPermissionRuleConfigResult.h" #include "model/SetDataLevelPermissionWhiteListRequest.h" #include "model/SetDataLevelPermissionWhiteListResult.h" +#include "model/SmartqQueryAbilityRequest.h" +#include "model/SmartqQueryAbilityResult.h" #include "model/UpdateDataLevelPermissionStatusRequest.h" #include "model/UpdateDataLevelPermissionStatusResult.h" #include "model/UpdateEmbeddedStatusRequest.h" @@ -526,6 +528,9 @@ namespace AlibabaCloud typedef Outcome SetDataLevelPermissionWhiteListOutcome; typedef std::future SetDataLevelPermissionWhiteListOutcomeCallable; typedef std::function&)> SetDataLevelPermissionWhiteListAsyncHandler; + typedef Outcome SmartqQueryAbilityOutcome; + typedef std::future SmartqQueryAbilityOutcomeCallable; + typedef std::function&)> SmartqQueryAbilityAsyncHandler; typedef Outcome UpdateDataLevelPermissionStatusOutcome; typedef std::future UpdateDataLevelPermissionStatusOutcomeCallable; typedef std::function&)> UpdateDataLevelPermissionStatusAsyncHandler; @@ -846,6 +851,9 @@ namespace AlibabaCloud SetDataLevelPermissionWhiteListOutcome setDataLevelPermissionWhiteList(const Model::SetDataLevelPermissionWhiteListRequest &request)const; void setDataLevelPermissionWhiteListAsync(const Model::SetDataLevelPermissionWhiteListRequest& request, const SetDataLevelPermissionWhiteListAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; SetDataLevelPermissionWhiteListOutcomeCallable setDataLevelPermissionWhiteListCallable(const Model::SetDataLevelPermissionWhiteListRequest& request) const; + SmartqQueryAbilityOutcome smartqQueryAbility(const Model::SmartqQueryAbilityRequest &request)const; + void smartqQueryAbilityAsync(const Model::SmartqQueryAbilityRequest& request, const SmartqQueryAbilityAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; + SmartqQueryAbilityOutcomeCallable smartqQueryAbilityCallable(const Model::SmartqQueryAbilityRequest& request) const; UpdateDataLevelPermissionStatusOutcome updateDataLevelPermissionStatus(const Model::UpdateDataLevelPermissionStatusRequest &request)const; void updateDataLevelPermissionStatusAsync(const Model::UpdateDataLevelPermissionStatusRequest& request, const UpdateDataLevelPermissionStatusAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; UpdateDataLevelPermissionStatusOutcomeCallable updateDataLevelPermissionStatusCallable(const Model::UpdateDataLevelPermissionStatusRequest& request) const; diff --git a/quickbi-public/include/alibabacloud/quickbi-public/model/SmartqQueryAbilityRequest.h b/quickbi-public/include/alibabacloud/quickbi-public/model/SmartqQueryAbilityRequest.h new file mode 100644 index 000000000..3e336ee77 --- /dev/null +++ b/quickbi-public/include/alibabacloud/quickbi-public/model/SmartqQueryAbilityRequest.h @@ -0,0 +1,54 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ALIBABACLOUD_QUICKBI_PUBLIC_MODEL_SMARTQQUERYABILITYREQUEST_H_ +#define ALIBABACLOUD_QUICKBI_PUBLIC_MODEL_SMARTQQUERYABILITYREQUEST_H_ + +#include +#include +#include +#include +#include + +namespace AlibabaCloud { +namespace Quickbi_public { +namespace Model { +class ALIBABACLOUD_QUICKBI_PUBLIC_EXPORT SmartqQueryAbilityRequest : public RpcServiceRequest { +public: + SmartqQueryAbilityRequest(); + ~SmartqQueryAbilityRequest(); + std::string getAccessPoint() const; + void setAccessPoint(const std::string &accessPoint); + std::string getSignType() const; + void setSignType(const std::string &signType); + std::string getUserId() const; + void setUserId(const std::string &userId); + std::string getUserQuestion() const; + void setUserQuestion(const std::string &userQuestion); + std::string getCubeId() const; + void setCubeId(const std::string &cubeId); + +private: + std::string accessPoint_; + std::string signType_; + std::string userId_; + std::string userQuestion_; + std::string cubeId_; +}; +} // namespace Model +} // namespace Quickbi_public +} // namespace AlibabaCloud +#endif // !ALIBABACLOUD_QUICKBI_PUBLIC_MODEL_SMARTQQUERYABILITYREQUEST_H_ diff --git a/quickbi-public/include/alibabacloud/quickbi-public/model/SmartqQueryAbilityResult.h b/quickbi-public/include/alibabacloud/quickbi-public/model/SmartqQueryAbilityResult.h new file mode 100644 index 000000000..28ed64902 --- /dev/null +++ b/quickbi-public/include/alibabacloud/quickbi-public/model/SmartqQueryAbilityResult.h @@ -0,0 +1,68 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ALIBABACLOUD_QUICKBI_PUBLIC_MODEL_SMARTQQUERYABILITYRESULT_H_ +#define ALIBABACLOUD_QUICKBI_PUBLIC_MODEL_SMARTQQUERYABILITYRESULT_H_ + +#include +#include +#include +#include +#include + +namespace AlibabaCloud +{ + namespace Quickbi_public + { + namespace Model + { + class ALIBABACLOUD_QUICKBI_PUBLIC_EXPORT SmartqQueryAbilityResult : public ServiceResult + { + public: + struct Result + { + struct MetaTypeItem + { + std::string value; + std::string key; + }; + struct ValuesItem + { + std::vector row; + }; + std::vector values; + std::string chartType; + std::vector metaType; + }; + + + SmartqQueryAbilityResult(); + explicit SmartqQueryAbilityResult(const std::string &payload); + ~SmartqQueryAbilityResult(); + bool getSuccess()const; + Result getResult()const; + + protected: + void parse(const std::string &payload); + private: + bool success_; + Result result_; + + }; + } + } +} +#endif // !ALIBABACLOUD_QUICKBI_PUBLIC_MODEL_SMARTQQUERYABILITYRESULT_H_ \ No newline at end of file diff --git a/quickbi-public/src/Quickbi-publicClient.cc b/quickbi-public/src/Quickbi-publicClient.cc index 56836a359..225083f47 100644 --- a/quickbi-public/src/Quickbi-publicClient.cc +++ b/quickbi-public/src/Quickbi-publicClient.cc @@ -3471,6 +3471,42 @@ Quickbi_publicClient::SetDataLevelPermissionWhiteListOutcomeCallable Quickbi_pub return task->get_future(); } +Quickbi_publicClient::SmartqQueryAbilityOutcome Quickbi_publicClient::smartqQueryAbility(const SmartqQueryAbilityRequest &request) const +{ + auto endpointOutcome = endpointProvider_->getEndpoint(); + if (!endpointOutcome.isSuccess()) + return SmartqQueryAbilityOutcome(endpointOutcome.error()); + + auto outcome = makeRequest(endpointOutcome.result(), request); + + if (outcome.isSuccess()) + return SmartqQueryAbilityOutcome(SmartqQueryAbilityResult(outcome.result())); + else + return SmartqQueryAbilityOutcome(outcome.error()); +} + +void Quickbi_publicClient::smartqQueryAbilityAsync(const SmartqQueryAbilityRequest& request, const SmartqQueryAbilityAsyncHandler& handler, const std::shared_ptr& context) const +{ + auto fn = [this, request, handler, context]() + { + handler(this, request, smartqQueryAbility(request), context); + }; + + asyncExecute(new Runnable(fn)); +} + +Quickbi_publicClient::SmartqQueryAbilityOutcomeCallable Quickbi_publicClient::smartqQueryAbilityCallable(const SmartqQueryAbilityRequest &request) const +{ + auto task = std::make_shared>( + [this, request]() + { + return this->smartqQueryAbility(request); + }); + + asyncExecute(new Runnable([task]() { (*task)(); })); + return task->get_future(); +} + Quickbi_publicClient::UpdateDataLevelPermissionStatusOutcome Quickbi_publicClient::updateDataLevelPermissionStatus(const UpdateDataLevelPermissionStatusRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); diff --git a/quickbi-public/src/model/SmartqQueryAbilityRequest.cc b/quickbi-public/src/model/SmartqQueryAbilityRequest.cc new file mode 100644 index 000000000..45671f034 --- /dev/null +++ b/quickbi-public/src/model/SmartqQueryAbilityRequest.cc @@ -0,0 +1,72 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +using AlibabaCloud::Quickbi_public::Model::SmartqQueryAbilityRequest; + +SmartqQueryAbilityRequest::SmartqQueryAbilityRequest() + : RpcServiceRequest("quickbi-public", "2022-01-01", "SmartqQueryAbility") { + setMethod(HttpRequest::Method::Post); +} + +SmartqQueryAbilityRequest::~SmartqQueryAbilityRequest() {} + +std::string SmartqQueryAbilityRequest::getAccessPoint() const { + return accessPoint_; +} + +void SmartqQueryAbilityRequest::setAccessPoint(const std::string &accessPoint) { + accessPoint_ = accessPoint; + setParameter(std::string("AccessPoint"), accessPoint); +} + +std::string SmartqQueryAbilityRequest::getSignType() const { + return signType_; +} + +void SmartqQueryAbilityRequest::setSignType(const std::string &signType) { + signType_ = signType; + setParameter(std::string("SignType"), signType); +} + +std::string SmartqQueryAbilityRequest::getUserId() const { + return userId_; +} + +void SmartqQueryAbilityRequest::setUserId(const std::string &userId) { + userId_ = userId; + setParameter(std::string("UserId"), userId); +} + +std::string SmartqQueryAbilityRequest::getUserQuestion() const { + return userQuestion_; +} + +void SmartqQueryAbilityRequest::setUserQuestion(const std::string &userQuestion) { + userQuestion_ = userQuestion; + setParameter(std::string("UserQuestion"), userQuestion); +} + +std::string SmartqQueryAbilityRequest::getCubeId() const { + return cubeId_; +} + +void SmartqQueryAbilityRequest::setCubeId(const std::string &cubeId) { + cubeId_ = cubeId; + setParameter(std::string("CubeId"), cubeId); +} + diff --git a/quickbi-public/src/model/SmartqQueryAbilityResult.cc b/quickbi-public/src/model/SmartqQueryAbilityResult.cc new file mode 100644 index 000000000..8f92c1171 --- /dev/null +++ b/quickbi-public/src/model/SmartqQueryAbilityResult.cc @@ -0,0 +1,78 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +using namespace AlibabaCloud::Quickbi_public; +using namespace AlibabaCloud::Quickbi_public::Model; + +SmartqQueryAbilityResult::SmartqQueryAbilityResult() : + ServiceResult() +{} + +SmartqQueryAbilityResult::SmartqQueryAbilityResult(const std::string &payload) : + ServiceResult() +{ + parse(payload); +} + +SmartqQueryAbilityResult::~SmartqQueryAbilityResult() +{} + +void SmartqQueryAbilityResult::parse(const std::string &payload) +{ + Json::Reader reader; + Json::Value value; + reader.parse(payload, value); + setRequestId(value["RequestId"].asString()); + auto resultNode = value["Result"]; + if(!resultNode["ChartType"].isNull()) + result_.chartType = resultNode["ChartType"].asString(); + auto allMetaTypeNode = resultNode["MetaType"]["MetaTypeItem"]; + for (auto resultNodeMetaTypeMetaTypeItem : allMetaTypeNode) + { + Result::MetaTypeItem metaTypeItemObject; + if(!resultNodeMetaTypeMetaTypeItem["Key"].isNull()) + metaTypeItemObject.key = resultNodeMetaTypeMetaTypeItem["Key"].asString(); + if(!resultNodeMetaTypeMetaTypeItem["Value"].isNull()) + metaTypeItemObject.value = resultNodeMetaTypeMetaTypeItem["Value"].asString(); + result_.metaType.push_back(metaTypeItemObject); + } + auto allValuesNode = resultNode["Values"]["ValuesItem"]; + for (auto resultNodeValuesValuesItem : allValuesNode) + { + Result::ValuesItem valuesItemObject; + auto allRow = value["Row"]["Row"]; + for (auto value : allRow) + valuesItemObject.row.push_back(value.asString()); + result_.values.push_back(valuesItemObject); + } + if(!value["Success"].isNull()) + success_ = value["Success"].asString() == "true"; + +} + +bool SmartqQueryAbilityResult::getSuccess()const +{ + return success_; +} + +SmartqQueryAbilityResult::Result SmartqQueryAbilityResult::getResult()const +{ + return result_; +} +