diff --git a/frameworks/innerkitsimpl/distributeddatafwk/src/data_query.cpp b/frameworks/innerkitsimpl/distributeddatafwk/src/data_query.cpp index 96b4216adb5ddee2a21a48918947a6858da6110b..44989ec7b80b841d15d69568e4c6df51dfbcd630 100644 --- a/frameworks/innerkitsimpl/distributeddatafwk/src/data_query.cpp +++ b/frameworks/innerkitsimpl/distributeddatafwk/src/data_query.cpp @@ -20,43 +20,43 @@ namespace OHOS { namespace DistributedKv { -const std::string DataQuery::EQUAL_TO = "^EQUAL"; -const std::string DataQuery::NOT_EQUAL_TO = "^NOT_EQUAL"; -const std::string DataQuery::GREATER_THAN = "^GREATER"; -const std::string DataQuery::LESS_THAN = "^LESS"; -const std::string DataQuery::GREATER_THAN_OR_EQUAL_TO = "^GREATER_EQUAL"; -const std::string DataQuery::LESS_THAN_OR_EQUAL_TO = "^LESS_EQUAL"; -const std::string DataQuery::IS_NULL = "^IS_NULL"; -const std::string DataQuery::IN = "^IN"; -const std::string DataQuery::NOT_IN = "^NOT_IN"; -const std::string DataQuery::LIKE = "^LIKE"; -const std::string DataQuery::NOT_LIKE = "^NOT_LIKE"; -const std::string DataQuery::AND = "^AND"; -const std::string DataQuery::OR = "^OR"; -const std::string DataQuery::ORDER_BY_ASC = "^ASC"; -const std::string DataQuery::ORDER_BY_DESC = "^DESC"; -const std::string DataQuery::LIMIT = "^LIMIT"; -const std::string DataQuery::SPACE = " "; -const std::string DataQuery::SPECIAL = "^"; -const std::string DataQuery::SPECIAL_ESCAPE = "(^)"; -const std::string DataQuery::SPACE_ESCAPE = "^^"; -const std::string DataQuery::EMPTY_STRING = "^EMPTY_STRING"; -const std::string DataQuery::START_IN = "^START"; -const std::string DataQuery::END_IN = "^END"; -const std::string DataQuery::BEGIN_GROUP = "^BEGIN_GROUP"; -const std::string DataQuery::END_GROUP = "^END_GROUP"; -const std::string DataQuery::KEY_PREFIX = "^KEY_PREFIX"; -const std::string DataQuery::DEVICE_ID = "^DEVICE_ID"; -const std::string DataQuery::IS_NOT_NULL = "^IS_NOT_NULL"; -const std::string DataQuery::TYPE_STRING = "STRING"; -const std::string DataQuery::TYPE_INTEGER = "INTEGER"; -const std::string DataQuery::TYPE_LONG = "LONG"; -const std::string DataQuery::TYPE_DOUBLE = "DOUBLE"; -const std::string DataQuery::TYPE_BOOLEAN = "BOOL"; -const std::string DataQuery::VALUE_TRUE = "true"; -const std::string DataQuery::VALUE_FALSE = "false"; -const std::string DataQuery::SUGGEST_INDEX = "^SUGGEST_INDEX"; -const std::string DataQuery::IN_KEYS = "^IN_KEYS"; +const char * const DataQuery::EQUAL_TO = "^EQUAL"; +const char * const DataQuery::NOT_EQUAL_TO = "^NOT_EQUAL"; +const char * const DataQuery::GREATER_THAN = "^GREATER"; +const char * const DataQuery::LESS_THAN = "^LESS"; +const char * const DataQuery::GREATER_THAN_OR_EQUAL_TO = "^GREATER_EQUAL"; +const char * const DataQuery::LESS_THAN_OR_EQUAL_TO = "^LESS_EQUAL"; +const char * const DataQuery::IS_NULL = "^IS_NULL"; +const char * const DataQuery::IN = "^IN"; +const char * const DataQuery::NOT_IN = "^NOT_IN"; +const char * const DataQuery::LIKE = "^LIKE"; +const char * const DataQuery::NOT_LIKE = "^NOT_LIKE"; +const char * const DataQuery::AND = "^AND"; +const char * const DataQuery::OR = "^OR"; +const char * const DataQuery::ORDER_BY_ASC = "^ASC"; +const char * const DataQuery::ORDER_BY_DESC = "^DESC"; +const char * const DataQuery::LIMIT = "^LIMIT"; +const char * const DataQuery::SPACE = " "; +const char * const DataQuery::SPECIAL = "^"; +const char * const DataQuery::SPECIAL_ESCAPE = "(^)"; +const char * const DataQuery::SPACE_ESCAPE = "^^"; +const char * const DataQuery::EMPTY_STRING = "^EMPTY_STRING"; +const char * const DataQuery::START_IN = "^START"; +const char * const DataQuery::END_IN = "^END"; +const char * const DataQuery::BEGIN_GROUP = "^BEGIN_GROUP"; +const char * const DataQuery::END_GROUP = "^END_GROUP"; +const char * const DataQuery::KEY_PREFIX = "^KEY_PREFIX"; +const char * const DataQuery::DEVICE_ID = "^DEVICE_ID"; +const char * const DataQuery::IS_NOT_NULL = "^IS_NOT_NULL"; +const char * const DataQuery::TYPE_STRING = "STRING"; +const char * const DataQuery::TYPE_INTEGER = "INTEGER"; +const char * const DataQuery::TYPE_LONG = "LONG"; +const char * const DataQuery::TYPE_DOUBLE = "DOUBLE"; +const char * const DataQuery::TYPE_BOOLEAN = "BOOL"; +const char * const DataQuery::VALUE_TRUE = "true"; +const char * const DataQuery::VALUE_FALSE = "false"; +const char * const DataQuery::SUGGEST_INDEX = "^SUGGEST_INDEX"; +const char * const DataQuery::IN_KEYS = "^IN_KEYS"; constexpr int MAX_QUERY_LENGTH = 5 * 1024; // Max query string length 5k DataQuery::DataQuery() diff --git a/frameworks/innerkitsimpl/distributeddatafwk/src/single_kvstore_client.cpp b/frameworks/innerkitsimpl/distributeddatafwk/src/single_kvstore_client.cpp index 1d5a1e4420e37d5188c89f44c4ef85fd952a2ed2..aaefed96b80837b5d2d464cf4743b053f6ae85ed 100644 --- a/frameworks/innerkitsimpl/distributeddatafwk/src/single_kvstore_client.cpp +++ b/frameworks/innerkitsimpl/distributeddatafwk/src/single_kvstore_client.cpp @@ -55,7 +55,7 @@ Status SingleKvStoreClient::GetEntries(const Key &prefix, std::vector &en return kvStoreProxy_->GetEntries(prefix, entries); } -Status SingleKvStoreClient::GetEntriesWithQuery(const std::string &query, std::vector &entries) const +Status SingleKvStoreClient::GetEntriesWithQuery(const DataQuery &query, std::vector &entries) const { DdsTrace trace(std::string(LOG_TAG "::") + std::string(__FUNCTION__), true); @@ -64,12 +64,7 @@ Status SingleKvStoreClient::GetEntriesWithQuery(const std::string &query, std::v return Status::SERVER_UNAVAILABLE; } ZLOGD("Cpp client GetEntriesWithQuery"); - return kvStoreProxy_->GetEntriesWithQuery(query, entries); -} - -Status SingleKvStoreClient::GetEntriesWithQuery(const DataQuery &query, std::vector &entries) const -{ - return GetEntriesWithQuery(query.ToString(), entries); + return kvStoreProxy_->GetEntriesWithQuery(query.ToString(), entries); } Status SingleKvStoreClient::GetResultSet(const Key &prefix, std::shared_ptr &resultSet) const @@ -100,7 +95,7 @@ Status SingleKvStoreClient::GetResultSet(const Key &prefix, std::shared_ptr &resultSet) const { DdsTrace trace(std::string(LOG_TAG "::") + std::string(__FUNCTION__), true); @@ -118,7 +113,7 @@ Status SingleKvStoreClient::GetResultSetWithQuery(const std::string &query, statusTmp = status; resultSetTmp = proxy; }; - kvStoreProxy_->GetResultSetWithQuery(query, callFun); + kvStoreProxy_->GetResultSetWithQuery(query.ToString(), callFun); if (statusTmp != Status::SUCCESS) { ZLOGE("return error: %d.", static_cast(statusTmp)); return statusTmp; @@ -133,12 +128,6 @@ Status SingleKvStoreClient::GetResultSetWithQuery(const std::string &query, return statusTmp; } -Status SingleKvStoreClient::GetResultSetWithQuery(const DataQuery &query, - std::shared_ptr &resultSet) const -{ - return GetResultSetWithQuery(query.ToString(), resultSet); -} - Status SingleKvStoreClient::CloseResultSet(std::shared_ptr &resultSet) { DdsTrace trace(std::string(LOG_TAG "::") + std::string(__FUNCTION__)); @@ -155,7 +144,7 @@ Status SingleKvStoreClient::CloseResultSet(std::shared_ptr &re return kvStoreProxy_->CloseResultSet(resultSetClient->GetKvStoreResultSetProxy()); } -Status SingleKvStoreClient::GetCountWithQuery(const std::string &query, int &count) const +Status SingleKvStoreClient::GetCountWithQuery(const DataQuery &query, int &count) const { DdsTrace trace(std::string(LOG_TAG "::") + std::string(__FUNCTION__), true); @@ -164,12 +153,7 @@ Status SingleKvStoreClient::GetCountWithQuery(const std::string &query, int &cou return Status::SERVER_UNAVAILABLE; } ZLOGD("Cpp client GetCountWithQuery"); - return kvStoreProxy_->GetCountWithQuery(query, count); -} - -Status SingleKvStoreClient::GetCountWithQuery(const DataQuery &query, int &count) const -{ - return GetCountWithQuery(query.ToString(), count); + return kvStoreProxy_->GetCountWithQuery(query.ToString(), count); } Status SingleKvStoreClient::Sync(const std::vector &devices, SyncMode mode, uint32_t allowedDelayMs) diff --git a/frameworks/innerkitsimpl/distributeddatafwk/src/single_kvstore_client.h b/frameworks/innerkitsimpl/distributeddatafwk/src/single_kvstore_client.h index e3962c80ef6ca55ba0202403829e28a61ee353d0..c8074527fabffa7a9b9457ad4bf94c8cb4d1f0ba 100644 --- a/frameworks/innerkitsimpl/distributeddatafwk/src/single_kvstore_client.h +++ b/frameworks/innerkitsimpl/distributeddatafwk/src/single_kvstore_client.h @@ -34,20 +34,14 @@ public: Status GetEntries(const Key &prefix, std::vector &entries) const override; - Status GetEntriesWithQuery(const std::string &query, std::vector &entries) const override; - Status GetEntriesWithQuery(const DataQuery &query, std::vector &entries) const override; Status GetResultSet(const Key &prefix, std::shared_ptr &resultSet) const override; - Status GetResultSetWithQuery(const std::string &query, std::shared_ptr &resultSet) const override; - Status GetResultSetWithQuery(const DataQuery &query, std::shared_ptr &resultSet) const override; Status CloseResultSet(std::shared_ptr &resultSet) override; - Status GetCountWithQuery(const std::string &query, int &count) const override; - Status GetCountWithQuery(const DataQuery &query, int &count) const override; Status Sync(const std::vector &devices, SyncMode mode, uint32_t allowedDelayMs) override; @@ -95,7 +89,7 @@ public: Status UnsubscribeWithQuery(const std::vector &devices, const DataQuery &query) override; protected: - Status Control(KvControlCmd cmd, const KvParam &inputParam, KvParam &outputParam) override; + Status Control(KvControlCmd cmd, const KvParam &inputParam, KvParam &outputParam); private: sptr kvStoreProxy_; diff --git a/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/single_kvstore_client_query_test.cpp b/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/single_kvstore_client_query_test.cpp index 2405232ae76eab1375d9bdab0d82c7104491465f..76358b807185a9ea27a115c33fb4d4adb6a86e66 100644 --- a/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/single_kvstore_client_query_test.cpp +++ b/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/single_kvstore_client_query_test.cpp @@ -444,7 +444,7 @@ HWTEST_F(SingleKvStoreClientQueryTest, TestSingleKvStoreQueryC001, TestSize.Leve DataQuery query; query.NotEqualTo("$.name", 3); std::vector results; - Status status1 = singleKvStorePtr->GetEntriesWithQuery(query.ToString(), results); + Status status1 = singleKvStorePtr->GetEntriesWithQuery(query, results); ASSERT_EQ(status1, Status::SUCCESS); EXPECT_TRUE(results.size() == 2); results.clear(); @@ -453,7 +453,7 @@ HWTEST_F(SingleKvStoreClientQueryTest, TestSingleKvStoreQueryC001, TestSize.Leve EXPECT_TRUE(results.size() == 2); std::shared_ptr resultSet; - Status status3 = singleKvStorePtr->GetResultSetWithQuery(query.ToString(), resultSet); + Status status3 = singleKvStorePtr->GetResultSetWithQuery(query, resultSet); ASSERT_EQ(status3, Status::SUCCESS); EXPECT_TRUE(resultSet->GetCount() == 2); auto closeResultSetStatus = singleKvStorePtr->CloseResultSet(resultSet); @@ -466,7 +466,7 @@ HWTEST_F(SingleKvStoreClientQueryTest, TestSingleKvStoreQueryC001, TestSize.Leve ASSERT_EQ(closeResultSetStatus, Status::SUCCESS); int resultSize1; - Status status5 = singleKvStorePtr->GetCountWithQuery(query.ToString(), resultSize1); + Status status5 = singleKvStorePtr->GetCountWithQuery(query, resultSize1); ASSERT_EQ(status5, Status::SUCCESS); EXPECT_TRUE(resultSize1 == 2); int resultSize2; @@ -513,7 +513,7 @@ HWTEST_F(SingleKvStoreClientQueryTest, TestSingleKvStoreQueryC002, TestSize.Leve query.And(); query.EqualTo("$.name", 1); std::vector results1; - Status status1 = singleKvStorePtr->GetEntriesWithQuery(query.ToString(), results1); + Status status1 = singleKvStorePtr->GetEntriesWithQuery(query, results1); ASSERT_EQ(status1, Status::SUCCESS); EXPECT_TRUE(results1.size() == 1); std::vector results2; @@ -522,7 +522,7 @@ HWTEST_F(SingleKvStoreClientQueryTest, TestSingleKvStoreQueryC002, TestSize.Leve EXPECT_TRUE(results2.size() == 1); std::shared_ptr resultSet; - Status status3 = singleKvStorePtr->GetResultSetWithQuery(query.ToString(), resultSet); + Status status3 = singleKvStorePtr->GetResultSetWithQuery(query, resultSet); ASSERT_EQ(status3, Status::SUCCESS); EXPECT_TRUE(resultSet->GetCount() == 1); auto closeResultSetStatus = singleKvStorePtr->CloseResultSet(resultSet); @@ -535,7 +535,7 @@ HWTEST_F(SingleKvStoreClientQueryTest, TestSingleKvStoreQueryC002, TestSize.Leve ASSERT_EQ(closeResultSetStatus, Status::SUCCESS); int resultSize1; - Status status5 = singleKvStorePtr->GetCountWithQuery(query.ToString(), resultSize1); + Status status5 = singleKvStorePtr->GetCountWithQuery(query, resultSize1); ZLOGD("this is it %ul", status5); ASSERT_EQ(status5, Status::SUCCESS); EXPECT_TRUE(resultSize1 == 1); diff --git a/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/types_util_test.cpp b/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/types_util_test.cpp index 33269c4c91f6fac4d2e77af9bf73eba623fa9494..5346f8af2150fbbe2b7a4be5a0bc4c763bd1c079 100644 --- a/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/types_util_test.cpp +++ b/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/types_util_test.cpp @@ -16,13 +16,38 @@ #include #include #include -#include "types.h" +#include "iremote_object.h" #include "itypes_util.h" +#include "types.h" + using namespace testing::ext; using namespace OHOS::DistributedKv; using namespace OHOS; class TypesUtilTest : public testing::Test { public: + class TestRemoteObject : public IRemoteObject { + public: + int32_t GetObjectRefCount() override + { + return 0; + } + int SendRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override + { + return 0; + } + bool AddDeathRecipient(const sptr &recipient) override + { + return false; + } + bool RemoveDeathRecipient(const sptr &recipient) override + { + return false; + } + int Dump(int fd, const vector &args) override + { + return 0; + } + }; static void SetUpTestCase(void) {}; static void TearDownTestCase(void) {}; void SetUp() {}; @@ -36,9 +61,9 @@ HWTEST_F(TypesUtilTest, DeviceInfo, TestSize.Level0) clientDev.deviceId = "123"; clientDev.deviceName = "rk3568"; clientDev.deviceType = "phone"; - ASSERT_TRUE(ITypesUtil::Marshalling(clientDev, parcel)); + ASSERT_TRUE(ITypesUtil::Marshal(parcel, clientDev)); DeviceInfo serverDev; - ASSERT_TRUE(ITypesUtil::Unmarshalling(parcel, serverDev)); + ASSERT_TRUE(ITypesUtil::Unmarshal(parcel, serverDev)); ASSERT_EQ(clientDev.deviceId, serverDev.deviceId); ASSERT_EQ(clientDev.deviceName, serverDev.deviceName); ASSERT_EQ(clientDev.deviceType, serverDev.deviceType); @@ -50,9 +75,9 @@ HWTEST_F(TypesUtilTest, Entry, TestSize.Level0) Entry entryIn; entryIn.key = "student_name_mali"; entryIn.value = "age:20"; - ASSERT_TRUE(ITypesUtil::Marshalling(entryIn, parcel)); + ASSERT_TRUE(ITypesUtil::Marshal(parcel, entryIn)); Entry entryOut; - ASSERT_TRUE(ITypesUtil::Unmarshalling(parcel, entryOut)); + ASSERT_TRUE(ITypesUtil::Unmarshal(parcel, entryOut)); EXPECT_EQ(entryOut.key.ToString(), std::string("student_name_mali")); EXPECT_EQ(entryOut.value.ToString(), std::string("age:20")); } @@ -73,9 +98,9 @@ HWTEST_F(TypesUtilTest, ChangeNotification, TestSize.Level1) ChangeNotification changeIn(std::move(inserts), std::move(updates), std::move(deleteds), std::string(), false); MessageParcel parcel; - ASSERT_TRUE(ITypesUtil::Marshalling(changeIn, parcel)); + ASSERT_TRUE(ITypesUtil::Marshal(parcel, changeIn)); ChangeNotification changeOut({}, {}, {}, "", false); - ASSERT_TRUE(ITypesUtil::Unmarshalling(parcel, changeOut)); + ASSERT_TRUE(ITypesUtil::Unmarshal(parcel, changeOut)); ASSERT_EQ(changeOut.GetInsertEntries().size(), 1UL); EXPECT_EQ(changeOut.GetInsertEntries().front().key.ToString(), std::string("insert")); EXPECT_EQ(changeOut.GetInsertEntries().front().value.ToString(), std::string("insert_value")); @@ -86,4 +111,38 @@ HWTEST_F(TypesUtilTest, ChangeNotification, TestSize.Level1) EXPECT_EQ(changeOut.GetDeleteEntries().front().key.ToString(), std::string("delete")); EXPECT_EQ(changeOut.GetDeleteEntries().front().value.ToString(), std::string("delete_value")); EXPECT_EQ(changeOut.IsClear(), false); +} + + +HWTEST_F(TypesUtilTest, Multiple, TestSize.Level1) +{ + uint32_t input1 = 10; + int32_t input2 = -10; + std::string input3 = "i test"; + Blob input4 = "input 4"; + Entry input5; + input5.key = "my test"; + input5.value = "test value"; + DeviceInfo input6 = {.deviceId = "mock deviceId", .deviceName = "mock phone", .deviceType = "0"}; + sptr input7 = new TestRemoteObject(); + MessageParcel parcel; + ASSERT_TRUE(ITypesUtil::Marshal(parcel, input1, input2, input3, input4, input5, input6, input7)); + uint32_t output1 = 0; + int32_t output2 = 0; + std::string output3 = ""; + Blob output4; + Entry output5; + DeviceInfo output6; + sptr output7; + ASSERT_TRUE(ITypesUtil::Unmarshal(parcel, output1, output2, output3, output4, output5, output6, output7)); + ASSERT_EQ(output1, input1); + ASSERT_EQ(output2, input2); + ASSERT_EQ(output3, input3); + ASSERT_EQ(output4, input4); + ASSERT_EQ(output5.key, input5.key); + ASSERT_EQ(output5.value, input5.value); + ASSERT_EQ(output6.deviceId, input6.deviceId); + ASSERT_EQ(output6.deviceName, input6.deviceName); + ASSERT_EQ(output6.deviceType, input6.deviceType); + ASSERT_EQ(output7, input7); } \ No newline at end of file diff --git a/frameworks/jskitsimpl/distributeddata/src/js_device_kv_store.cpp b/frameworks/jskitsimpl/distributeddata/src/js_device_kv_store.cpp index 38b0385b54b29224456011c6e6dc48892f2f9f94..6563dcbd53a6506d2f53f43eeb6790c2cf91b3a6 100644 --- a/frameworks/jskitsimpl/distributeddata/src/js_device_kv_store.cpp +++ b/frameworks/jskitsimpl/distributeddata/src/js_device_kv_store.cpp @@ -200,11 +200,11 @@ napi_value JsDeviceKVStore::GetEntries(napi_env env, napi_callback_info info) } else if (ctxt->va.type == ArgsType::DEVICEID_QUERY) { auto query = ctxt->va.query->GetNative(); query.DeviceId(ctxt->va.deviceId); - status = kvStore->GetEntriesWithQuery(query.ToString(), ctxt->entries); + status = kvStore->GetEntriesWithQuery(query, ctxt->entries); ZLOGD("kvStore->GetEntriesWithQuery() return %{public}d", status); } else if (ctxt->va.type == ArgsType::QUERY) { auto query = ctxt->va.query->GetNative(); - status = kvStore->GetEntriesWithQuery(query.ToString(), ctxt->entries); + status = kvStore->GetEntriesWithQuery(query, ctxt->entries); ZLOGD("kvStore->GetEntriesWithQuery() return %{public}d", status); } ctxt->status = (status == Status::SUCCESS) ? napi_ok : napi_generic_failure; @@ -258,11 +258,11 @@ napi_value JsDeviceKVStore::GetResultSet(napi_env env, napi_callback_info info) } else if (ctxt->va.type == ArgsType::DEVICEID_QUERY) { auto query = ctxt->va.query->GetNative(); query.DeviceId(ctxt->va.deviceId); - status = kvStore->GetResultSetWithQuery(query.ToString(), kvResultSet); + status = kvStore->GetResultSetWithQuery(query, kvResultSet); ZLOGD("kvStore->GetEntriesWithQuery() return %{public}d", status); } else if (ctxt->va.type == ArgsType::QUERY) { auto query = ctxt->va.query->GetNative(); - status = kvStore->GetResultSetWithQuery(query.ToString(), kvResultSet); + status = kvStore->GetResultSetWithQuery(query, kvResultSet); ZLOGD("kvStore->GetEntriesWithQuery() return %{public}d", status); } ctxt->status = (status == Status::SUCCESS) ? napi_ok : napi_generic_failure; @@ -341,7 +341,7 @@ napi_value JsDeviceKVStore::GetResultSize(napi_env env, napi_callback_info info) if (ctxt->va.type == ArgsType::DEVICEID_QUERY) { query.DeviceId(ctxt->va.deviceId); } - Status status = kvStore->GetCountWithQuery(query.ToString(), ctxt->resultSize); + Status status = kvStore->GetCountWithQuery(query, ctxt->resultSize); ZLOGD("kvStore->GetCountWithQuery() return %{public}d", status); ctxt->status = (status == Status::SUCCESS) ? napi_ok : napi_generic_failure; CHECK_STATUS_RETURN_VOID(ctxt, "kvStore->GetCountWithQuery() failed!"); diff --git a/frameworks/jskitsimpl/distributeddata/src/js_single_kv_store.cpp b/frameworks/jskitsimpl/distributeddata/src/js_single_kv_store.cpp index 99babeb6c62d90e6a8ef26017247cb72077977ff..22f4beb44a5d82b01357efee6beea9ac0305aef5 100644 --- a/frameworks/jskitsimpl/distributeddata/src/js_single_kv_store.cpp +++ b/frameworks/jskitsimpl/distributeddata/src/js_single_kv_store.cpp @@ -165,7 +165,7 @@ napi_value JsSingleKVStore::GetEntries(napi_env env, napi_callback_info info) ZLOGD("kvStore->GetEntries() return %{public}d", status); } else if (ctxt->va.type == ArgsType::QUERY) { auto query = ctxt->va.query->GetNative(); - status = kvStore->GetEntriesWithQuery(query.ToString(), ctxt->entries); + status = kvStore->GetEntriesWithQuery(query, ctxt->entries); ZLOGD("kvStore->GetEntriesWithQuery() return %{public}d", status); } ctxt->status = (status == Status::SUCCESS) ? napi_ok : napi_generic_failure; @@ -217,7 +217,7 @@ napi_value JsSingleKVStore::GetResultSet(napi_env env, napi_callback_info info) ZLOGD("kvStore->GetEntries() return %{public}d", status); } else if (ctxt->va.type == ArgsType::QUERY) { auto query = ctxt->va.query->GetNative(); - status = kvStore->GetResultSetWithQuery(query.ToString(), kvResultSet); + status = kvStore->GetResultSetWithQuery(query, kvResultSet); ZLOGD("kvStore->GetEntriesWithQuery() return %{public}d", status); } ctxt->status = (status == Status::SUCCESS) ? napi_ok : napi_generic_failure; @@ -292,7 +292,7 @@ napi_value JsSingleKVStore::GetResultSize(napi_env env, napi_callback_info info) auto execute = [ctxt]() { auto& kvStore = reinterpret_cast(ctxt->native)->GetNative(); auto query = ctxt->query->GetNative(); - Status status = kvStore->GetCountWithQuery(query.ToString(), ctxt->resultSize); + Status status = kvStore->GetCountWithQuery(query, ctxt->resultSize); ZLOGD("kvStore->GetCountWithQuery() return %{public}d", status); ctxt->status = (status == Status::SUCCESS) ? napi_ok : napi_generic_failure; CHECK_STATUS_RETURN_VOID(ctxt, "kvStore->GetCountWithQuery() failed!"); diff --git a/interfaces/innerkits/distributeddata/include/data_query.h b/interfaces/innerkits/distributeddata/include/data_query.h index 7eda964b0b30f20edefbc6800f7dddd6cb51fbb3..575482997758a746bafe1f20f9a91e9d715b200a 100644 --- a/interfaces/innerkits/distributeddata/include/data_query.h +++ b/interfaces/innerkits/distributeddata/include/data_query.h @@ -411,118 +411,120 @@ public: // String representation of this query. API_EXPORT std::string ToString() const; +private: + + friend class QueryHelper; // equal to - static const std::string EQUAL_TO; + static const char * const EQUAL_TO; // not equal to - static const std::string NOT_EQUAL_TO; + static const char * const NOT_EQUAL_TO; // greater than - static const std::string GREATER_THAN; + static const char * const GREATER_THAN; // less than - static const std::string LESS_THAN; + static const char * const LESS_THAN; // greater than or equal to - static const std::string GREATER_THAN_OR_EQUAL_TO; + static const char * const GREATER_THAN_OR_EQUAL_TO; // less than or equal to - static const std::string LESS_THAN_OR_EQUAL_TO; + static const char * const LESS_THAN_OR_EQUAL_TO; // is null - static const std::string IS_NULL; + static const char * const IS_NULL; // in - static const std::string IN; + static const char * const IN; // not in - static const std::string NOT_IN; + static const char * const NOT_IN; // like - static const std::string LIKE; + static const char * const LIKE; // not like - static const std::string NOT_LIKE; + static const char * const NOT_LIKE; // and - static const std::string AND; + static const char * const AND; // or - static const std::string OR; + static const char * const OR; // order by asc - static const std::string ORDER_BY_ASC; + static const char * const ORDER_BY_ASC; // order by desc - static const std::string ORDER_BY_DESC; + static const char * const ORDER_BY_DESC; // limit - static const std::string LIMIT; + static const char * const LIMIT; // space - static const std::string SPACE; + static const char * const SPACE; // '^' - static const std::string SPECIAL; + static const char * const SPECIAL; // '^' escape - static const std::string SPECIAL_ESCAPE; + static const char * const SPECIAL_ESCAPE; // space escape - static const std::string SPACE_ESCAPE; + static const char * const SPACE_ESCAPE; // empty string - static const std::string EMPTY_STRING; + static const char * const EMPTY_STRING; // start in - static const std::string START_IN; + static const char * const START_IN; // end in - static const std::string END_IN; + static const char * const END_IN; // begin group - static const std::string BEGIN_GROUP; + static const char * const BEGIN_GROUP; // end group - static const std::string END_GROUP; + static const char * const END_GROUP; // key prefix - static const std::string KEY_PREFIX; + static const char * const KEY_PREFIX; // device id - static const std::string DEVICE_ID; + static const char * const DEVICE_ID; // is not null - static const std::string IS_NOT_NULL; + static const char * const IS_NOT_NULL; // type string - static const std::string TYPE_STRING; + static const char * const TYPE_STRING; // type integer - static const std::string TYPE_INTEGER; + static const char * const TYPE_INTEGER; // type long - static const std::string TYPE_LONG; + static const char * const TYPE_LONG; // type double - static const std::string TYPE_DOUBLE; + static const char * const TYPE_DOUBLE; // type boolean - static const std::string TYPE_BOOLEAN; + static const char * const TYPE_BOOLEAN; // value true - static const std::string VALUE_TRUE; + static const char * const VALUE_TRUE; // value false - static const std::string VALUE_FALSE; + static const char * const VALUE_FALSE; // suggested index - static const std::string SUGGEST_INDEX; + static const char * const SUGGEST_INDEX; // in keys - static const std::string IN_KEYS; + static const char * const IN_KEYS; -private: std::string str_; bool inkeysFlag_ = false; diff --git a/interfaces/innerkits/distributeddata/include/single_kvstore.h b/interfaces/innerkits/distributeddata/include/single_kvstore.h index c033fd3f89afecf43cdd3c41734d3ce8d74e6304..4fedb2cc92642afafb769e819fbc1ddbf9846027 100644 --- a/interfaces/innerkits/distributeddata/include/single_kvstore.h +++ b/interfaces/innerkits/distributeddata/include/single_kvstore.h @@ -34,21 +34,21 @@ public: API_EXPORT virtual ~SingleKvStore() {} - // Get all entries in this store which key start with prefixKey. + // Get value from AppKvStore by its key. // Parameters: - // perfixkey: the prefix to be searched. - // entries: entries will be returned in this parameter. + // key: key of this entry. + // value: value will be returned in this parameter. // Return: - // Status of this GetEntries operation. - virtual Status GetEntries(const Key &prefix, std::vector &entries) const = 0; + // Status of this get operation. + virtual Status Get(const Key &key, Value &value) = 0; - // Get all entries in this store by query. + // Get all entries in this store which key start with prefixKey. // Parameters: - // query: the query string. + // perfixkey: the prefix to be searched. // entries: entries will be returned in this parameter. // Return: // Status of this GetEntries operation. - virtual Status GetEntriesWithQuery(const std::string &query, std::vector &entries) const = 0; + virtual Status GetEntries(const Key &prefix, std::vector &entries) const = 0; // Get all entries in this store by query. // Parameters: @@ -66,15 +66,6 @@ public: // Status of this GetResultSet operation. virtual Status GetResultSet(const Key &prefix, std::shared_ptr &resultSet) const = 0; - // Get ResultSet in this store by Query. - // Parameters: - // query: the query string. - // resultSet: resultSet will be returned in this parameter. - // Return: - // Status of this GetResultSet operation. - virtual Status GetResultSetWithQuery(const std::string &query, - std::shared_ptr &resultSet) const = 0; - // Get ResultSet in this store by Query. // Parameters: // query: the query object. @@ -91,14 +82,6 @@ public: // Status of this CloseResultSet operation. virtual Status CloseResultSet(std::shared_ptr &resultSet) = 0; - // Get the number of result by query. - // Parameters: - // query: the query string. - // result: result will be returned in this parameter. - // Return: - // Status of this CloseResultSet operation. - virtual Status GetCountWithQuery(const std::string &query, int &count) const = 0; - // Get the number of result by query. // Parameters: // query: the query object. @@ -130,14 +113,6 @@ public: // Status of this remove operation. virtual Status RemoveDeviceData(const std::string &device) = 0; - // Get value from AppKvStore by its key. - // Parameters: - // key: key of this entry. - // value: value will be returned in this parameter. - // Return: - // Status of this get operation. - virtual Status Get(const Key &key, Value &value) = 0; - // register message for sync operation. // Parameters: // callback: callback to register. @@ -212,15 +187,6 @@ public: * Status of this UnSubscribe operation. */ virtual Status UnsubscribeWithQuery(const std::vector &devices, const DataQuery &query) = 0; - -protected: - // control this store. - // Parameters: - // inputParam: input parameter. - // output: output data, nullptr if no data is returned. - // Return: - // Status of this control operation. - virtual Status Control(KvControlCmd cmd, const KvParam &inputParam, KvParam &output) = 0; }; } // namespace DistributedKv } // namespace OHOS