125c1cde8Sopenharmony_ci/* 225c1cde8Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd. 325c1cde8Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 425c1cde8Sopenharmony_ci * you may not use this file except in compliance with the License. 525c1cde8Sopenharmony_ci * You may obtain a copy of the License at 625c1cde8Sopenharmony_ci * 725c1cde8Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 825c1cde8Sopenharmony_ci * 925c1cde8Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1025c1cde8Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1125c1cde8Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1225c1cde8Sopenharmony_ci * See the License for the specific language governing permissions and 1325c1cde8Sopenharmony_ci * limitations under the License. 1425c1cde8Sopenharmony_ci */ 1525c1cde8Sopenharmony_ci 1625c1cde8Sopenharmony_ci#include "rdb_base_helper.h" 1725c1cde8Sopenharmony_ci 1825c1cde8Sopenharmony_ci#include <regex> 1925c1cde8Sopenharmony_ci 2025c1cde8Sopenharmony_ci#include "abs_shared_result_set.h" 2125c1cde8Sopenharmony_ci#include "data_storage_log_wrapper.h" 2225c1cde8Sopenharmony_ci#include "new" 2325c1cde8Sopenharmony_ci#include "rdb_errno.h" 2425c1cde8Sopenharmony_ci#include "rdb_helper.h" 2525c1cde8Sopenharmony_ci#include "rdb_store.h" 2625c1cde8Sopenharmony_ci#include "type_traits" 2725c1cde8Sopenharmony_ci 2825c1cde8Sopenharmony_cinamespace OHOS { 2925c1cde8Sopenharmony_cinamespace NativeRdb { 3025c1cde8Sopenharmony_ciclass AbsRdbPredicates; 3125c1cde8Sopenharmony_ciclass RdbOpenCallback; 3225c1cde8Sopenharmony_ciclass RdbStoreConfig; 3325c1cde8Sopenharmony_ciclass ValueObject; 3425c1cde8Sopenharmony_ciclass ValuesBucket; 3525c1cde8Sopenharmony_ci} // namespace NativeRdb 3625c1cde8Sopenharmony_cinamespace Telephony { 3725c1cde8Sopenharmony_ciint RdbBaseHelper::Insert(int64_t &id, const NativeRdb::ValuesBucket &initialValues, const std::string &table) 3825c1cde8Sopenharmony_ci{ 3925c1cde8Sopenharmony_ci int ret = IsExistStore(); 4025c1cde8Sopenharmony_ci if (ret == NativeRdb::E_OK) { 4125c1cde8Sopenharmony_ci ret = store_->Insert(id, table, initialValues); 4225c1cde8Sopenharmony_ci } 4325c1cde8Sopenharmony_ci return ret; 4425c1cde8Sopenharmony_ci} 4525c1cde8Sopenharmony_ci 4625c1cde8Sopenharmony_ciint RdbBaseHelper::Update(int &changedRows, const std::string &table, const NativeRdb::ValuesBucket &values, 4725c1cde8Sopenharmony_ci const std::string &whereClause, const std::vector<std::string> &whereArgs) 4825c1cde8Sopenharmony_ci{ 4925c1cde8Sopenharmony_ci int ret = IsExistStore(); 5025c1cde8Sopenharmony_ci if (ret == NativeRdb::E_OK) { 5125c1cde8Sopenharmony_ci ret = store_->Update(changedRows, table, values, whereClause, whereArgs); 5225c1cde8Sopenharmony_ci } 5325c1cde8Sopenharmony_ci return ret; 5425c1cde8Sopenharmony_ci} 5525c1cde8Sopenharmony_ci 5625c1cde8Sopenharmony_ciint RdbBaseHelper::Update(int &changedRows, const NativeRdb::ValuesBucket &values, 5725c1cde8Sopenharmony_ci const NativeRdb::AbsRdbPredicates &predicate) 5825c1cde8Sopenharmony_ci{ 5925c1cde8Sopenharmony_ci int ret = IsExistStore(); 6025c1cde8Sopenharmony_ci if (ret == NativeRdb::E_OK) { 6125c1cde8Sopenharmony_ci ret = store_->Update(changedRows, values, predicate); 6225c1cde8Sopenharmony_ci } 6325c1cde8Sopenharmony_ci return ret; 6425c1cde8Sopenharmony_ci} 6525c1cde8Sopenharmony_ci 6625c1cde8Sopenharmony_ciint RdbBaseHelper::Delete(int &changedRows, const std::string &table, const std::string &whereClause, 6725c1cde8Sopenharmony_ci const std::vector<std::string> &whereArgs) 6825c1cde8Sopenharmony_ci{ 6925c1cde8Sopenharmony_ci int ret = IsExistStore(); 7025c1cde8Sopenharmony_ci if (ret == NativeRdb::E_OK) { 7125c1cde8Sopenharmony_ci ret = store_->Delete(changedRows, table, whereClause, whereArgs); 7225c1cde8Sopenharmony_ci } 7325c1cde8Sopenharmony_ci return ret; 7425c1cde8Sopenharmony_ci} 7525c1cde8Sopenharmony_ci 7625c1cde8Sopenharmony_ciint RdbBaseHelper::Delete(int &deletedRows, const NativeRdb::AbsRdbPredicates &predicates) 7725c1cde8Sopenharmony_ci{ 7825c1cde8Sopenharmony_ci int ret = IsExistStore(); 7925c1cde8Sopenharmony_ci if (ret == NativeRdb::E_OK) { 8025c1cde8Sopenharmony_ci ret = store_->Delete(deletedRows, predicates); 8125c1cde8Sopenharmony_ci } 8225c1cde8Sopenharmony_ci return ret; 8325c1cde8Sopenharmony_ci} 8425c1cde8Sopenharmony_ci 8525c1cde8Sopenharmony_ciint RdbBaseHelper::ExecuteSql(const std::string &sql) 8625c1cde8Sopenharmony_ci{ 8725c1cde8Sopenharmony_ci int ret = IsExistStore(); 8825c1cde8Sopenharmony_ci if (ret == NativeRdb::E_OK) { 8925c1cde8Sopenharmony_ci ret = store_->ExecuteSql(sql); 9025c1cde8Sopenharmony_ci } 9125c1cde8Sopenharmony_ci return ret; 9225c1cde8Sopenharmony_ci} 9325c1cde8Sopenharmony_ci 9425c1cde8Sopenharmony_ciint RdbBaseHelper::ExecuteSql(const std::string &sql, const std::vector<NativeRdb::ValueObject> &bindArgs) 9525c1cde8Sopenharmony_ci{ 9625c1cde8Sopenharmony_ci int ret = IsExistStore(); 9725c1cde8Sopenharmony_ci if (ret == NativeRdb::E_OK) { 9825c1cde8Sopenharmony_ci ret = store_->ExecuteSql(sql, bindArgs); 9925c1cde8Sopenharmony_ci } 10025c1cde8Sopenharmony_ci return ret; 10125c1cde8Sopenharmony_ci} 10225c1cde8Sopenharmony_ci 10325c1cde8Sopenharmony_cistd::shared_ptr<NativeRdb::ResultSet> RdbBaseHelper::QuerySql( 10425c1cde8Sopenharmony_ci const std::string &sql, const std::vector<std::string> &selectionArgs) 10525c1cde8Sopenharmony_ci{ 10625c1cde8Sopenharmony_ci int ret = IsExistStore(); 10725c1cde8Sopenharmony_ci if (ret == NativeRdb::E_OK) { 10825c1cde8Sopenharmony_ci return store_->QuerySql(sql); 10925c1cde8Sopenharmony_ci } 11025c1cde8Sopenharmony_ci return nullptr; 11125c1cde8Sopenharmony_ci} 11225c1cde8Sopenharmony_ci 11325c1cde8Sopenharmony_cistd::shared_ptr<NativeRdb::ResultSet> RdbBaseHelper::Query( 11425c1cde8Sopenharmony_ci const NativeRdb::AbsRdbPredicates &predicates, const std::vector<std::string> columns) 11525c1cde8Sopenharmony_ci{ 11625c1cde8Sopenharmony_ci int ret = IsExistStore(); 11725c1cde8Sopenharmony_ci if (ret == NativeRdb::E_OK) { 11825c1cde8Sopenharmony_ci return store_->Query(predicates, columns); 11925c1cde8Sopenharmony_ci } 12025c1cde8Sopenharmony_ci return nullptr; 12125c1cde8Sopenharmony_ci} 12225c1cde8Sopenharmony_ci 12325c1cde8Sopenharmony_ciint RdbBaseHelper::IsExistStore() 12425c1cde8Sopenharmony_ci{ 12525c1cde8Sopenharmony_ci if (store_ == nullptr) { 12625c1cde8Sopenharmony_ci DATA_STORAGE_LOGE("RdbBaseHelper::IsExistStore NativeRdb::RdbStore is null!"); 12725c1cde8Sopenharmony_ci return NativeRdb::E_ERROR; 12825c1cde8Sopenharmony_ci } 12925c1cde8Sopenharmony_ci return NativeRdb::E_OK; 13025c1cde8Sopenharmony_ci} 13125c1cde8Sopenharmony_ci 13225c1cde8Sopenharmony_civoid RdbBaseHelper::CreateRdbStore( 13325c1cde8Sopenharmony_ci const NativeRdb::RdbStoreConfig &config, int version, NativeRdb::RdbOpenCallback &openCallback, int &errCode) 13425c1cde8Sopenharmony_ci{ 13525c1cde8Sopenharmony_ci DATA_STORAGE_LOGD("RdbBaseHelper::CreateRdbStore"); 13625c1cde8Sopenharmony_ci store_ = NativeRdb::RdbHelper::GetRdbStore(config, version, openCallback, errCode); 13725c1cde8Sopenharmony_ci} 13825c1cde8Sopenharmony_ci 13925c1cde8Sopenharmony_ciint RdbBaseHelper::BeginTransaction() 14025c1cde8Sopenharmony_ci{ 14125c1cde8Sopenharmony_ci int ret = IsExistStore(); 14225c1cde8Sopenharmony_ci if (ret == NativeRdb::E_OK) { 14325c1cde8Sopenharmony_ci ret = store_->BeginTransaction(); 14425c1cde8Sopenharmony_ci } 14525c1cde8Sopenharmony_ci return ret; 14625c1cde8Sopenharmony_ci} 14725c1cde8Sopenharmony_ci 14825c1cde8Sopenharmony_ciint RdbBaseHelper::RollBack() 14925c1cde8Sopenharmony_ci{ 15025c1cde8Sopenharmony_ci int ret = IsExistStore(); 15125c1cde8Sopenharmony_ci if (ret == NativeRdb::E_OK) { 15225c1cde8Sopenharmony_ci ret = store_->RollBack(); 15325c1cde8Sopenharmony_ci } 15425c1cde8Sopenharmony_ci return ret; 15525c1cde8Sopenharmony_ci} 15625c1cde8Sopenharmony_ci 15725c1cde8Sopenharmony_ciint RdbBaseHelper::Commit() 15825c1cde8Sopenharmony_ci{ 15925c1cde8Sopenharmony_ci int ret = IsExistStore(); 16025c1cde8Sopenharmony_ci if (ret == NativeRdb::E_OK) { 16125c1cde8Sopenharmony_ci ret = store_->Commit(); 16225c1cde8Sopenharmony_ci } 16325c1cde8Sopenharmony_ci return ret; 16425c1cde8Sopenharmony_ci} 16525c1cde8Sopenharmony_ci 16625c1cde8Sopenharmony_ciint RdbBaseHelper::BatchInsert(int64_t &id, const NativeRdb::ValuesBucket &initialValues, const std::string &table) 16725c1cde8Sopenharmony_ci{ 16825c1cde8Sopenharmony_ci return NativeRdb::E_OK; 16925c1cde8Sopenharmony_ci} 17025c1cde8Sopenharmony_ci 17125c1cde8Sopenharmony_civoid RdbBaseHelper::ReplaceAllStr(std::string &path, const std::string &oldStr, const std::string &newStr) 17225c1cde8Sopenharmony_ci{ 17325c1cde8Sopenharmony_ci path = std::regex_replace(path, std::regex(oldStr), newStr); 17425c1cde8Sopenharmony_ci} 17525c1cde8Sopenharmony_ci} // namespace Telephony 17625c1cde8Sopenharmony_ci} // namespace OHOS 177