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 I_DATASHARE_H
17#define I_DATASHARE_H
18
19#include <iremote_broker.h>
20
21#include "datashare_business_error.h"
22#include "datashare_operation_statement.h"
23#include "datashare_predicates.h"
24#include "datashare_result_set.h"
25#include "datashare_values_bucket.h"
26#include "distributeddata_data_share_ipc_interface_code.h"
27#include "uri.h"
28
29namespace OHOS {
30namespace AAFwk {
31class IDataAbilityObserver;
32}
33
34namespace DataShare {
35class IDataShare : public IRemoteBroker {
36public:
37    DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.DataShare.IDataShare");
38
39    virtual int OpenFile(const Uri &uri, const std::string &mode) = 0;
40
41    virtual int OpenRawFile(const Uri &uri, const std::string &mode) = 0;
42
43    virtual int Insert(const Uri &uri, const DataShareValuesBucket &value) = 0;
44
45    virtual int InsertExt(const Uri &uri, const DataShareValuesBucket &value, std::string &result) = 0;
46
47    virtual int Update(const Uri &uri, const DataSharePredicates &predicates, const DataShareValuesBucket &value) = 0;
48
49    virtual int BatchUpdate(const UpdateOperations &operations, std::vector<BatchUpdateResult> &results) = 0;
50
51    virtual int Delete(const Uri &uri, const DataSharePredicates &predicates) = 0;
52
53    virtual std::shared_ptr<DataShareResultSet> Query(const Uri &uri, const DataSharePredicates &predicates,
54        std::vector<std::string> &columns, DatashareBusinessError &businessError) = 0;
55
56    virtual std::string GetType(const Uri &uri) = 0;
57
58    virtual int BatchInsert(const Uri &uri, const std::vector<DataShareValuesBucket> &values) = 0;
59
60    virtual int ExecuteBatch(const std::vector<OperationStatement> &statements, ExecResultSet &result) = 0;
61
62    virtual bool RegisterObserver(const Uri &uri, const sptr<AAFwk::IDataAbilityObserver> &dataObserver) = 0;
63
64    virtual bool UnregisterObserver(const Uri &uri, const sptr<AAFwk::IDataAbilityObserver> &dataObserver) = 0;
65
66    virtual bool NotifyChange(const Uri &uri) = 0;
67
68    virtual Uri NormalizeUri(const Uri &uri) = 0;
69
70    virtual Uri DenormalizeUri(const Uri &uri) = 0;
71
72    virtual std::vector<std::string> GetFileTypes(const Uri &uri, const std::string &mimeTypeFilter) = 0;
73
74    virtual std::pair<int32_t, int32_t> InsertEx(const Uri &uri, const DataShareValuesBucket &value) = 0;
75
76    virtual std::pair<int32_t, int32_t> UpdateEx(
77        const Uri &uri, const DataSharePredicates &predicates, const DataShareValuesBucket &value) = 0;
78
79    virtual std::pair<int32_t, int32_t> DeleteEx(const Uri &uri, const DataSharePredicates &predicates) = 0;
80};
81} // namespace DataShare
82} // namespace OHOS
83#endif // I_DATASHARE_H
84
85