/***************************************************************************
- * Copyright (C) 2005-2019 by the Quassel Project *
+ * Copyright (C) 2005-2020 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
unlock();
}
-QList<CoreIdentity> SqliteStorage::identities(UserId user)
+std::vector<CoreIdentity> SqliteStorage::identities(UserId user)
{
- QList<CoreIdentity> identities;
+ std::vector<CoreIdentity> identities;
QSqlDatabase db = logDb();
db.transaction();
while (nickQuery.next()) {
nicks << nickQuery.value(0).toString();
}
- identity.setNicks(nicks);
- identities << identity;
+ identity.setNicks(std::move(nicks));
+ identities.push_back(std::move(identity));
}
db.commit();
}
return true;
}
-QList<NetworkInfo> SqliteStorage::networks(UserId user)
+std::vector<NetworkInfo> SqliteStorage::networks(UserId user)
{
- QList<NetworkInfo> nets;
+ std::vector<NetworkInfo> nets;
QSqlDatabase db = logDb();
db.transaction();
servers << server;
}
net.serverList = servers;
- nets << net;
+ nets.push_back(std::move(net));
}
}
}
return nets;
}
-QList<NetworkId> SqliteStorage::connectedNetworks(UserId user)
+std::vector<NetworkId> SqliteStorage::connectedNetworks(UserId user)
{
- QList<NetworkId> connectedNets;
+ std::vector<NetworkId> connectedNets;
QSqlDatabase db = logDb();
db.transaction();
watchQuery(query);
while (query.next()) {
- connectedNets << query.value(0).toInt();
+ connectedNets.emplace_back(query.value(0).toInt());
}
db.commit();
}
return bufferInfo;
}
-QList<BufferInfo> SqliteStorage::requestBuffers(UserId user)
+std::vector<BufferInfo> SqliteStorage::requestBuffers(UserId user)
{
- QList<BufferInfo> bufferlist;
+ std::vector<BufferInfo> bufferlist;
QSqlDatabase db = logDb();
db.transaction();
safeExec(query);
watchQuery(query);
while (query.next()) {
- bufferlist << BufferInfo(query.value(0).toInt(),
- query.value(1).toInt(),
- (BufferInfo::Type)query.value(2).toInt(),
- query.value(3).toInt(),
- query.value(4).toString());
+ bufferlist.emplace_back(query.value(0).toInt(),
+ query.value(1).toInt(),
+ (BufferInfo::Type)query.value(2).toInt(),
+ query.value(3).toInt(),
+ query.value(4).toString());
}
db.commit();
}
return bufferlist;
}
-QList<BufferId> SqliteStorage::requestBufferIdsForNetwork(UserId user, NetworkId networkId)
+std::vector<BufferId> SqliteStorage::requestBufferIdsForNetwork(UserId user, NetworkId networkId)
{
- QList<BufferId> bufferList;
+ std::vector<BufferId> bufferList;
QSqlDatabase db = logDb();
db.transaction();
safeExec(query);
watchQuery(query);
while (query.next()) {
- bufferList << BufferId(query.value(0).toInt());
+ bufferList.emplace_back(query.value(0).toInt());
}
db.commit();
}
return !error;
}
+QHash<BufferId, MsgId> SqliteStorage::bufferLastMsgIds(UserId user)
+{
+ QHash<BufferId, MsgId> lastMsgHash;
+
+ QSqlDatabase db = logDb();
+ db.transaction();
+
+ bool error = false;
+ {
+ QSqlQuery query(db);
+ query.prepare(queryString("select_buffer_last_messages"));
+ query.bindValue(":userid", user.toInt());
+
+ lockForRead();
+ safeExec(query);
+ error = !watchQuery(query);
+ if (!error) {
+ while (query.next()) {
+ lastMsgHash[query.value(0).toInt()] = query.value(1).toLongLong();
+ }
+ }
+ }
+
+ db.commit();
+ unlock();
+ return lastMsgHash;
+}
+
void SqliteStorage::setBufferLastSeenMsg(UserId user, const BufferId& bufferId, const MsgId& msgId)
{
QSqlDatabase db = logDb();
return !error;
}
-QList<Message> SqliteStorage::requestMsgs(UserId user, BufferId bufferId, MsgId first, MsgId last, int limit)
+std::vector<Message> SqliteStorage::requestMsgs(UserId user, BufferId bufferId, MsgId first, MsgId last, int limit)
{
- QList<Message> messagelist;
+ std::vector<Message> messagelist;
QSqlDatabase db = logDb();
db.transaction();
query.value(7).toString(),
(Message::Flags)query.value(3).toInt());
msg.setMsgId(query.value(0).toLongLong());
- messagelist << msg;
+ messagelist.push_back(std::move(msg));
}
}
db.commit();
return messagelist;
}
-QList<Message> SqliteStorage::requestMsgsFiltered(
+std::vector<Message> SqliteStorage::requestMsgsFiltered(
UserId user, BufferId bufferId, MsgId first, MsgId last, int limit, Message::Types type, Message::Flags flags)
{
- QList<Message> messagelist;
+ std::vector<Message> messagelist;
QSqlDatabase db = logDb();
db.transaction();
query.value(7).toString(),
Message::Flags{query.value(3).toInt()});
msg.setMsgId(query.value(0).toLongLong());
- messagelist << msg;
+ messagelist.push_back(std::move(msg));
}
}
db.commit();
return messagelist;
}
-QList<Message> SqliteStorage::requestAllMsgs(UserId user, MsgId first, MsgId last, int limit)
+std::vector<Message> SqliteStorage::requestAllMsgs(UserId user, MsgId first, MsgId last, int limit)
{
- QList<Message> messagelist;
+ std::vector<Message> messagelist;
QSqlDatabase db = logDb();
db.transaction();
query.value(8).toString(),
(Message::Flags)query.value(4).toInt());
msg.setMsgId(query.value(0).toLongLong());
- messagelist << msg;
+ messagelist.push_back(std::move(msg));
}
}
db.commit();
return messagelist;
}
-QList<Message> SqliteStorage::requestAllMsgsFiltered(UserId user, MsgId first, MsgId last, int limit, Message::Types type, Message::Flags flags)
+std::vector<Message> SqliteStorage::requestAllMsgsFiltered(UserId user, MsgId first, MsgId last, int limit, Message::Types type, Message::Flags flags)
{
- QList<Message> messagelist;
+ std::vector<Message> messagelist;
QSqlDatabase db = logDb();
db.transaction();
query.value(8).toString(),
Message::Flags{query.value(4).toInt()});
msg.setMsgId(query.value(0).toLongLong());
- messagelist << msg;
+ messagelist.push_back(std::move(msg));
}
}
db.commit();