Merge pull request #125 from schaal/sslcert
[quassel.git] / src / core / postgresqlstorage.cpp
index 7c20a05..e7a71e7 100644 (file)
@@ -136,6 +136,14 @@ bool PostgreSqlStorage::initDbSession(QSqlDatabase &db)
         return false;
         break;
     }
+
+    // Set the PostgreSQL session timezone to UTC, since we want timestamps stored in UTC
+    QSqlQuery tzQuery = db.exec("SET timezone = 'UTC'");
+    if (tzQuery.lastError().isValid()) {
+        quError() << "Failed to set timezone to UTC!";
+        return false;
+    }
+
     return true;
 }
 
@@ -208,7 +216,7 @@ UserId PostgreSqlStorage::addUser(const QString &user, const QString &password)
     query.prepare(queryString("insert_quasseluser"));
     query.bindValue(":username", user);
     query.bindValue(":password", hashPassword(password));
-    query.bindValue(":hashversion", Storage::HashVersion::latest);
+    query.bindValue(":hashversion", Storage::HashVersion::Latest);
     safeExec(query);
     if (!watchQuery(query))
         return 0;
@@ -226,7 +234,7 @@ bool PostgreSqlStorage::updateUser(UserId user, const QString &password)
     query.prepare(queryString("update_userpassword"));
     query.bindValue(":userid", user.toInt());
     query.bindValue(":password", hashPassword(password));
-    query.bindValue(":hashversion", Storage::HashVersion::latest);
+    query.bindValue(":hashversion", Storage::HashVersion::Latest);
     safeExec(query);
     watchQuery(query);
     return query.numRowsAffected() != 0;
@@ -1373,8 +1381,7 @@ bool PostgreSqlStorage::logMessage(Message &msg)
 
         if (addSenderQuery.lastError().isValid()) {
             rollbackSavePoint("sender_sp1", db);
-            getSenderIdQuery.prepare(getSenderIdQuery.lastQuery());
-            safeExec(getSenderIdQuery);
+            getSenderIdQuery = executePreparedQuery("select_senderid", msg.sender(), db);
             watchQuery(getSenderIdQuery);
             getSenderIdQuery.first();
             senderId = getSenderIdQuery.value(0).toInt();
@@ -1444,8 +1451,7 @@ bool PostgreSqlStorage::logMessages(MessageList &msgs)
             if (addSenderQuery.lastError().isValid()) {
                 // seems it was inserted meanwhile... by a different thread
                 rollbackSavePoint("sender_sp", db);
-                selectSenderQuery.prepare(selectSenderQuery.lastQuery());
-                safeExec(selectSenderQuery);
+                selectSenderQuery = executePreparedQuery("select_senderid", sender, db);
                 watchQuery(selectSenderQuery);
                 selectSenderQuery.first();
                 senderIdList << selectSenderQuery.value(0).toInt();