From 9eebf9f6580965da2dcecbfc8518298c2d6e610a Mon Sep 17 00:00:00 2001 From: Mati Date: Tue, 4 Jun 2019 16:25:26 +0200 Subject: [PATCH] WiP: ThreadRecord implementation --- module-db/Interface/ThreadRecord.cpp | 98 ++++++++++++++++++++++++++++ module-db/Interface/ThreadRecord.hpp | 5 +- 2 files changed, 101 insertions(+), 2 deletions(-) diff --git a/module-db/Interface/ThreadRecord.cpp b/module-db/Interface/ThreadRecord.cpp index 8addc8ee5..949aa7598 100644 --- a/module-db/Interface/ThreadRecord.cpp +++ b/module-db/Interface/ThreadRecord.cpp @@ -10,3 +10,101 @@ #include "ThreadRecord.hpp" +#include "../Databases/SmsDB.hpp" + +bool ThreadRecordInterface::Add(const ThreadRecord &rec) { + auto smsDB = std::make_unique(); + + auto ret = smsDB->threads.Add(ThreadsTableRow{ + .date = rec.date, + .msgCount=rec.msgCount, + .msgRead=rec.msgRead, + .contactID=rec.contactID, + .snippet=rec.snippet, + .type=rec.type + + }); + + return ret; +} + +bool ThreadRecordInterface::RemoveByID(uint32_t id) { + auto smsDB = std::make_unique(); + + auto ret = smsDB->threads.RemoveByID(id); + if (ret == false) { + return false; + } + + //TODO: remove SMS records from SMS tables +} + +bool ThreadRecordInterface::Update(const ThreadRecord &rec) { + auto smsDB = std::make_unique(); + + auto ret = smsDB->threads.Update(ThreadsTableRow{ + .ID = rec.dbID, + .date = rec.date, + .msgCount=rec.msgCount, + .msgRead=rec.msgRead, + .contactID=rec.contactID, + .snippet=rec.snippet, + .type=rec.type + + }); +} + +uint32_t ThreadRecordInterface::GetCount() { + auto smsDB = std::make_unique(); + + return smsDB->threads.GetCount(); +} + +std::unique_ptr> ThreadRecordInterface::GetLimitOffset(uint32_t offset, uint32_t limit) { + auto smsDB = std::make_unique(); + + auto records = std::make_unique>(); + + auto ret = smsDB->threads.GetLimitOffset(offset, limit); + + for (const auto &w: ret) { + records->push_back(ThreadRecord{ + .dbID = w.ID, + .date = w.date, + .msgCount=w.msgCount, + .msgRead=w.msgRead, + .snippet=w.snippet, + .type=w.type, + .contactID=w.contactID + }); + } + + return records; +} + +std::unique_ptr> ThreadRecordInterface::GetLimitOffsetByField(uint32_t offset, uint32_t limit, + ContactRecordField field, + const char *str) { + auto smsDB = std::make_unique(); + auto records = std::make_unique>(); + + switch (field) { + case ContactRecordField::Date: { + auto ret = smsDB->threads.GetLimitOffsetByField(offset, limit,ThreadsTableFields::Date,str); + + for(const auto &w: ret){ + records->push_back(ThreadRecord{ + .dbID = w.ID, + .date = w.date, + .msgCount=w.msgCount, + .msgRead=w.msgRead, + .snippet=w.snippet, + .type=w.type, + .contactID=w.contactID + }); + } + } + break; + + } +} \ No newline at end of file diff --git a/module-db/Interface/ThreadRecord.hpp b/module-db/Interface/ThreadRecord.hpp index a15bafcbb..3ba084f8d 100644 --- a/module-db/Interface/ThreadRecord.hpp +++ b/module-db/Interface/ThreadRecord.hpp @@ -22,9 +22,10 @@ struct ThreadRecord{ uint32_t dbID; uint32_t date; uint32_t msgCount; - uint32_t read; + uint32_t msgRead; UTF8 snippet; - uint32_t lastDir; + SMSType type; + uint32_t contactID; }; enum class ContactRecordField{