diff --git a/sms_mms/include/rdb_sms_mms_helper.h b/sms_mms/include/rdb_sms_mms_helper.h index f9a1095..e0719ed 100755 --- a/sms_mms/include/rdb_sms_mms_helper.h +++ b/sms_mms/include/rdb_sms_mms_helper.h @@ -125,6 +125,13 @@ private: */ void CreateMmsPartTableStr(std::string &createTableStr); + /** + * Create Session table + * + * @param createTableStr Create table statement + */ + void CreateSessionTableStr(std::string &createTableStr); + private: const std::string DB_NAME = "sms_mms.db"; std::string dbPath_ = FOLDER_PATH + DB_NAME; diff --git a/sms_mms/include/sms_mms_ability.h b/sms_mms/include/sms_mms_ability.h index 4995334..9f96cf5 100755 --- a/sms_mms/include/sms_mms_ability.h +++ b/sms_mms/include/sms_mms_ability.h @@ -43,7 +43,7 @@ class ValuesBucket; } namespace Telephony { enum class MessageUriType { - UNKNOW, SMS_MMS, THIRTY, MAX_GROUP, UNREAD_TOTAL, MMS_PROTOCOL, SMS_SUBSECTION, MMS_PART + UNKNOW, SMS_MMS, THIRTY, MAX_GROUP, UNREAD_TOTAL, MMS_PROTOCOL, SMS_SUBSECTION, MMS_PART, SESSION }; class SmsMmsAbility : public DataShare::DataShareExtAbility { public: diff --git a/sms_mms/include/sms_mms_data.h b/sms_mms/include/sms_mms_data.h index d17b122..6696e62 100755 --- a/sms_mms/include/sms_mms_data.h +++ b/sms_mms/include/sms_mms_data.h @@ -99,10 +99,28 @@ public: static constexpr const char *CONTENT = "content"; }; +class Session { +public: + static constexpr const char *ID = "id"; + static constexpr const char *TIME = "time"; + static constexpr const char *TELEPHONE = "telephone"; + static constexpr const char *CONTENT = "content"; + static constexpr const char *CONTACTS_NUM = "contacts_num"; + static constexpr const char *SMS_TYPE = "sms_type"; + static constexpr const char *UNREAD_COUNT = "unread_count"; + static constexpr const char *SENDING_STATUS = "sending_status"; + static constexpr const char *HAS_DRAFT = "has_draft"; + static constexpr const char *HAS_LOCK = "has_lock"; + static constexpr const char *MESSAGE_COUNT = "message_count"; + static constexpr const char *HAS_MMS = "has_mms"; + static constexpr const char *HAS_ATTACHMENT = "has_attachment"; +}; + constexpr const char *TABLE_SMS_MMS_INFO = "sms_mms_info"; constexpr const char *TABLE_SMS_SUBSECTION = "sms_subsection"; constexpr const char *TABLE_MMS_PROTOCOL = "mms_protocol"; constexpr const char *TABLE_MMS_PART = "mms_part"; +constexpr const char *TABLE_SESSION = "session"; constexpr const char *SMS_MMS_URI = "datashare:///com.ohos.smsmmsability"; } // namespace Telephony } // namespace OHOS diff --git a/sms_mms/src/rdb_sms_mms_helper.cpp b/sms_mms/src/rdb_sms_mms_helper.cpp index 7e8d795..4431ed0 100755 --- a/sms_mms/src/rdb_sms_mms_helper.cpp +++ b/sms_mms/src/rdb_sms_mms_helper.cpp @@ -45,11 +45,14 @@ int RdbSmsMmsHelper::Init() CreateSmsSubsectionTableStr(smsSubsectionStr); std::string mmsPartStr; CreateMmsPartTableStr(mmsPartStr); + std::string sessionStr; + CreateSessionTableStr(sessionStr); std::vector createTableVec; createTableVec.push_back(messageInfoStr); createTableVec.push_back(mmsProtocolStr); createTableVec.push_back(smsSubsectionStr); createTableVec.push_back(mmsPartStr); + createTableVec.push_back(sessionStr); RdbSmsMmsCallback callback(createTableVec); CreateRdbStore(config, VERSION, callback, errCode); return errCode; @@ -149,6 +152,24 @@ void RdbSmsMmsHelper::CreateMmsPartTableStr(std::string &createTableStr) createTableStr.append(") on delete cascade on update cascade )"); } +void RdbSmsMmsHelper::CreateSessionTableStr(std::string &createTableStr) +{ + createTableStr.append("CREATE TABLE IF NOT EXISTS ").append(TABLE_SESSION); + createTableStr.append("(").append(Session::ID).append(" INTEGER PRIMARY KEY AUTOINCREMENT, "); + createTableStr.append(Session::TIME).append(" INTEGER DEFAULT 0, "); + createTableStr.append(Session::TELEPHONE).append(" TEXT , "); + createTableStr.append(Session::CONTENT).append(" TEXT , "); + createTableStr.append(Session::CONTACTS_NUM).append(" INTEGER DEFAULT 0 , "); + createTableStr.append(Session::SMS_TYPE).append(" INTEGER DEFAULT 0 , "); + createTableStr.append(Session::UNREAD_COUNT).append(" INTEGER DEFAULT 0 , "); + createTableStr.append(Session::SENDING_STATUS).append(" INTEGER DEFAULT 0 , "); + createTableStr.append(Session::HAS_DRAFT).append(" INTEGER DEFAULT 0 , "); + createTableStr.append(Session::HAS_LOCK).append(" INTEGER DEFAULT 0 , "); + createTableStr.append(Session::MESSAGE_COUNT).append(" INTEGER DEFAULT 0 , "); + createTableStr.append(Session::HAS_MMS).append(" INTEGER DEFAULT 0 , "); + createTableStr.append(Session::HAS_ATTACHMENT).append(" INTEGER DEFAULT 0 )"); +} + void RdbSmsMmsHelper::UpdateDbPath(const std::string &path) { dbPath_ = path + DB_NAME; diff --git a/sms_mms/src/sms_mms_ability.cpp b/sms_mms/src/sms_mms_ability.cpp index aca9b9a..92568d8 100755 --- a/sms_mms/src/sms_mms_ability.cpp +++ b/sms_mms/src/sms_mms_ability.cpp @@ -148,6 +148,10 @@ int SmsMmsAbility::Insert(const Uri &uri, const DataShare::DataShareValuesBucket helper_.Insert(id, values, TABLE_MMS_PART); break; } + case MessageUriType::SESSION: { + helper_.Insert(id, values, TABLE_SESSION); + break; + } default: DATA_STORAGE_LOGI("SmsMmsAbility::Insert##uri = %{public}s", uri.ToString().c_str()); break; @@ -184,6 +188,10 @@ std::shared_ptr SmsMmsAbility::Query( absRdbPredicates = new NativeRdb::AbsRdbPredicates(TABLE_MMS_PART); break; } + case MessageUriType::SESSION: { + absRdbPredicates = new NativeRdb::AbsRdbPredicates(TABLE_SESSION); + break; + } case MessageUriType::MAX_GROUP: { resultSet = helper_.QueryMaxGroupId(); auto queryResultSet = RdbDataShareAdapter::RdbUtils::ToResultSetBridge(resultSet); @@ -242,6 +250,10 @@ int SmsMmsAbility::Update( absRdbPredicates = new NativeRdb::AbsRdbPredicates(TABLE_MMS_PART); break; } + case MessageUriType::SESSION: { + absRdbPredicates = new NativeRdb::AbsRdbPredicates(TABLE_SESSION); + break; + } default: DATA_STORAGE_LOGI("SmsMmsAbility::Update##uri = %{public}s", uri.ToString().c_str()); break; @@ -294,6 +306,10 @@ int SmsMmsAbility::Delete(const Uri &uri, const DataShare::DataSharePredicates & absRdbPredicates = new NativeRdb::AbsRdbPredicates(TABLE_MMS_PART); break; } + case MessageUriType::SESSION: { + absRdbPredicates = new NativeRdb::AbsRdbPredicates(TABLE_SESSION); + break; + } default: DATA_STORAGE_LOGI("SmsMmsAbility::Delete##uri = %{public}s", uri.ToString().c_str()); break; @@ -329,7 +345,8 @@ void SmsMmsAbility::InitUriMap() {"/sms_mms/sms_mms_info/unread_total", MessageUriType::UNREAD_TOTAL}, {"/sms_mms/mms_protocol", MessageUriType::MMS_PROTOCOL}, {"/sms_mms/sms_subsection", MessageUriType::SMS_SUBSECTION}, - {"/sms_mms/mms_part", MessageUriType::MMS_PART} + {"/sms_mms/mms_part", MessageUriType::MMS_PART}, + {"/sms_mms/session", MessageUriType::SESSION} }; }