* Copyright (c) 2021-2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef CONTACTS_DATA_CALLLOG_COMMON_H
#define CONTACTS_DATA_CALLLOG_COMMON_H
#include <string>
#include <map>
#include "contacts_columns.h"
namespace OHOS {
namespace Contacts {
constexpr const char *CREATE_CALLLOG =
"CREATE TABLE IF NOT EXISTS [calllog]("
"[id] INTEGER PRIMARY KEY AUTOINCREMENT, "
"[slot_id] INTEGER NOT NULL DEFAULT 0, "
"[phone_number] TEXT, "
"[display_name] TEXT, "
"[call_direction] INTEGER NOT NULL DEFAULT 0, "
"[voicemail_uri] TEXT, "
"[sim_type] INTEGER , "
"[is_hd] INTEGER , "
"[is_read] INTEGER NOT NULL DEFAULT 0, "
"[ring_duration] INTEGER NOT NULL DEFAULT 0, "
"[talk_duration] INTEGER NOT NULL DEFAULT 0, "
"[format_number] TEXT, "
"[quicksearch_key] TEXT, "
"[number_type] INTEGER, "
"[number_type_name] TEXT, "
"[begin_time] INTEGER NOT NULL DEFAULT 0, "
"[end_time] INTEGER NOT NULL DEFAULT 0, "
"[answer_state] INTEGER , "
"[create_time] INTEGER, "
"[number_location] TEXT, "
"[photo_id] INTEGER, "
"[photo_uri] TEXT, "
"[country_iso_code] INTEGER, "
"[countryiso] TEXT, "
"[mark_type] TEXT, "
"[mark_content] TEXT, "
"[mark_details] TEXT, "
"[mark_source] TEXT, "
"[block_reason] INTEGER, "
"[is_cloud_mark] INTEGER DEFAULT 0, "
"[mark_count] INTEGER DEFAULT 0, "
"[hw_is_satellite] INTEGER DEFAULT 0, "
"[is_block] INTEGER DEFAULT 0, "
"[celia_call_type] INTEGER DEFAULT -1, "
"[privacy_tag] INTEGER DEFAULT -1, "
"[extra1] TEXT, "
"[extra2] TEXT, "
"[extra3] TEXT, "
"[extra4] TEXT, "
"[extra5] TEXT, "
"[extra6] TEXT, "
"[features] INTEGER DEFAULT 0, "
"[format_phone_number] TEXT, "
"[is_cnap] INTEGER DEFAULT 0, "
"[new_calling] INTEGER DEFAULT 0, "
"[detect_details] TEXT, "
"[start_time] INTEGER DEFAULT 0, "
"[abstract_type] TEXT, "
"[abstract_profile] VARCHAR(256), "
"[abs_status] TEXT, "
"[abs_code] TEXT DEFAULT '-1', "
"[fail_abs_record_id] INTEGER DEFAULT 0, "
"[fail_abs_record_status] TEXT, "
"[fail_abs_record_updater] TEXT, "
"[fail_abs_record_update_time] TEXT, "
"[abs_fin_times_code] TEXT, "
"[notes_id] TEXT, "
"[notes_status] TEXT, "
"[notes_status_updater] TEXT, "
"[notes_status_update_time] TEXT);";
constexpr const char *CREATE_VOICEMAIL =
"CREATE TABLE IF NOT EXISTS [voicemail]("
"[id] INTEGER PRIMARY KEY AUTOINCREMENT, "
"[phone_number] TEXT, "
"[quicksearch_key] TEXT, "
"[display_name] TEXT, "
"[voicemail_uri] TEXT, "
"[voicemail_type] INTEGER NOT NULL DEFAULT 0, "
"[voice_file_size] INTEGER NOT NULL DEFAULT 0, "
"[voice_duration] INTEGER NOT NULL DEFAULT 0, "
"[voice_status] INTEGER NOT NULL DEFAULT 0, "
"[origin_type] TEXT, "
"[create_time] INTEGER);";
constexpr const char *CREATE_REPLYING =
"CREATE TABLE IF NOT EXISTS [replying]("
"[id] INTEGER PRIMARY KEY AUTOINCREMENT, "
"[name] TEXT, "
"[replying_uri] TEXT, "
"[replying_path] TEXT, "
"[phone_account_id] TEXT, "
"[has_content] NOT NULL DEFAULT 0, "
"[duration] INTEGER NOT NULL DEFAULT 0, "
"[content_type] TEXT, "
"[last_modified] INTEGER NOT NULL DEFAULT 0, "
"[synced] INTEGER NOT NULL DEFAULT 0 );";
constexpr const char *CREATE_DATABASE_BACKUP_TASK =
"CREATE TABLE IF NOT EXISTS [database_backup_task]( "
"[id] INTEGER PRIMARY KEY AUTOINCREMENT, "
"[backup_time] TEXT, "
"[backup_path] TEXT, "
"[remarks] TEXT)";
constexpr const char *CREATE_INSERT_BACKUP_TIME =
"CREATE TRIGGER IF NOT EXISTS [insert_database_backup_task] AFTER INSERT ON [database_backup_task] "
" BEGIN "
" UPDATE "
" [database_backup_task] "
" SET "
" [backup_time] = STRFTIME ('%s', 'now') "
" WHERE "
" [id] = [NEW].[id]; "
" END ";
constexpr const char *CALL_LOG_PHONE_NUMBER_INDEX =
"CREATE INDEX IF NOT EXISTS [calllog_phone_number_index] ON [calllog] ([phone_number])";
constexpr const char *CREATE_CALL_SETTINGS =
"CREATE TABLE IF NOT EXISTS [call_settings]("
"[id] INTEGER PRIMARY KEY AUTOINCREMENT, "
"[calllog_change_time] DATETIME) ";
constexpr const char *INIT_CALLlOG_CHANGE_TIME =
"INSERT INTO call_settings (calllog_change_time) VALUES (datetime('now'))";
constexpr const char *UPDATE_CONTACT_CHANGE_TIME =
"UPDATE settings set contact_change_time = datetime('now')";
constexpr const char *SETTING_URI =
"datashareproxy://com.ohos.contactsdataability/contacts/setting";
constexpr const char *SETTING_URI_NOT_PROXY =
"datashare://com.ohos.contactsdataability/contacts/setting";
constexpr const char *CALL_SETTING_URI =
"datashareproxy://com.ohos.contactsdataability/calls/call_setting";
constexpr const char *CALL_CHANGER_URI =
"datashare:///com.ohos.calllogability/calls/calllog";
constexpr const char *CONTACT_DATA = "datashare:///com.ohos.contactsdataability/contacts/contact_data";
constexpr const char *UPDATE_CALLLOG_CHANGE_TIME =
"UPDATE call_settings set calllog_change_time = datetime('now')";
constexpr const char *UPDATE_CALLLOG_AVATAR =
"CREATE TRIGGER IF NOT EXISTS [update_calllog_avatar] AFTER INSERT ON [calllog] "
"WHEN NEW.quicksearch_key = '' OR NEW.quicksearch_key IS NULL "
"BEGIN "
"UPDATE [calllog] "
"SET "
"extra4 = (SELECT extra4 FROM calllog WHERE format_phone_number = NEW.format_phone_number "
"AND format_phone_number !='' AND extra4 IS NOT NULL LIMIT 1) "
"WHERE rowid = NEW.rowid;"
"END";
constexpr const char *CALL_LOG_FAIL_ABS_RECORD_ID_INDEX =
"CREATE INDEX IF NOT EXISTS [fail_abs_record_id_index] ON [calllog] ([fail_abs_record_id])";
constexpr const char *CALL_LOG_NOTES_ID_INDEX =
"CREATE INDEX IF NOT EXISTS [notes_id_index] ON [calllog] ([notes_id])";
constexpr const char *CALL_LOG_ADD_IS_CNAP = "ALTER TABLE calllog ADD COLUMN is_cnap INTEGER DEFAULT 0;";
constexpr const char *CALL_LOG_ADD_PRIVACY_TAG = "ALTER TABLE calllog ADD COLUMN privacy_tag INTEGER DEFAULT -1;";
constexpr const char *CALL_LOG_ADD_NEW_CALLING = "ALTER TABLE calllog ADD COLUMN new_calling INTEGER DEFAULT 0;";
constexpr const char *CALL_LOG_ADD_START_TIME = "ALTER TABLE calllog ADD COLUMN start_time INTEGER DEFAULT 0;";
constexpr const char *CALL_LOG_ADD_ABSTRACT_TYPE = "ALTER TABLE calllog ADD COLUMN abstract_type TEXT;";
constexpr const char *CALL_LOG_ADD_ABSTRACT_PROFILE = "ALTER TABLE calllog ADD COLUMN abstract_profile VARCHAR(256);";
constexpr const char *CALL_LOG_ADD_ABS_STATUS = "ALTER TABLE calllog ADD COLUMN abs_status TEXT;";
constexpr const char *CALL_LOG_ADD_ABS_CODE = "ALTER TABLE calllog ADD COLUMN abs_code TEXT DEFAULT '-1';";
constexpr const char *CALL_LOG_ADD_FAIL_ABS_RECORD_ID =
"ALTER TABLE calllog ADD COLUMN fail_abs_record_id INTEGER DEFAULT 0;";
constexpr const char *CALL_LOG_ADD_FAIL_ABS_RECORD_STATUS =
"ALTER TABLE calllog ADD COLUMN fail_abs_record_status TEXT;";
constexpr const char *CALL_LOG_ADD_FAIL_ABS_RECORD_UPDATER =
"ALTER TABLE calllog ADD COLUMN fail_abs_record_updater TEXT;";
constexpr const char *CALL_LOG_ADD_FAIL_ABS_RECORD_UPDATE_TIME =
"ALTER TABLE calllog ADD COLUMN fail_abs_record_update_time TEXT;";
constexpr const char *CALL_LOG_ADD_ABS_FIN_TIMES_CODE = "ALTER TABLE calllog ADD COLUMN abs_fin_times_code TEXT;";
constexpr const char *CALL_LOG_ADD_NOTES_ID = "ALTER TABLE calllog ADD COLUMN notes_id TEXT;";
constexpr const char *CALL_LOG_ADD_NOTES_STATUS = "ALTER TABLE calllog ADD COLUMN notes_status TEXT;";
constexpr const char *CALL_LOG_ADD_NOTES_STATUS_UPDATER = "ALTER TABLE calllog ADD COLUMN notes_status_updater TEXT;";
constexpr const char *CALL_LOG_ADD_NOTES_STATUS_UPDATE_TIME =
"ALTER TABLE calllog ADD COLUMN notes_status_update_time TEXT;";
enum class PrivacyTag {
CALL_LOG_NON_PRIVACY_TAG = -1,
CALL_LOG_UNREAD_MISSED_PRIVACY_TAG,
CALL_LOG_PRIVACY_TAG,
CALL_LOG_MISSED_PRIVACY_TAG,
CALL_LOG_MIGRATED_PRIVACY_TAG,
};
const std::map<std::string, const char *> CALL_LOG_TABLES = {
{CallsTableName::CALLLOG, CREATE_CALLLOG},
{CallsTableName::VOICEMAIL, CREATE_VOICEMAIL},
{CallsTableName::REPLYING, CREATE_REPLYING},
};
const std::map<std::string, const char *> CALL_LOG_ADD_COLUMNS = {
{CallLogColumns::IS_CNAP, CALL_LOG_ADD_IS_CNAP},
{CallLogColumns::PRIVACY_TAG, CALL_LOG_ADD_PRIVACY_TAG},
{CallLogColumns::NEWCALL, CALL_LOG_ADD_NEW_CALLING},
{CallLogColumns::START_TIME, CALL_LOG_ADD_START_TIME},
{CallLogColumns::ABSTRACT_TYPE, CALL_LOG_ADD_ABSTRACT_TYPE},
{CallLogColumns::ABSTRACT_PROFILE, CALL_LOG_ADD_ABSTRACT_PROFILE},
{CallLogColumns::ABS_STATUS, CALL_LOG_ADD_ABS_STATUS},
{CallLogColumns::ABS_CODE, CALL_LOG_ADD_ABS_CODE},
{CallLogColumns::FAIL_ABS_RECORD_ID, CALL_LOG_ADD_FAIL_ABS_RECORD_ID},
{CallLogColumns::FAIL_ABS_RECORD_STATUS, CALL_LOG_ADD_FAIL_ABS_RECORD_STATUS},
{CallLogColumns::FAIL_ABS_RECORD_UPDATER, CALL_LOG_ADD_FAIL_ABS_RECORD_UPDATER},
{CallLogColumns::FAIL_ABS_RECORD_UPDATE_TIME, CALL_LOG_ADD_FAIL_ABS_RECORD_UPDATE_TIME},
{CallLogColumns::ABS_FIN_TIMES_CODE, CALL_LOG_ADD_ABS_FIN_TIMES_CODE},
{CallLogColumns::NOTES_ID, CALL_LOG_ADD_NOTES_ID},
{CallLogColumns::NOTES_STATUS, CALL_LOG_ADD_NOTES_STATUS},
{CallLogColumns::NOTES_STATUS_UPDATER, CALL_LOG_ADD_NOTES_STATUS_UPDATER},
{CallLogColumns::NOTES_STATUS_UPDATE_TIME, CALL_LOG_ADD_NOTES_STATUS_UPDATE_TIME},
};
}
}
#endif