1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef CLOUD_DB_CONSTANT_H
17 #define CLOUD_DB_CONSTANT_H
18 
19 #include "cloud/cloud_store_types.h"
20 #include <string>
21 
22 namespace DistributedDB {
23 class CloudDbConstant {
24 public:
25     static constexpr const char *CLOUD_META_TABLE_PREFIX = "naturalbase_cloud_meta_";
26     static constexpr const char *GID_FIELD = "#_gid";
27     static constexpr const char *CREATE_FIELD = "#_createTime";
28     static constexpr const char *MODIFY_FIELD = "#_modifyTime";
29     static constexpr const char *DELETE_FIELD = "#_deleted";
30     static constexpr const char *CURSOR_FIELD = "#_cursor";
31     static constexpr const char *TYPE_FIELD = "#_type";
32     static constexpr const char *QUERY_FIELD = "#_query";
33     static constexpr const char *REFERENCE_FIELD = "#_reference";
34     static constexpr const char *VERSION_FIELD = "#_version";
35     static constexpr const char *ERROR_FIELD = "#_error";
36     static constexpr const char *SHARING_RESOURCE_FIELD = "#_sharing_resource";
37     static constexpr const char *HASH_KEY_FIELD = "#_hash_key";
38     static constexpr const char *ROW_ID_FIELD_NAME = "rowid";
39     static constexpr const char *ASSET = "asset";
40     static constexpr const char *ASSETS = "assets";
41     static constexpr const char *SHARED = "_shared";
42     static constexpr const char *CLOUD_OWNER = "cloud_owner";
43     static constexpr const char *CLOUD_PRIVILEGE = "cloud_privilege";
44     static constexpr const char *DEFAULT_CLOUD_DEV = "cloud";
45 
46     // use for inner
47     static constexpr const char *ROWID = "rowid";
48     static constexpr const char *FLAG = "flag";
49     static constexpr const char *TIMESTAMP = "timestamp";
50     static constexpr const char *HASH_KEY = "hash_key";
51     static constexpr const char *STATUS = "status";
52     static constexpr const char *CLOUD_FLAG = "cloud_flag";
53 
54     // kv cloud field
55     static constexpr const char *CLOUD_KV_FIELD_KEY = "key";
56     static constexpr const char *CLOUD_KV_FIELD_VALUE = "value";
57     static constexpr const char *CLOUD_KV_FIELD_DEVICE = "cur_device";
58     static constexpr const char *CLOUD_KV_FIELD_ORI_DEVICE = "ori_device";
59     static constexpr const char *CLOUD_KV_FIELD_DEVICE_CREATE_TIME = "device_create_time";
60     static constexpr const char *CLOUD_KV_TABLE_NAME = "sync_data";
61     static constexpr const char *CLOUD_KV_FIELD_USERID = "userid";
62 
63     // data status changes to lock_change
64     static constexpr const char *TO_LOCAL_CHANGE = "status = CASE WHEN status == 2 THEN 3 ELSE status END";
65     // data status changes from unlocking to unlock
66     static constexpr const char *UNLOCKING_TO_UNLOCK = "status = CASE WHEN status == 1 THEN 0 ELSE status END";
67     // data status changes to unlock
68     static constexpr const char *TO_UNLOCK = "status = CASE WHEN status == 2 THEN 0 WHEN status == 3 THEN 1"
69         " ELSE status END";
70     // data status changes to lock
71     static constexpr const char *TO_LOCK = "status = CASE WHEN status == 0 THEN 2 WHEN status == 1 THEN 3"
72         " ELSE status END";
73 
74     static constexpr const char *CLOUD_VERSION_RECORD_PREFIX_KEY = "naturalbase_cloud_version_";
75 
76     static constexpr const char *FLAG_AND_DATA_MODE_NOTIFY = "DELETE#ALL_CLOUDDATA";
77 
78     static constexpr const char *FLAG_ONLY_MODE_NOTIFY = "RESERVE#ALL_CLOUDDATA";
79 
80     // cloud data timestamp is utc ms precision
81     // used for 100ns to ms when handle cloud data timestamp
82     static constexpr uint32_t TEN_THOUSAND = 10000;
83     static constexpr int64_t CLOUD_DEFAULT_TIMEOUT = -1;
84     static constexpr uint32_t ONE_SECOND = 1000 * TEN_THOUSAND; // 1000ms
85 
86     static constexpr int32_t MAX_UPLOAD_BATCH_COUNT = 2000;
87     static constexpr int32_t MIN_UPLOAD_BATCH_COUNT = 1;
88     static constexpr int32_t MAX_UPLOAD_SIZE = 128 * 1024 * 1024; // 128M
89     static constexpr int32_t MIN_UPLOAD_SIZE = 1024; // 1024Bytes
90     static constexpr int32_t MIN_RETRY_CONFLICT_COUNTS = -1; // unlimited
91 };
92 } // namespace DistributedDB
93 #endif // CLOUD_DB_CONSTANT_H