1 /*
2  * Copyright (c) 2021 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 KV_STORE_NB_DELEGATE_H_MOCK
17 #define KV_STORE_NB_DELEGATE_H_MOCK
18 
19 #include <functional>
20 #include <map>
21 #include <string>
22 
23 #include "cloud/cloud_store_types.h"
24 #include "cloud/icloud_db.h"
25 #include "intercepted_data.h"
26 #include "iprocess_system_api_adapter.h"
27 #include "kv_store_nb_delegate.h"
28 #include "kv_store_nb_conflict_data.h"
29 #include "kv_store_observer.h"
30 #include "kv_store_result_set.h"
31 #include "query.h"
32 #include "store_types.h"
33 
34 namespace DistributedDB {
35 class KvStoreNbDelegateMock : public DistributedDB::KvStoreNbDelegate {
36 public:
37     int32_t taskCountMock_ = 0;
38     ~KvStoreNbDelegateMock() = default;
39     DBStatus Get(const Key &key, Value &value) const;
40     DBStatus GetEntries(const Key &keyPrefix, std::vector<Entry> &entries) const;
41     DBStatus GetEntries(const Key &keyPrefix, KvStoreResultSet *&resultSet) const;
42     DBStatus GetEntries(const Query &query, std::vector<Entry> &entries) const;
43     DBStatus GetEntries(const Query &query, KvStoreResultSet *&resultSet) const;
44     DBStatus GetCount(const Query &query, int &count) const;
45     DBStatus CloseResultSet(KvStoreResultSet *&resultSet);
46     DBStatus Put(const Key &key, const Value &value);
47     DBStatus PutBatch(const std::vector<Entry> &entries);
48     DBStatus DeleteBatch(const std::vector<Key> &keys);
49     DBStatus Delete(const Key &key);
50     DBStatus GetLocal(const Key &key, Value &value) const;
51     DBStatus GetLocalEntries(const Key &keyPrefix, std::vector<Entry> &entries) const;
52     DBStatus PutLocal(const Key &key, const Value &value);
53     DBStatus DeleteLocal(const Key &key);
54     DBStatus PublishLocal(const Key &key, bool deleteLocal, bool updateTimestamp,
55         const KvStoreNbPublishOnConflict &onConflict);
56     DBStatus UnpublishToLocal(const Key &key, bool deletePublic, bool updateTimestamp);
57     DBStatus RegisterObserver(const Key &key, unsigned int mode, KvStoreObserver *observer);
58     DBStatus UnRegisterObserver(const KvStoreObserver *observer);
59     DBStatus RemoveDeviceData(const std::string &device);
60     std::string GetStoreId() const;
61     DBStatus Sync(const std::vector<std::string> &devices, SyncMode mode,
62         const std::function<void(const std::map<std::string, DBStatus> &devicesMap)> &onComplete,
63         bool wait = false);
64     DBStatus Pragma(PragmaCmd cmd, PragmaData &paramData);
65     DBStatus SetConflictNotifier(int conflictType,
66         const KvStoreNbConflictNotifier &notifier);
67     DBStatus Rekey(const CipherPassword &password);
68     DBStatus Export(const std::string &filePath, const CipherPassword &passwd, bool force = false);
69     DBStatus Import(const std::string &filePath, const CipherPassword &passwd);
70     DBStatus StartTransaction();
71     DBStatus Commit();
72     DBStatus Rollback();
73     DBStatus PutLocalBatch(const std::vector<Entry> &entries);
74     DBStatus DeleteLocalBatch(const std::vector<Key> &keys);
75     DBStatus GetSecurityOption(SecurityOption &option) const;
76     DBStatus SetRemotePushFinishedNotify(const RemotePushFinishedNotifier &notifier);
77     DBStatus Sync(const std::vector<std::string> &devices, SyncMode mode,
78         const std::function<void(const std::map<std::string, DBStatus> &devicesMap)> &onComplete,
79         const Query &query, bool wait);
80     DBStatus CheckIntegrity() const;
81     DBStatus SetEqualIdentifier(const std::string &identifier,
82         const std::vector<std::string> &targets);
83     DBStatus SetPushDataInterceptor(const PushDataInterceptor &interceptor);
84     DBStatus SubscribeRemoteQuery(const std::vector<std::string> &devices,
85         const std::function<void(const std::map<std::string, DBStatus> &devicesMap)> &onComplete,
86         const Query &query, bool wait);
87     DBStatus UnSubscribeRemoteQuery(const std::vector<std::string> &devices,
88         const std::function<void(const std::map<std::string, DBStatus> &devicesMap)> &onComplete,
89         const Query &query, bool wait);
90     DBStatus RemoveDeviceData();
91     DBStatus GetKeys(const Key &keyPrefix, std::vector<Key> &keys) const;
92     size_t GetSyncDataSize(const std::string &device) const;
93     DBStatus UpdateKey(const UpdateKeyCallback &callback);
94     std::pair<DBStatus, WatermarkInfo> GetWatermarkInfo(const std::string &device);
95     DBStatus Sync(const CloudSyncOption &option, const SyncProcessCallback &onProcess);
96     DBStatus SetCloudDB(const std::map<std::string, std::shared_ptr<ICloudDb>> &cloudDBs);
97     DBStatus SetCloudDbSchema(const std::map<std::string, DataBaseSchema> &schema);
98     DBStatus RemoveDeviceData(const std::string &device, ClearMode mode);
99     DBStatus RemoveDeviceData(const std::string &device, const std::string &user, ClearMode mode);
100     int32_t GetTaskCount();
101     void SetGenCloudVersionCallback(const GenerateCloudVersionCallback &callback);
102     std::pair<DBStatus, std::map<std::string, std::string>> GetCloudVersion(
103         const std::string &device);
104     DBStatus SetReceiveDataInterceptor(const DataInterceptor &interceptor);
105     DBStatus SetCloudSyncConfig(const CloudSyncConfig &config);
106     DBStatus GetDeviceEntries(const std::string &device, std::vector<Entry> &entries) const;
107 };
108 } // namespace DistributedDB
109 #endif // KV_STORE_NB_DELEGATE_H_MOCK