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