153c3577eSopenharmony_ci/* 253c3577eSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 353c3577eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 453c3577eSopenharmony_ci * you may not use this file except in compliance with the License. 553c3577eSopenharmony_ci * You may obtain a copy of the License at 653c3577eSopenharmony_ci * 753c3577eSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 853c3577eSopenharmony_ci * 953c3577eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1053c3577eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1153c3577eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1253c3577eSopenharmony_ci * See the License for the specific language governing permissions and 1353c3577eSopenharmony_ci * limitations under the License. 1453c3577eSopenharmony_ci */ 1553c3577eSopenharmony_ci 1653c3577eSopenharmony_ci#define LOG_TAG "ValueProxy" 1753c3577eSopenharmony_ci#include "value_proxy.h" 1853c3577eSopenharmony_cinamespace OHOS::DistributedData { 1953c3577eSopenharmony_ciusing namespace OHOS::DistributedData; 2053c3577eSopenharmony_ciValueProxy::Value ValueProxy::Convert(DistributedData::Value &&value) 2153c3577eSopenharmony_ci{ 2253c3577eSopenharmony_ci Value proxy; 2353c3577eSopenharmony_ci DistributedData::Convert(std::move(value), proxy.value_); 2453c3577eSopenharmony_ci return proxy; 2553c3577eSopenharmony_ci} 2653c3577eSopenharmony_ci 2753c3577eSopenharmony_ciValueProxy::Value ValueProxy::Convert(NativeRdb::ValueObject &&value) 2853c3577eSopenharmony_ci{ 2953c3577eSopenharmony_ci Value proxy; 3053c3577eSopenharmony_ci DistributedData::Convert(std::move(value.value), proxy.value_); 3153c3577eSopenharmony_ci return proxy; 3253c3577eSopenharmony_ci} 3353c3577eSopenharmony_ci 3453c3577eSopenharmony_ciValueProxy::Value ValueProxy::Convert(CommonType::Value &&value) 3553c3577eSopenharmony_ci{ 3653c3577eSopenharmony_ci Value proxy; 3753c3577eSopenharmony_ci DistributedData::Convert(std::move(value), proxy.value_); 3853c3577eSopenharmony_ci return proxy; 3953c3577eSopenharmony_ci} 4053c3577eSopenharmony_ci 4153c3577eSopenharmony_ciValueProxy::Value ValueProxy::Convert(DistributedDB::Type &&value) 4253c3577eSopenharmony_ci{ 4353c3577eSopenharmony_ci Value proxy; 4453c3577eSopenharmony_ci DistributedData::Convert(std::move(value), proxy.value_); 4553c3577eSopenharmony_ci return proxy; 4653c3577eSopenharmony_ci} 4753c3577eSopenharmony_ci 4853c3577eSopenharmony_ciValueProxy::Values ValueProxy::Convert(DistributedData::Values &&values) 4953c3577eSopenharmony_ci{ 5053c3577eSopenharmony_ci Values proxy; 5153c3577eSopenharmony_ci proxy.value_.reserve(values.size()); 5253c3577eSopenharmony_ci for (auto &value : values) { 5353c3577eSopenharmony_ci proxy.value_.emplace_back(Convert(std::move(value))); 5453c3577eSopenharmony_ci } 5553c3577eSopenharmony_ci return proxy; 5653c3577eSopenharmony_ci} 5753c3577eSopenharmony_ci 5853c3577eSopenharmony_ciValueProxy::Values ValueProxy::Convert(std::vector<NativeRdb::ValueObject> &&values) 5953c3577eSopenharmony_ci{ 6053c3577eSopenharmony_ci Values proxy; 6153c3577eSopenharmony_ci proxy.value_.reserve(values.size()); 6253c3577eSopenharmony_ci for (auto &value : values) { 6353c3577eSopenharmony_ci proxy.value_.emplace_back(Convert(std::move(value))); 6453c3577eSopenharmony_ci } 6553c3577eSopenharmony_ci return proxy; 6653c3577eSopenharmony_ci} 6753c3577eSopenharmony_ci 6853c3577eSopenharmony_ciValueProxy::Values ValueProxy::Convert(std::vector<CommonType::Value> &&values) 6953c3577eSopenharmony_ci{ 7053c3577eSopenharmony_ci Values proxy; 7153c3577eSopenharmony_ci proxy.value_.reserve(values.size()); 7253c3577eSopenharmony_ci for (auto &value : values) { 7353c3577eSopenharmony_ci proxy.value_.emplace_back(Convert(std::move(value))); 7453c3577eSopenharmony_ci } 7553c3577eSopenharmony_ci return proxy; 7653c3577eSopenharmony_ci} 7753c3577eSopenharmony_ci 7853c3577eSopenharmony_ciValueProxy::Values ValueProxy::Convert(std::vector<DistributedDB::Type> &&values) 7953c3577eSopenharmony_ci{ 8053c3577eSopenharmony_ci Values proxy; 8153c3577eSopenharmony_ci proxy.value_.reserve(values.size()); 8253c3577eSopenharmony_ci for (auto &value : values) { 8353c3577eSopenharmony_ci proxy.value_.emplace_back(Convert(std::move(value))); 8453c3577eSopenharmony_ci } 8553c3577eSopenharmony_ci return proxy; 8653c3577eSopenharmony_ci} 8753c3577eSopenharmony_ci 8853c3577eSopenharmony_ciValueProxy::Bucket ValueProxy::Convert(DistributedData::VBucket &&bucket) 8953c3577eSopenharmony_ci{ 9053c3577eSopenharmony_ci ValueProxy::Bucket proxy; 9153c3577eSopenharmony_ci for (auto &[key, value] : bucket) { 9253c3577eSopenharmony_ci proxy.value_.insert_or_assign(key, Convert(std::move(value))); 9353c3577eSopenharmony_ci } 9453c3577eSopenharmony_ci return proxy; 9553c3577eSopenharmony_ci} 9653c3577eSopenharmony_ci 9753c3577eSopenharmony_ciValueProxy::Bucket ValueProxy::Convert(NativeRdb::ValuesBucket &&bucket) 9853c3577eSopenharmony_ci{ 9953c3577eSopenharmony_ci ValueProxy::Bucket proxy; 10053c3577eSopenharmony_ci for (auto &[key, value] : bucket.values_) { 10153c3577eSopenharmony_ci proxy.value_.insert_or_assign(key, Convert(std::move(value))); 10253c3577eSopenharmony_ci } 10353c3577eSopenharmony_ci return proxy; 10453c3577eSopenharmony_ci} 10553c3577eSopenharmony_ci 10653c3577eSopenharmony_ciValueProxy::Bucket ValueProxy::Convert(CommonType::ValuesBucket &&bucket) 10753c3577eSopenharmony_ci{ 10853c3577eSopenharmony_ci ValueProxy::Bucket proxy; 10953c3577eSopenharmony_ci for (auto &[key, value] : bucket) { 11053c3577eSopenharmony_ci proxy.value_.insert_or_assign(key, Convert(std::move(value))); 11153c3577eSopenharmony_ci } 11253c3577eSopenharmony_ci return proxy; 11353c3577eSopenharmony_ci} 11453c3577eSopenharmony_ci 11553c3577eSopenharmony_ciValueProxy::Bucket ValueProxy::Convert(DistributedDB::VBucket &&bucket) 11653c3577eSopenharmony_ci{ 11753c3577eSopenharmony_ci ValueProxy::Bucket proxy; 11853c3577eSopenharmony_ci for (auto &[key, value] : bucket) { 11953c3577eSopenharmony_ci proxy.value_.insert_or_assign(key, Convert(std::move(value))); 12053c3577eSopenharmony_ci } 12153c3577eSopenharmony_ci return proxy; 12253c3577eSopenharmony_ci} 12353c3577eSopenharmony_ci 12453c3577eSopenharmony_ciValueProxy::Buckets ValueProxy::Convert(std::vector<NativeRdb::ValuesBucket> &&buckets) 12553c3577eSopenharmony_ci{ 12653c3577eSopenharmony_ci ValueProxy::Buckets proxy; 12753c3577eSopenharmony_ci proxy.value_.reserve(buckets.size()); 12853c3577eSopenharmony_ci for (auto &bucket : buckets) { 12953c3577eSopenharmony_ci proxy.value_.emplace_back(Convert(std::move(bucket))); 13053c3577eSopenharmony_ci } 13153c3577eSopenharmony_ci return proxy; 13253c3577eSopenharmony_ci} 13353c3577eSopenharmony_ci 13453c3577eSopenharmony_ciValueProxy::Buckets ValueProxy::Convert(std::vector<CommonType::ValuesBucket> &&buckets) 13553c3577eSopenharmony_ci{ 13653c3577eSopenharmony_ci ValueProxy::Buckets proxy; 13753c3577eSopenharmony_ci proxy.value_.reserve(buckets.size()); 13853c3577eSopenharmony_ci for (auto &bucket : buckets) { 13953c3577eSopenharmony_ci proxy.value_.emplace_back(Convert(std::move(bucket))); 14053c3577eSopenharmony_ci } 14153c3577eSopenharmony_ci return proxy; 14253c3577eSopenharmony_ci} 14353c3577eSopenharmony_ci 14453c3577eSopenharmony_ciValueProxy::Buckets ValueProxy::Convert(std::vector<DistributedDB::VBucket> &&buckets) 14553c3577eSopenharmony_ci{ 14653c3577eSopenharmony_ci ValueProxy::Buckets proxy; 14753c3577eSopenharmony_ci proxy.value_.reserve(buckets.size()); 14853c3577eSopenharmony_ci for (auto &bucket : buckets) { 14953c3577eSopenharmony_ci proxy.value_.emplace_back(Convert(std::move(bucket))); 15053c3577eSopenharmony_ci } 15153c3577eSopenharmony_ci return proxy; 15253c3577eSopenharmony_ci} 15353c3577eSopenharmony_ci 15453c3577eSopenharmony_ciValueProxy::Buckets ValueProxy::Convert(DistributedData::VBuckets &&buckets) 15553c3577eSopenharmony_ci{ 15653c3577eSopenharmony_ci ValueProxy::Buckets proxy; 15753c3577eSopenharmony_ci proxy.value_.reserve(buckets.size()); 15853c3577eSopenharmony_ci for (auto &bucket : buckets) { 15953c3577eSopenharmony_ci proxy.value_.emplace_back(Convert(std::move(bucket))); 16053c3577eSopenharmony_ci } 16153c3577eSopenharmony_ci return proxy; 16253c3577eSopenharmony_ci} 16353c3577eSopenharmony_ci 16453c3577eSopenharmony_ciValueProxy::Value ValueProxy::Convert(DistributedDB::VariantData &&value) 16553c3577eSopenharmony_ci{ 16653c3577eSopenharmony_ci Value proxy; 16753c3577eSopenharmony_ci DistributedData::Convert(std::move(value), proxy.value_); 16853c3577eSopenharmony_ci return proxy; 16953c3577eSopenharmony_ci} 17053c3577eSopenharmony_ci 17153c3577eSopenharmony_ciValueProxy::Bucket ValueProxy::Convert(std::map<std::string, DistributedDB::VariantData> &&value) 17253c3577eSopenharmony_ci{ 17353c3577eSopenharmony_ci ValueProxy::Bucket proxy; 17453c3577eSopenharmony_ci for (auto &[key, value] : value) { 17553c3577eSopenharmony_ci proxy.value_.insert_or_assign(key, Convert(std::move(value))); 17653c3577eSopenharmony_ci } 17753c3577eSopenharmony_ci return proxy; 17853c3577eSopenharmony_ci} 17953c3577eSopenharmony_ci 18053c3577eSopenharmony_ciValueProxy::Asset::Asset(DistributedData::Asset asset) 18153c3577eSopenharmony_ci{ 18253c3577eSopenharmony_ci asset_ = std::move(asset); 18353c3577eSopenharmony_ci} 18453c3577eSopenharmony_ci 18553c3577eSopenharmony_ciValueProxy::Asset::Asset(NativeRdb::AssetValue asset) 18653c3577eSopenharmony_ci{ 18753c3577eSopenharmony_ci asset_ = DistributedData::Asset { .version = asset.version, 18853c3577eSopenharmony_ci .status = asset.status, 18953c3577eSopenharmony_ci .expiresTime = asset.expiresTime, 19053c3577eSopenharmony_ci .id = std::move(asset.id), 19153c3577eSopenharmony_ci .name = std::move(asset.name), 19253c3577eSopenharmony_ci .uri = std::move(asset.uri), 19353c3577eSopenharmony_ci .createTime = std::move(asset.createTime), 19453c3577eSopenharmony_ci .modifyTime = std::move(asset.modifyTime), 19553c3577eSopenharmony_ci .size = std::move(asset.size), 19653c3577eSopenharmony_ci .hash = std::move(asset.hash), 19753c3577eSopenharmony_ci .path = std::move(asset.path) }; 19853c3577eSopenharmony_ci} 19953c3577eSopenharmony_ci 20053c3577eSopenharmony_ciValueProxy::Asset::Asset(CommonType::AssetValue asset) 20153c3577eSopenharmony_ci{ 20253c3577eSopenharmony_ci asset_ = DistributedData::Asset { .version = asset.version, 20353c3577eSopenharmony_ci .status = asset.status, 20453c3577eSopenharmony_ci .expiresTime = asset.expiresTime, 20553c3577eSopenharmony_ci .id = std::move(asset.id), 20653c3577eSopenharmony_ci .name = std::move(asset.name), 20753c3577eSopenharmony_ci .uri = std::move(asset.uri), 20853c3577eSopenharmony_ci .createTime = std::move(asset.createTime), 20953c3577eSopenharmony_ci .modifyTime = std::move(asset.modifyTime), 21053c3577eSopenharmony_ci .size = std::move(asset.size), 21153c3577eSopenharmony_ci .hash = std::move(asset.hash), 21253c3577eSopenharmony_ci .path = std::move(asset.path) }; 21353c3577eSopenharmony_ci} 21453c3577eSopenharmony_ci 21553c3577eSopenharmony_ciValueProxy::Asset::Asset(DistributedDB::Asset asset) 21653c3577eSopenharmony_ci{ 21753c3577eSopenharmony_ci asset_ = DistributedData::Asset { .version = asset.version, 21853c3577eSopenharmony_ci .status = ConvertToDataStatus(asset), 21953c3577eSopenharmony_ci .expiresTime = DistributedData::Asset::NO_EXPIRES_TIME, 22053c3577eSopenharmony_ci .id = std::move(asset.assetId), 22153c3577eSopenharmony_ci .name = std::move(asset.name), 22253c3577eSopenharmony_ci .uri = std::move(asset.uri), 22353c3577eSopenharmony_ci .createTime = std::move(asset.createTime), 22453c3577eSopenharmony_ci .modifyTime = std::move(asset.modifyTime), 22553c3577eSopenharmony_ci .size = std::move(asset.size), 22653c3577eSopenharmony_ci .hash = std::move(asset.hash), 22753c3577eSopenharmony_ci .path = std::move(asset.subpath) }; 22853c3577eSopenharmony_ci} 22953c3577eSopenharmony_ci 23053c3577eSopenharmony_ciValueProxy::Asset &ValueProxy::Asset::operator=(const Asset &proxy) 23153c3577eSopenharmony_ci{ 23253c3577eSopenharmony_ci if (this == &proxy) { 23353c3577eSopenharmony_ci return *this; 23453c3577eSopenharmony_ci } 23553c3577eSopenharmony_ci asset_ = proxy.asset_; 23653c3577eSopenharmony_ci return *this; 23753c3577eSopenharmony_ci} 23853c3577eSopenharmony_ci 23953c3577eSopenharmony_ciValueProxy::Asset &ValueProxy::Asset::operator=(Asset &&proxy) noexcept 24053c3577eSopenharmony_ci{ 24153c3577eSopenharmony_ci if (this == &proxy) { 24253c3577eSopenharmony_ci return *this; 24353c3577eSopenharmony_ci } 24453c3577eSopenharmony_ci asset_ = std::move(proxy); 24553c3577eSopenharmony_ci return *this; 24653c3577eSopenharmony_ci} 24753c3577eSopenharmony_ci 24853c3577eSopenharmony_ciValueProxy::Asset::operator NativeRdb::AssetValue() 24953c3577eSopenharmony_ci{ 25053c3577eSopenharmony_ci return NativeRdb::AssetValue { .version = asset_.version, 25153c3577eSopenharmony_ci .status = asset_.status, 25253c3577eSopenharmony_ci .expiresTime = asset_.expiresTime, 25353c3577eSopenharmony_ci .id = std::move(asset_.id), 25453c3577eSopenharmony_ci .name = std::move(asset_.name), 25553c3577eSopenharmony_ci .uri = std::move(asset_.uri), 25653c3577eSopenharmony_ci .createTime = std::move(asset_.createTime), 25753c3577eSopenharmony_ci .modifyTime = std::move(asset_.modifyTime), 25853c3577eSopenharmony_ci .size = std::move(asset_.size), 25953c3577eSopenharmony_ci .hash = std::move(asset_.hash), 26053c3577eSopenharmony_ci .path = std::move(asset_.path) }; 26153c3577eSopenharmony_ci} 26253c3577eSopenharmony_ci 26353c3577eSopenharmony_ciValueProxy::Asset::operator CommonType::AssetValue() 26453c3577eSopenharmony_ci{ 26553c3577eSopenharmony_ci return CommonType::AssetValue { .version = asset_.version, 26653c3577eSopenharmony_ci .status = asset_.status, 26753c3577eSopenharmony_ci .expiresTime = asset_.expiresTime, 26853c3577eSopenharmony_ci .id = std::move(asset_.id), 26953c3577eSopenharmony_ci .name = std::move(asset_.name), 27053c3577eSopenharmony_ci .uri = std::move(asset_.uri), 27153c3577eSopenharmony_ci .createTime = std::move(asset_.createTime), 27253c3577eSopenharmony_ci .modifyTime = std::move(asset_.modifyTime), 27353c3577eSopenharmony_ci .size = std::move(asset_.size), 27453c3577eSopenharmony_ci .hash = std::move(asset_.hash), 27553c3577eSopenharmony_ci .path = std::move(asset_.path) }; 27653c3577eSopenharmony_ci} 27753c3577eSopenharmony_ci 27853c3577eSopenharmony_ciValueProxy::Asset::operator DistributedData::Asset() 27953c3577eSopenharmony_ci{ 28053c3577eSopenharmony_ci return std::move(asset_); 28153c3577eSopenharmony_ci} 28253c3577eSopenharmony_ci 28353c3577eSopenharmony_ciValueProxy::Asset::operator DistributedDB::Asset() 28453c3577eSopenharmony_ci{ 28553c3577eSopenharmony_ci return DistributedDB::Asset { .version = asset_.version, 28653c3577eSopenharmony_ci .name = std::move(asset_.name), 28753c3577eSopenharmony_ci .assetId = std::move(asset_.id), 28853c3577eSopenharmony_ci .subpath = std::move(asset_.path), 28953c3577eSopenharmony_ci .uri = std::move(asset_.uri), 29053c3577eSopenharmony_ci .modifyTime = std::move(asset_.modifyTime), 29153c3577eSopenharmony_ci .createTime = std::move(asset_.createTime), 29253c3577eSopenharmony_ci .size = std::move(asset_.size), 29353c3577eSopenharmony_ci .hash = std::move(asset_.hash), 29453c3577eSopenharmony_ci .status = ConvertToDBStatus(asset_.status) }; 29553c3577eSopenharmony_ci} 29653c3577eSopenharmony_ci 29753c3577eSopenharmony_ciuint32_t ValueProxy::Asset::ConvertToDataStatus(const DistributedDB::Asset &asset) 29853c3577eSopenharmony_ci{ 29953c3577eSopenharmony_ci auto highStatus = GetHighStatus(asset.status); 30053c3577eSopenharmony_ci auto lowStatus = GetLowStatus(asset.status); 30153c3577eSopenharmony_ci switch (lowStatus) { 30253c3577eSopenharmony_ci case static_cast<uint32_t>(DistributedDB::AssetStatus::NORMAL): 30353c3577eSopenharmony_ci lowStatus = DistributedData::Asset::STATUS_NORMAL; 30453c3577eSopenharmony_ci break; 30553c3577eSopenharmony_ci case static_cast<uint32_t>(DistributedDB::AssetStatus::DOWNLOADING): 30653c3577eSopenharmony_ci lowStatus = DistributedData::Asset::STATUS_DOWNLOADING; 30753c3577eSopenharmony_ci break; 30853c3577eSopenharmony_ci case static_cast<uint32_t>(DistributedDB::AssetStatus::ABNORMAL): 30953c3577eSopenharmony_ci lowStatus = DistributedData::Asset::STATUS_ABNORMAL; 31053c3577eSopenharmony_ci break; 31153c3577eSopenharmony_ci case static_cast<uint32_t>(DistributedDB::AssetStatus::INSERT): 31253c3577eSopenharmony_ci lowStatus = DistributedData::Asset::STATUS_INSERT; 31353c3577eSopenharmony_ci break; 31453c3577eSopenharmony_ci case static_cast<uint32_t>(DistributedDB::AssetStatus::UPDATE): 31553c3577eSopenharmony_ci lowStatus = DistributedData::Asset::STATUS_UPDATE; 31653c3577eSopenharmony_ci break; 31753c3577eSopenharmony_ci case static_cast<uint32_t>(DistributedDB::AssetStatus::DELETE): 31853c3577eSopenharmony_ci lowStatus = DistributedData::Asset::STATUS_DELETE; 31953c3577eSopenharmony_ci break; 32053c3577eSopenharmony_ci default: 32153c3577eSopenharmony_ci lowStatus = DistributedData::Asset::STATUS_NORMAL; 32253c3577eSopenharmony_ci } 32353c3577eSopenharmony_ci return lowStatus | highStatus; 32453c3577eSopenharmony_ci} 32553c3577eSopenharmony_ci 32653c3577eSopenharmony_ciuint32_t ValueProxy::Asset::ConvertToDBStatus(const uint32_t &status) 32753c3577eSopenharmony_ci{ 32853c3577eSopenharmony_ci auto highStatus = GetHighStatus(status); 32953c3577eSopenharmony_ci auto lowStatus = GetLowStatus(status); 33053c3577eSopenharmony_ci switch (lowStatus) { 33153c3577eSopenharmony_ci case DistributedData::Asset::STATUS_NORMAL: 33253c3577eSopenharmony_ci lowStatus = static_cast<uint32_t>(DistributedDB::AssetStatus::NORMAL); 33353c3577eSopenharmony_ci break; 33453c3577eSopenharmony_ci case DistributedData::Asset::STATUS_ABNORMAL: 33553c3577eSopenharmony_ci lowStatus = static_cast<uint32_t>(DistributedDB::AssetStatus::ABNORMAL); 33653c3577eSopenharmony_ci break; 33753c3577eSopenharmony_ci case DistributedData::Asset::STATUS_INSERT: 33853c3577eSopenharmony_ci lowStatus = static_cast<uint32_t>(DistributedDB::AssetStatus::INSERT); 33953c3577eSopenharmony_ci break; 34053c3577eSopenharmony_ci case DistributedData::Asset::STATUS_UPDATE: 34153c3577eSopenharmony_ci lowStatus = static_cast<uint32_t>(DistributedDB::AssetStatus::UPDATE); 34253c3577eSopenharmony_ci break; 34353c3577eSopenharmony_ci case DistributedData::Asset::STATUS_DELETE: 34453c3577eSopenharmony_ci lowStatus = static_cast<uint32_t>(DistributedDB::AssetStatus::DELETE); 34553c3577eSopenharmony_ci break; 34653c3577eSopenharmony_ci case DistributedData::Asset::STATUS_DOWNLOADING: 34753c3577eSopenharmony_ci lowStatus = static_cast<uint32_t>(DistributedDB::AssetStatus::DOWNLOADING); 34853c3577eSopenharmony_ci break; 34953c3577eSopenharmony_ci default: 35053c3577eSopenharmony_ci lowStatus = static_cast<uint32_t>(DistributedDB::AssetStatus::NORMAL); 35153c3577eSopenharmony_ci } 35253c3577eSopenharmony_ci return lowStatus | highStatus; 35353c3577eSopenharmony_ci} 35453c3577eSopenharmony_ci 35553c3577eSopenharmony_ciValueProxy::Assets::Assets(DistributedData::Assets assets) 35653c3577eSopenharmony_ci{ 35753c3577eSopenharmony_ci assets_.clear(); 35853c3577eSopenharmony_ci assets_.reserve(assets.size()); 35953c3577eSopenharmony_ci for (auto &asset : assets) { 36053c3577eSopenharmony_ci assets_.emplace_back(std::move(asset)); 36153c3577eSopenharmony_ci } 36253c3577eSopenharmony_ci} 36353c3577eSopenharmony_ci 36453c3577eSopenharmony_ciValueProxy::Assets::Assets(NativeRdb::ValueObject::Assets assets) 36553c3577eSopenharmony_ci{ 36653c3577eSopenharmony_ci assets_.clear(); 36753c3577eSopenharmony_ci assets_.reserve(assets.size()); 36853c3577eSopenharmony_ci for (auto &asset : assets) { 36953c3577eSopenharmony_ci assets_.emplace_back(std::move(asset)); 37053c3577eSopenharmony_ci } 37153c3577eSopenharmony_ci} 37253c3577eSopenharmony_ci 37353c3577eSopenharmony_ciValueProxy::Assets::Assets(CommonType::Assets assets) 37453c3577eSopenharmony_ci{ 37553c3577eSopenharmony_ci assets_.clear(); 37653c3577eSopenharmony_ci assets_.reserve(assets.size()); 37753c3577eSopenharmony_ci for (auto &asset : assets) { 37853c3577eSopenharmony_ci assets_.emplace_back(std::move(asset)); 37953c3577eSopenharmony_ci } 38053c3577eSopenharmony_ci} 38153c3577eSopenharmony_ci 38253c3577eSopenharmony_ciValueProxy::Assets::Assets(DistributedDB::Assets assets) 38353c3577eSopenharmony_ci{ 38453c3577eSopenharmony_ci assets_.clear(); 38553c3577eSopenharmony_ci assets_.reserve(assets.size()); 38653c3577eSopenharmony_ci for (auto &asset : assets) { 38753c3577eSopenharmony_ci assets_.emplace_back(std::move(asset)); 38853c3577eSopenharmony_ci } 38953c3577eSopenharmony_ci} 39053c3577eSopenharmony_ci 39153c3577eSopenharmony_ciValueProxy::Assets &ValueProxy::Assets::operator=(const Assets &proxy) 39253c3577eSopenharmony_ci{ 39353c3577eSopenharmony_ci if (this == &proxy) { 39453c3577eSopenharmony_ci return *this; 39553c3577eSopenharmony_ci } 39653c3577eSopenharmony_ci assets_ = proxy.assets_; 39753c3577eSopenharmony_ci return *this; 39853c3577eSopenharmony_ci} 39953c3577eSopenharmony_ci 40053c3577eSopenharmony_ciValueProxy::Assets &ValueProxy::Assets::operator=(Assets &&proxy) noexcept 40153c3577eSopenharmony_ci{ 40253c3577eSopenharmony_ci if (this == &proxy) { 40353c3577eSopenharmony_ci return *this; 40453c3577eSopenharmony_ci } 40553c3577eSopenharmony_ci assets_ = std::move(proxy.assets_); 40653c3577eSopenharmony_ci return *this; 40753c3577eSopenharmony_ci} 40853c3577eSopenharmony_ci 40953c3577eSopenharmony_ciValueProxy::Assets::operator NativeRdb::ValueObject::Assets() 41053c3577eSopenharmony_ci{ 41153c3577eSopenharmony_ci NativeRdb::ValueObject::Assets assets; 41253c3577eSopenharmony_ci assets.reserve(assets_.size()); 41353c3577eSopenharmony_ci for (auto &asset : assets_) { 41453c3577eSopenharmony_ci assets.push_back(std::move(asset)); 41553c3577eSopenharmony_ci } 41653c3577eSopenharmony_ci return assets; 41753c3577eSopenharmony_ci} 41853c3577eSopenharmony_ci 41953c3577eSopenharmony_ciValueProxy::Assets::operator CommonType::Assets() 42053c3577eSopenharmony_ci{ 42153c3577eSopenharmony_ci CommonType::Assets assets; 42253c3577eSopenharmony_ci assets.reserve(assets_.size()); 42353c3577eSopenharmony_ci for (auto &asset : assets_) { 42453c3577eSopenharmony_ci assets.push_back(std::move(asset)); 42553c3577eSopenharmony_ci } 42653c3577eSopenharmony_ci return assets; 42753c3577eSopenharmony_ci} 42853c3577eSopenharmony_ci 42953c3577eSopenharmony_ciValueProxy::Assets::operator DistributedData::Assets() 43053c3577eSopenharmony_ci{ 43153c3577eSopenharmony_ci DistributedData::Assets assets; 43253c3577eSopenharmony_ci assets.reserve(assets_.size()); 43353c3577eSopenharmony_ci for (auto &asset : assets_) { 43453c3577eSopenharmony_ci assets.push_back(std::move(asset)); 43553c3577eSopenharmony_ci } 43653c3577eSopenharmony_ci return assets; 43753c3577eSopenharmony_ci} 43853c3577eSopenharmony_ci 43953c3577eSopenharmony_ciValueProxy::Assets::operator DistributedDB::Assets() 44053c3577eSopenharmony_ci{ 44153c3577eSopenharmony_ci DistributedDB::Assets assets; 44253c3577eSopenharmony_ci assets.reserve(assets_.size()); 44353c3577eSopenharmony_ci for (auto &asset : assets_) { 44453c3577eSopenharmony_ci assets.push_back(std::move(asset)); 44553c3577eSopenharmony_ci } 44653c3577eSopenharmony_ci return assets; 44753c3577eSopenharmony_ci} 44853c3577eSopenharmony_ci 44953c3577eSopenharmony_ciValueProxy::Value &ValueProxy::Value::operator=(ValueProxy::Value &&value) noexcept 45053c3577eSopenharmony_ci{ 45153c3577eSopenharmony_ci if (this == &value) { 45253c3577eSopenharmony_ci return *this; 45353c3577eSopenharmony_ci } 45453c3577eSopenharmony_ci value_ = std::move(value.value_); 45553c3577eSopenharmony_ci return *this; 45653c3577eSopenharmony_ci} 45753c3577eSopenharmony_ci 45853c3577eSopenharmony_ciValueProxy::Value::operator NativeRdb::ValueObject() 45953c3577eSopenharmony_ci{ 46053c3577eSopenharmony_ci NativeRdb::ValueObject object; 46153c3577eSopenharmony_ci DistributedData::Convert(std::move(value_), object.value); 46253c3577eSopenharmony_ci return object; 46353c3577eSopenharmony_ci} 46453c3577eSopenharmony_ci 46553c3577eSopenharmony_ciValueProxy::Value::operator CommonType::Value() 46653c3577eSopenharmony_ci{ 46753c3577eSopenharmony_ci CommonType::Value object; 46853c3577eSopenharmony_ci DistributedData::Convert(std::move(value_), object); 46953c3577eSopenharmony_ci return object; 47053c3577eSopenharmony_ci} 47153c3577eSopenharmony_ci 47253c3577eSopenharmony_ciValueProxy::Value::operator DistributedData::Value() 47353c3577eSopenharmony_ci{ 47453c3577eSopenharmony_ci DistributedData::Value value; 47553c3577eSopenharmony_ci DistributedData::Convert(std::move(value_), value); 47653c3577eSopenharmony_ci return value; 47753c3577eSopenharmony_ci} 47853c3577eSopenharmony_ci 47953c3577eSopenharmony_ciValueProxy::Value::operator DistributedDB::Type() 48053c3577eSopenharmony_ci{ 48153c3577eSopenharmony_ci DistributedDB::Type value; 48253c3577eSopenharmony_ci DistributedData::Convert(std::move(value_), value); 48353c3577eSopenharmony_ci return value; 48453c3577eSopenharmony_ci} 48553c3577eSopenharmony_ci 48653c3577eSopenharmony_ciValueProxy::Values &ValueProxy::Values::operator=(ValueProxy::Values &&values) noexcept 48753c3577eSopenharmony_ci{ 48853c3577eSopenharmony_ci if (this == &values) { 48953c3577eSopenharmony_ci return *this; 49053c3577eSopenharmony_ci } 49153c3577eSopenharmony_ci value_ = std::move(values.value_); 49253c3577eSopenharmony_ci return *this; 49353c3577eSopenharmony_ci} 49453c3577eSopenharmony_ci 49553c3577eSopenharmony_ciValueProxy::Bucket &ValueProxy::Bucket::operator=(Bucket &&bucket) noexcept 49653c3577eSopenharmony_ci{ 49753c3577eSopenharmony_ci if (this == &bucket) { 49853c3577eSopenharmony_ci return *this; 49953c3577eSopenharmony_ci } 50053c3577eSopenharmony_ci value_ = std::move(bucket.value_); 50153c3577eSopenharmony_ci return *this; 50253c3577eSopenharmony_ci} 50353c3577eSopenharmony_ci 50453c3577eSopenharmony_ciValueProxy::Bucket::operator NativeRdb::ValuesBucket() 50553c3577eSopenharmony_ci{ 50653c3577eSopenharmony_ci NativeRdb::ValuesBucket bucket; 50753c3577eSopenharmony_ci for (auto &[key, value] : value_) { 50853c3577eSopenharmony_ci bucket.values_.insert_or_assign(key, std::move(value)); 50953c3577eSopenharmony_ci } 51053c3577eSopenharmony_ci value_.clear(); 51153c3577eSopenharmony_ci return bucket; 51253c3577eSopenharmony_ci} 51353c3577eSopenharmony_ci 51453c3577eSopenharmony_ciValueProxy::Bucket::operator CommonType::ValuesBucket() 51553c3577eSopenharmony_ci{ 51653c3577eSopenharmony_ci CommonType::ValuesBucket bucket; 51753c3577eSopenharmony_ci for (auto &[key, value] : value_) { 51853c3577eSopenharmony_ci bucket.insert_or_assign(key, std::move(value)); 51953c3577eSopenharmony_ci } 52053c3577eSopenharmony_ci value_.clear(); 52153c3577eSopenharmony_ci return bucket; 52253c3577eSopenharmony_ci} 52353c3577eSopenharmony_ci 52453c3577eSopenharmony_ciValueProxy::Buckets &ValueProxy::Buckets::operator=(Buckets &&buckets) noexcept 52553c3577eSopenharmony_ci{ 52653c3577eSopenharmony_ci if (this == &buckets) { 52753c3577eSopenharmony_ci return *this; 52853c3577eSopenharmony_ci } 52953c3577eSopenharmony_ci value_ = std::move(buckets.value_); 53053c3577eSopenharmony_ci return *this; 53153c3577eSopenharmony_ci} 53253c3577eSopenharmony_ci 53353c3577eSopenharmony_ciValueProxy::TempAsset::TempAsset(DistributedDB::Asset asset) 53453c3577eSopenharmony_ci{ 53553c3577eSopenharmony_ci asset_ = DistributedData::Asset { .version = asset.version, 53653c3577eSopenharmony_ci .status = ConvertToDataStatus(asset.status), 53753c3577eSopenharmony_ci .expiresTime = DistributedData::Asset::NO_EXPIRES_TIME, 53853c3577eSopenharmony_ci .id = std::move(asset.assetId), 53953c3577eSopenharmony_ci .name = std::move(asset.name), 54053c3577eSopenharmony_ci .uri = std::move(asset.uri), 54153c3577eSopenharmony_ci .createTime = std::move(asset.createTime), 54253c3577eSopenharmony_ci .modifyTime = std::move(asset.modifyTime), 54353c3577eSopenharmony_ci .size = std::move(asset.size), 54453c3577eSopenharmony_ci .hash = std::move(asset.hash), 54553c3577eSopenharmony_ci .path = std::move(asset.subpath) }; 54653c3577eSopenharmony_ci} 54753c3577eSopenharmony_ci 54853c3577eSopenharmony_ciValueProxy::TempAsset::operator NativeRdb::AssetValue() 54953c3577eSopenharmony_ci{ 55053c3577eSopenharmony_ci return NativeRdb::AssetValue { .version = asset_.version, 55153c3577eSopenharmony_ci .status = asset_.status, 55253c3577eSopenharmony_ci .expiresTime = asset_.expiresTime, 55353c3577eSopenharmony_ci .id = std::move(asset_.id), 55453c3577eSopenharmony_ci .name = std::move(asset_.name), 55553c3577eSopenharmony_ci .uri = std::move(asset_.uri), 55653c3577eSopenharmony_ci .createTime = std::move(asset_.createTime), 55753c3577eSopenharmony_ci .modifyTime = std::move(asset_.modifyTime), 55853c3577eSopenharmony_ci .size = std::move(asset_.size), 55953c3577eSopenharmony_ci .hash = std::move(asset_.hash), 56053c3577eSopenharmony_ci .path = std::move(asset_.path) }; 56153c3577eSopenharmony_ci} 56253c3577eSopenharmony_ci 56353c3577eSopenharmony_ciuint32_t ValueProxy::TempAsset::ConvertToDataStatus(const uint32_t &status) 56453c3577eSopenharmony_ci{ 56553c3577eSopenharmony_ci auto highStatus = GetHighStatus(status); 56653c3577eSopenharmony_ci auto lowStatus = GetLowStatus(status); 56753c3577eSopenharmony_ci switch (lowStatus) { 56853c3577eSopenharmony_ci case DistributedDB::AssetStatus::NORMAL: 56953c3577eSopenharmony_ci lowStatus = static_cast<uint32_t>(DistributedData::Asset::STATUS_NORMAL); 57053c3577eSopenharmony_ci break; 57153c3577eSopenharmony_ci case DistributedDB::AssetStatus::ABNORMAL: 57253c3577eSopenharmony_ci lowStatus = static_cast<uint32_t>(DistributedData::Asset::STATUS_ABNORMAL); 57353c3577eSopenharmony_ci break; 57453c3577eSopenharmony_ci case DistributedDB::AssetStatus::INSERT: 57553c3577eSopenharmony_ci lowStatus = static_cast<uint32_t>(DistributedData::Asset::STATUS_INSERT); 57653c3577eSopenharmony_ci break; 57753c3577eSopenharmony_ci case DistributedDB::AssetStatus::UPDATE: 57853c3577eSopenharmony_ci lowStatus = static_cast<uint32_t>(DistributedData::Asset::STATUS_UPDATE); 57953c3577eSopenharmony_ci break; 58053c3577eSopenharmony_ci case DistributedDB::AssetStatus::DELETE: 58153c3577eSopenharmony_ci lowStatus = static_cast<uint32_t>(DistributedData::Asset::STATUS_DELETE); 58253c3577eSopenharmony_ci break; 58353c3577eSopenharmony_ci case DistributedDB::AssetStatus::DOWNLOADING: 58453c3577eSopenharmony_ci lowStatus = static_cast<uint32_t>(DistributedData::Asset::STATUS_DOWNLOADING); 58553c3577eSopenharmony_ci break; 58653c3577eSopenharmony_ci default: 58753c3577eSopenharmony_ci lowStatus = static_cast<uint32_t>(DistributedData::Asset::STATUS_NORMAL); 58853c3577eSopenharmony_ci } 58953c3577eSopenharmony_ci return lowStatus | highStatus; 59053c3577eSopenharmony_ci} 59153c3577eSopenharmony_ci} // namespace OHOS::DistributedData