X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fpostgresqlstorage.cpp;h=391e2ac3275bdf6a36c55308e89487cdfbc4a1d4;hb=fcacaaf16551524c7ebb6114254d005274cc3d63;hp=48236bc04197b614a2e13a04fd8dbe241cb372b3;hpb=6a835281b265df6a06b7f41109ad2d449899fed0;p=quassel.git diff --git a/src/core/postgresqlstorage.cpp b/src/core/postgresqlstorage.cpp index 48236bc0..391e2ac3 100644 --- a/src/core/postgresqlstorage.cpp +++ b/src/core/postgresqlstorage.cpp @@ -22,18 +22,12 @@ #include -#include "logger.h" +#include "logmessage.h" #include "network.h" #include "quassel.h" PostgreSqlStorage::PostgreSqlStorage(QObject *parent) - : AbstractSqlStorage(parent), - _port(-1) -{ -} - - -PostgreSqlStorage::~PostgreSqlStorage() + : AbstractSqlStorage(parent) { } @@ -500,7 +494,7 @@ IdentityId PostgreSqlStorage::createIdentity(UserId user, CoreIdentity &identity safeExec(query); if (!watchQuery(query)) { db.rollback(); - return IdentityId(); + return {}; } query.first(); @@ -509,7 +503,7 @@ IdentityId PostgreSqlStorage::createIdentity(UserId user, CoreIdentity &identity if (!identityId.isValid()) { db.rollback(); - return IdentityId(); + return {}; } QSqlQuery insertNickQuery(db); @@ -520,14 +514,14 @@ IdentityId PostgreSqlStorage::createIdentity(UserId user, CoreIdentity &identity safeExec(insertNickQuery); if (!watchQuery(insertNickQuery)) { db.rollback(); - return IdentityId(); + return {}; } } if (!db.commit()) { qWarning() << "PostgreSqlStorage::createIdentity(): committing data failed!"; qWarning() << " -" << qPrintable(db.lastError().text()); - return IdentityId(); + return {}; } return identityId; } @@ -721,7 +715,7 @@ NetworkId PostgreSqlStorage::createNetwork(UserId user, const NetworkInfo &info) safeExec(query); if (!watchQuery(query)) { db.rollback(); - return NetworkId(); + return {}; } query.first(); @@ -729,7 +723,7 @@ NetworkId PostgreSqlStorage::createNetwork(UserId user, const NetworkInfo &info) if (!networkId.isValid()) { db.rollback(); - return NetworkId(); + return {}; } QSqlQuery insertServersQuery(db); @@ -741,14 +735,14 @@ NetworkId PostgreSqlStorage::createNetwork(UserId user, const NetworkInfo &info) safeExec(insertServersQuery); if (!watchQuery(insertServersQuery)) { db.rollback(); - return NetworkId(); + return {}; } } if (!db.commit()) { qWarning() << "PostgreSqlStorage::createNetwork(): committing data failed!"; qWarning() << " -" << qPrintable(db.lastError().text()); - return NetworkId(); + return {}; } return networkId; } @@ -1114,7 +1108,7 @@ BufferInfo PostgreSqlStorage::bufferInfo(UserId user, const NetworkId &networkId if (!beginTransaction(db)) { qWarning() << "PostgreSqlStorage::bufferInfo(): cannot start read only transaction!"; qWarning() << " -" << qPrintable(db.lastError().text()); - return BufferInfo(); + return {}; } QSqlQuery query(db); @@ -1142,7 +1136,7 @@ BufferInfo PostgreSqlStorage::bufferInfo(UserId user, const NetworkId &networkId if (!create) { db.rollback(); - return BufferInfo(); + return {}; } QSqlQuery createQuery(db); @@ -1178,10 +1172,10 @@ BufferInfo PostgreSqlStorage::getBufferInfo(UserId user, const BufferId &bufferI query.bindValue(":bufferid", bufferId.toInt()); safeExec(query); if (!watchQuery(query)) - return BufferInfo(); + return {}; if (!query.first()) - return BufferInfo(); + return {}; BufferInfo bufferInfo(query.value(0).toInt(), query.value(1).toInt(), (BufferInfo::Type)query.value(2).toInt(), 0, query.value(4).toString()); Q_ASSERT(!query.next()); @@ -1496,7 +1490,7 @@ Message::Types PostgreSqlStorage::bufferActivity(BufferId bufferId, MsgId lastSe query.bindValue(":lastseenmsgid", lastSeenMsgId.toQint64()); safeExec(query); watchQuery(query); - Message::Types result = Message::Types(0); + Message::Types result = Message::Types(nullptr); if (query.first()) result = Message::Types(query.value(0).toInt()); return result; @@ -1589,7 +1583,7 @@ int PostgreSqlStorage::highlightCount(BufferId bufferId, MsgId lastSeenMsgId) query.bindValue(":lastseenmsgid", lastSeenMsgId.toQint64()); safeExec(query); watchQuery(query); - int result = int(0); + auto result = int(0); if (query.first()) result = query.value(0).toInt(); return result; @@ -1634,6 +1628,8 @@ bool PostgreSqlStorage::logMessage(Message &msg) } QVariantList params; + // PostgreSQL handles QDateTime()'s serialized format by default, and QDateTime() serializes + // to a 64-bit time compatible format by default. params << msg.timestamp() << msg.bufferInfo().bufferId().toInt() << msg.type() @@ -1718,6 +1714,8 @@ bool PostgreSqlStorage::logMessages(MessageList &msgs) for (int i = 0; i < msgs.count(); i++) { Message &msg = msgs[i]; QVariantList params; + // PostgreSQL handles QDateTime()'s serialized format by default, and QDateTime() serializes + // to a 64-bit time compatible format by default. params << msg.timestamp() << msg.bufferInfo().bufferId().toInt() << msg.type() @@ -1797,17 +1795,19 @@ QList PostgreSqlStorage::requestMsgs(UserId user, BufferId bufferId, Ms QDateTime timestamp; while (query.next()) { + // PostgreSQL returns date/time in ISO 8601 format, no 64-bit handling needed + // See https://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME-OUTPUT timestamp = query.value(1).toDateTime(); timestamp.setTimeSpec(Qt::UTC); Message msg(timestamp, bufferInfo, - (Message::Type)query.value(2).toUInt(), + (Message::Type)query.value(2).toInt(), query.value(8).toString(), query.value(4).toString(), query.value(5).toString(), query.value(6).toString(), query.value(7).toString(), - (Message::Flags)query.value(3).toUInt()); + (Message::Flags)query.value(3).toInt()); msg.setMsgId(query.value(0).toLongLong()); messagelist << msg; } @@ -1861,11 +1861,13 @@ QList PostgreSqlStorage::requestMsgsFiltered(UserId user, BufferId buff QDateTime timestamp; while (query.next()) { + // PostgreSQL returns date/time in ISO 8601 format, no 64-bit handling needed + // See https://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME-OUTPUT timestamp = query.value(1).toDateTime(); timestamp.setTimeSpec(Qt::UTC); Message msg(timestamp, bufferInfo, - (Message::Type)query.value(2).toUInt(), + (Message::Type)query.value(2).toInt(), query.value(8).toString(), query.value(4).toString(), query.value(5).toString(), @@ -1916,17 +1918,19 @@ QList PostgreSqlStorage::requestAllMsgs(UserId user, MsgId first, MsgId QDateTime timestamp; for (int i = 0; i < limit && query.next(); i++) { + // PostgreSQL returns date/time in ISO 8601 format, no 64-bit handling needed + // See https://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME-OUTPUT timestamp = query.value(2).toDateTime(); timestamp.setTimeSpec(Qt::UTC); Message msg(timestamp, bufferInfoHash[query.value(1).toInt()], - (Message::Type)query.value(3).toUInt(), + (Message::Type)query.value(3).toInt(), query.value(9).toString(), query.value(5).toString(), query.value(6).toString(), query.value(7).toString(), query.value(8).toString(), - (Message::Flags)query.value(4).toUInt()); + (Message::Flags)query.value(4).toInt()); msg.setMsgId(query.value(0).toLongLong()); messagelist << msg; } @@ -1978,11 +1982,13 @@ QList PostgreSqlStorage::requestAllMsgsFiltered(UserId user, MsgId firs QDateTime timestamp; for (int i = 0; i < limit && query.next(); i++) { + // PostgreSQL returns date/time in ISO 8601 format, no 64-bit handling needed + // See https://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME-OUTPUT timestamp = query.value(2).toDateTime(); timestamp.setTimeSpec(Qt::UTC); Message msg(timestamp, bufferInfoHash[query.value(1).toInt()], - (Message::Type)query.value(3).toUInt(), + (Message::Type)query.value(3).toInt(), query.value(9).toString(), query.value(5).toString(), query.value(6).toString(), @@ -2012,21 +2018,6 @@ QMap PostgreSqlStorage::getAllAuthUserNames() } -QString PostgreSqlStorage::getAuthUserName(UserId user) -{ - QString authusername; - QSqlQuery query(logDb()); - query.prepare(queryString("select_authusername")); - query.bindValue(":userid", user.toInt()); - safeExec(query); - watchQuery(query); - - if (query.first()) { - authusername = query.value(0).toString(); - } - return authusername; -} - // void PostgreSqlStorage::safeExec(QSqlQuery &query) { // qDebug() << "PostgreSqlStorage::safeExec"; // qDebug() << " executing:\n" << query.executedQuery();