feat(EventsDb): import Participants from legacy messages

This commit is contained in:
Ronan Abhamon 2017-10-09 15:57:15 +02:00
parent 160513f2fc
commit 4ec5f857ed

View file

@ -60,7 +60,7 @@ public:
long insertContentType (const string &contentType);
long insertEvent (EventLog::Type type, const tm &date);
long insertChatRoom (long sipAddressId, const tm &date);
void insertChatRoomParticipant (long chatRoomId, const shared_ptr<const Participant> &participant);
void insertChatRoomParticipant (long chatRoomId, long sipAddressId, bool isAdmin);
long insertMessageEvent (
const MessageEventReferences &references,
@ -205,12 +205,18 @@ EventsDb::EventsDb () : AbstractDb(*new EventsDbPrivate) {}
return sipAddressId;
}
void EventsDbPrivate::insertChatRoomParticipant (long chatRoomId, const shared_ptr<const Participant> &participant) {
void EventsDbPrivate::insertChatRoomParticipant (long chatRoomId, long sipAddressId, bool isAdmin) {
soci::session *session = dbSession.getBackendSession<soci::session>();
long participantId = insertSipAddress(participant->getAddress().asStringUriOnly());
*session << "UPDATE chat_room_participant SET is_admin = :isAdmin WHERE sip_address_id = sipAddressId",
soci::use(static_cast<int>(participant->isAdmin())), soci::use(participantId);
soci::statement statement = (
session->prepare << "UPDATE chat_room_participant SET is_admin = :isAdmin"
" WHERE chat_room_id = :chatRoomId AND sip_address_id = :sipAddressId",
soci::use(static_cast<int>(isAdmin)), soci::use(chatRoomId), soci::use(sipAddressId)
);
statement.execute(true);
if (statement.get_affected_rows() == 0)
*session << "INSERT INTO chat_room_participant (chat_room_id, sip_address_id, is_admin)"
" VALUES (:chatRoomId, :sipAddressId, :isAdmin)",
soci::use(chatRoomId), soci::use(sipAddressId), soci::use(static_cast<int>(isAdmin));
}
long EventsDbPrivate::insertMessageEvent (
@ -307,6 +313,8 @@ EventsDb::EventsDb () : AbstractDb(*new EventsDbPrivate) {}
references.remoteSipAddressId = insertSipAddress(message.get<string>(2));
references.chatRoomId = insertChatRoom(references.remoteSipAddressId, date);
insertChatRoomParticipant(references.chatRoomId, references.remoteSipAddressId, false);
insertMessageEvent (
references,
static_cast<ChatMessage::State>(state),