diff --git a/datamgr_service/services/distributeddataservice/service/rdb/rdb_general_store.cpp b/datamgr_service/services/distributeddataservice/service/rdb/rdb_general_store.cpp index 1d162e7ff17e7e3b9130a825cc1c64e519a11bb3..778cb2f0cdf86f7a54208a3eeff70648379d6f8c 100644 --- a/datamgr_service/services/distributeddataservice/service/rdb/rdb_general_store.cpp +++ b/datamgr_service/services/distributeddataservice/service/rdb/rdb_general_store.cpp @@ -183,11 +183,16 @@ int32_t RdbGeneralStore::Sync(const Devices &devices, int32_t mode, GenQuery &qu } auto status = delegate_->Sync( devices, DistributedDB::SyncMode(mode), rdbQuery->query_, - [async](SyncProcess process) { + [async](const std::map &process) { + if (process.empty()) { + ZLOGE("process empty"); + return; + } + auto &firstProc = process.begin()->second; ProgressDetails detail; - detail.progress = process.process; - detail.code = process.errCode == DBStatus::OK ? GeneralError::E_OK : GeneralError::E_ERROR; - for (auto &[key, value] : process.tableProcess) { + detail.progress = firstProc.process; + detail.code = firstProc.errCode == DBStatus::OK ? GeneralError::E_OK : GeneralError::E_ERROR; + for (auto &[key, value] : firstProc.tableProcess) { TableDetails table; table.upload.total = value.upLoadInfo.total; table.upload.success = value.upLoadInfo.successCount; diff --git a/kv_store/frameworks/libs/distributeddb/interfaces/include/cloud/cloud_store_types.h b/kv_store/frameworks/libs/distributeddb/interfaces/include/cloud/cloud_store_types.h index dc09edf49195ac456c8a786366501649f2290dba..f67cd2c27ab3c1293d03857f05ba8bf4f0a7702f 100644 --- a/kv_store/frameworks/libs/distributeddb/interfaces/include/cloud/cloud_store_types.h +++ b/kv_store/frameworks/libs/distributeddb/interfaces/include/cloud/cloud_store_types.h @@ -50,31 +50,6 @@ using Bytes = std::vector; using Type = std::variant; using VBucket = std::map; -enum ProcessStatus { - PREPARED = 0, - PROCESSING = 1, - FINISHED = 2, -}; - -struct Info { - uint32_t batchIndex = 0; - uint32_t total = 0; - uint32_t successCount = 0; // merge or upload success count - uint32_t failCount = 0; -}; - -struct TableProcessInfo { - ProcessStatus process = PREPARED; - Info downLoadInfo; - Info upLoadInfo; -}; - -struct SyncProcess { - ProcessStatus process = PREPARED; - DBStatus errCode = OK; - std::map tableProcess; -}; - struct Field { std::string colName; int32_t type; // get value from TYPE_INDEX; diff --git a/kv_store/frameworks/libs/distributeddb/interfaces/include/relational/relational_store_delegate.h b/kv_store/frameworks/libs/distributeddb/interfaces/include/relational/relational_store_delegate.h index 3e1714887e1d8b9a95318fb0bdcd40516b66f1cf..0be9b7c3474afefaf04e1202d6a0479d53af0a2b 100644 --- a/kv_store/frameworks/libs/distributeddb/interfaces/include/relational/relational_store_delegate.h +++ b/kv_store/frameworks/libs/distributeddb/interfaces/include/relational/relational_store_delegate.h @@ -59,7 +59,7 @@ public: DB_API virtual DBStatus RemoveDeviceData() = 0; DB_API virtual DBStatus Sync(const std::vector &devices, SyncMode mode, - const Query &query, const std::function &onProcess, + const Query &query, const SyncProcessCallback &onProcess, int64_t waitTime) = 0; DB_API virtual DBStatus SetCloudDB(const std::shared_ptr &cloudDb) = 0; diff --git a/kv_store/frameworks/libs/distributeddb/interfaces/include/store_types.h b/kv_store/frameworks/libs/distributeddb/interfaces/include/store_types.h index d4b3678c0dc28e61045331b3842be3dbf284770e..560cb389cd9e9e3583cf4540d9bc401db779d586 100644 --- a/kv_store/frameworks/libs/distributeddb/interfaces/include/store_types.h +++ b/kv_store/frameworks/libs/distributeddb/interfaces/include/store_types.h @@ -126,12 +126,38 @@ struct TableStatus { std::string tableName; DBStatus status; }; + +enum ProcessStatus { + PREPARED = 0, + PROCESSING = 1, + FINISHED = 2, +}; + +struct Info { + uint32_t batchIndex = 0; + uint32_t total = 0; + uint32_t successCount = 0; // merge or upload success count + uint32_t failCount = 0; +}; + +struct TableProcessInfo { + ProcessStatus process = PREPARED; + Info downLoadInfo; + Info upLoadInfo; +}; + +struct SyncProcess { + ProcessStatus process = PREPARED; + DBStatus errCode = OK; + std::map tableProcess; +}; + using KvStoreCorruptionHandler = std::function; using StoreCorruptionHandler = std::function; using SyncStatusCallback = std::function> &devicesMap)>; - +using SyncProcessCallback = std::function &process)>; struct RemoteCondition { std::string sql; // The sql statement; std::vector bindArgs; // The bind args. diff --git a/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp b/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp index f10688e5514bf06262012039768e1d608b053239..8e3f6b47d3339af757a4eb7ad7ecf9bbccf9a35e 100644 --- a/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp +++ b/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp @@ -182,7 +182,7 @@ DBStatus RelationalStoreDelegateImpl::RemoveDeviceData() } DBStatus RelationalStoreDelegateImpl::Sync(const std::vector &devices, SyncMode mode, const Query &query, - const std::function &onProcess, int64_t waitTime) + const SyncProcessCallback &onProcess, int64_t waitTime) { return OK; } diff --git a/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.h b/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.h index b3d0b1ee1b40860cb08353fc1042a138e31d890b..fc386eb6fff2295b53ee3eeb4898f6f8210c5873 100644 --- a/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.h +++ b/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.h @@ -49,7 +49,7 @@ public: DBStatus RemoveDeviceData() override; DBStatus Sync(const std::vector &devices, SyncMode mode, const Query &query, - const std::function &onProcess, int64_t waitTime) override; + const SyncProcessCallback &onProcess, int64_t waitTime) override; DBStatus SetCloudDB(const std::shared_ptr &cloudDb) override;