From 44507caa790ac657cd0d557de27bdff994a7e584 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Fri, 20 Oct 2017 17:18:37 +0200 Subject: [PATCH] feat(MainDb): fetch in progress --- src/db/main-db-p.h | 8 +++++ src/db/main-db.cpp | 69 +++++++++++++++++++++++++++++++++++-- tester/events-db-tester.cpp | 6 ++++ 3 files changed, 81 insertions(+), 2 deletions(-) diff --git a/src/db/main-db-p.h b/src/db/main-db-p.h index 421c0ecdf..11dd2308b 100644 --- a/src/db/main-db-p.h +++ b/src/db/main-db-p.h @@ -50,6 +50,14 @@ private: // Events API. // --------------------------------------------------------------------------- + std::shared_ptr selectEvent (long eventId, EventLog::Type type, time_t date) const; + std::shared_ptr selectConferenceEvent (long eventId, EventLog::Type type, time_t date) const; + std::shared_ptr selectConferenceCallEvent (long eventId, EventLog::Type type, time_t date) const; + std::shared_ptr selectConferenceChatMessageEvent (long eventId, EventLog::Type type, time_t date) const; + std::shared_ptr selectConferenceParticipantEvent (long eventId, EventLog::Type type, time_t date) const; + std::shared_ptr selectConferenceParticipantDeviceEvent (long eventId, EventLog::Type type, time_t date) const; + std::shared_ptr selectConferenceSubjectEvent (long eventId, EventLog::Type type, time_t date) const; + long insertEvent (const EventLog &eventLog); long insertConferenceEvent (const EventLog &eventLog, long *chatRoomId = nullptr); long insertConferenceCallEvent (const EventLog &eventLog); diff --git a/src/db/main-db.cpp b/src/db/main-db.cpp index c853dadd2..6c3ecffcb 100644 --- a/src/db/main-db.cpp +++ b/src/db/main-db.cpp @@ -203,6 +203,71 @@ MainDb::MainDb () : AbstractDb(*new MainDbPrivate) {} soci::use(eventId), soci::use(sipAddressId), soci::use(state); } +// ----------------------------------------------------------------------------- + + shared_ptr MainDbPrivate::selectEvent (long eventId, EventLog::Type type, time_t date) const { + switch (type) { + case EventLog::Type::None: + return nullptr; + + case EventLog::Type::ConferenceCreated: + case EventLog::Type::ConferenceDestroyed: + return selectConferenceEvent(eventId, type, date); + + case EventLog::Type::CallStart: + case EventLog::Type::CallEnd: + return selectConferenceCallEvent(eventId, type, date); + + case EventLog::Type::ConferenceChatMessage: + return selectConferenceChatMessageEvent(eventId, type, date); + + case EventLog::Type::ConferenceParticipantAdded: + case EventLog::Type::ConferenceParticipantRemoved: + case EventLog::Type::ConferenceParticipantSetAdmin: + case EventLog::Type::ConferenceParticipantUnsetAdmin: + return selectConferenceParticipantEvent(eventId, type, date); + + case EventLog::Type::ConferenceParticipantDeviceAdded: + case EventLog::Type::ConferenceParticipantDeviceRemoved: + return selectConferenceParticipantDeviceEvent(eventId, type, date); + + case EventLog::Type::ConferenceSubjectChanged: + return selectConferenceSubjectEvent(eventId, type, date); + } + + return nullptr; + } + + shared_ptr MainDbPrivate::selectConferenceEvent (long eventId, EventLog::Type type, time_t date) const { + // TODO. + return nullptr; + } + + shared_ptr MainDbPrivate::selectConferenceCallEvent (long eventId, EventLog::Type type, time_t date) const { + // TODO. + return nullptr; + } + + shared_ptr MainDbPrivate::selectConferenceChatMessageEvent (long eventId, EventLog::Type type, time_t date) const { + // TODO. + return nullptr; + } + + shared_ptr MainDbPrivate::selectConferenceParticipantEvent (long eventId, EventLog::Type type, time_t date) const { + // TODO. + return nullptr; + } + + shared_ptr MainDbPrivate::selectConferenceParticipantDeviceEvent (long eventId, EventLog::Type type, time_t date) const { + // TODO. + return nullptr; + } + + shared_ptr MainDbPrivate::selectConferenceSubjectEvent (long eventId, EventLog::Type type, time_t date) const { + // TODO. + return nullptr; + } + // ----------------------------------------------------------------------------- long MainDbPrivate::insertEvent (const EventLog &eventLog) { @@ -793,8 +858,8 @@ MainDb::MainDb () : AbstractDb(*new MainDbPrivate) {} soci::rowset rows = (session->prepare << query, soci::use(peerAddress)); for (const auto &row : rows) { - (void)row; - events.push_back(std::make_shared()); + tm date = row.get(2); + events.push_back(d->selectEvent(row.get(0), static_cast(row.get(1)), mktime(&date))); } L_END_LOG_EXCEPTION diff --git a/tester/events-db-tester.cpp b/tester/events-db-tester.cpp index 608297759..6a25f0e8f 100644 --- a/tester/events-db-tester.cpp +++ b/tester/events-db-tester.cpp @@ -73,6 +73,12 @@ static void get_history () { int, "%d" ); + BC_ASSERT_EQUAL( + eventsDb.getHistory("sip:test-7@sip.linphone.org", 0, -1, MainDb::Filter::ConferenceCallFilter).size(), + 0, + int, + "%d" + ); } test_t events_db_tests[] = {