1115cd2caSopenharmony_ci/*
2115cd2caSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3115cd2caSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4115cd2caSopenharmony_ci * you may not use this file except in compliance with the License.
5115cd2caSopenharmony_ci * You may obtain a copy of the License at
6115cd2caSopenharmony_ci *
7115cd2caSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8115cd2caSopenharmony_ci *
9115cd2caSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10115cd2caSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11115cd2caSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12115cd2caSopenharmony_ci * See the License for the specific language governing permissions and
13115cd2caSopenharmony_ci * limitations under the License.
14115cd2caSopenharmony_ci */
15115cd2caSopenharmony_ci
16115cd2caSopenharmony_ci#ifndef CALLLOG_DATABASE_H
17115cd2caSopenharmony_ci#define CALLLOG_DATABASE_H
18115cd2caSopenharmony_ci
19115cd2caSopenharmony_ci#include <pthread.h>
20115cd2caSopenharmony_ci
21115cd2caSopenharmony_ci#include "datashare_predicates.h"
22115cd2caSopenharmony_ci#include "datashare_result_set.h"
23115cd2caSopenharmony_ci#include "datashare_values_bucket.h"
24115cd2caSopenharmony_ci#include "rdb_errno.h"
25115cd2caSopenharmony_ci#include "rdb_helper.h"
26115cd2caSopenharmony_ci#include "rdb_open_callback.h"
27115cd2caSopenharmony_ci#include "rdb_predicates.h"
28115cd2caSopenharmony_ci#include "rdb_store.h"
29115cd2caSopenharmony_ci#include "value_object.h"
30115cd2caSopenharmony_ci
31115cd2caSopenharmony_ci#include "common.h"
32115cd2caSopenharmony_ci#include "contacts_columns.h"
33115cd2caSopenharmony_ci#include "hilog_wrapper.h"
34115cd2caSopenharmony_ci
35115cd2caSopenharmony_cinamespace OHOS {
36115cd2caSopenharmony_cinamespace Contacts {
37115cd2caSopenharmony_ciclass CallLogDataBase {
38115cd2caSopenharmony_cipublic:
39115cd2caSopenharmony_ci    static std::shared_ptr<CallLogDataBase> GetInstance();
40115cd2caSopenharmony_ci    static std::shared_ptr<OHOS::NativeRdb::RdbStore> store_;
41115cd2caSopenharmony_ci    int64_t InsertCallLog(OHOS::NativeRdb::ValuesBucket insertValues);
42115cd2caSopenharmony_ci    int UpdateCallLog(OHOS::NativeRdb::ValuesBucket values, OHOS::NativeRdb::RdbPredicates &rdbPredicates);
43115cd2caSopenharmony_ci    int DeleteCallLog(OHOS::NativeRdb::RdbPredicates &rdbPredicates);
44115cd2caSopenharmony_ci    std::shared_ptr<OHOS::NativeRdb::ResultSet> Query(
45115cd2caSopenharmony_ci        OHOS::NativeRdb::RdbPredicates &rdbPredicates, std::vector<std::string> columns);
46115cd2caSopenharmony_ci    int BeginTransaction();
47115cd2caSopenharmony_ci    int Commit();
48115cd2caSopenharmony_ci    int RollBack();
49115cd2caSopenharmony_ci    void QueryContactsByInsertCalls(OHOS::NativeRdb::ValuesBucket &insertValues);
50115cd2caSopenharmony_ci
51115cd2caSopenharmony_ciprivate:
52115cd2caSopenharmony_ci    CallLogDataBase();
53115cd2caSopenharmony_ci    CallLogDataBase(const CallLogDataBase &);
54115cd2caSopenharmony_ci    const CallLogDataBase &operator=(const CallLogDataBase &);
55115cd2caSopenharmony_ci    static std::shared_ptr<CallLogDataBase> callLogDataBase_;
56115cd2caSopenharmony_ci    int UpdateTopContact(OHOS::NativeRdb::ValuesBucket &insertValues);
57115cd2caSopenharmony_ci};
58115cd2caSopenharmony_ci
59115cd2caSopenharmony_ciclass SqliteOpenHelperCallLogCallback : public OHOS::NativeRdb::RdbOpenCallback {
60115cd2caSopenharmony_cipublic:
61115cd2caSopenharmony_ci    int OnCreate(OHOS::NativeRdb::RdbStore &rdbStore) override;
62115cd2caSopenharmony_ci    int OnUpgrade(OHOS::NativeRdb::RdbStore &rdbStore, int oldVersion, int newVersion) override;
63115cd2caSopenharmony_ci    int OnDowngrade(OHOS::NativeRdb::RdbStore &rdbStore, int currentVersion, int targetVersion) override;
64115cd2caSopenharmony_ci
65115cd2caSopenharmony_ciprivate:
66115cd2caSopenharmony_ci    void UpgradeToV2(OHOS::NativeRdb::RdbStore &store, int oldVersion, int newVersion);
67115cd2caSopenharmony_ci};
68115cd2caSopenharmony_ci} // namespace Contacts
69115cd2caSopenharmony_ci} // namespace OHOS
70115cd2caSopenharmony_ci
71115cd2caSopenharmony_ci#endif // CALLLOG_DATABASE_H
72