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