Added get interesting people method. situare_interact_situareservice
authorJussi Laitinen <jupe@l3l7588.ixonos.local>
Thu, 26 Aug 2010 13:00:52 +0000 (16:00 +0300)
committerJussi Laitinen <jupe@l3l7588.ixonos.local>
Thu, 26 Aug 2010 13:00:52 +0000 (16:00 +0300)
src/situareservice/database.cpp
src/situareservice/database.h

index b9fddc6..5252df5 100644 (file)
@@ -30,22 +30,18 @@ bool Database::addTag(int userId, const QString &tag)
 
         qWarning() << tagQuery.lastError().number();
         qWarning() << tagQuery.lastError().driverText();
-        qWarning() << tagQuery.lastError().text();
+        qWarning() << tagQuery.lastError().databaseText();
 
-        if (ret) {
+        if (ret || (tagQuery.lastError().number() == 19)) {
             int tagId = tagQuery.lastInsertId().toInt();
 
             QSqlQuery userTagQuery;
 
             ret = userTagQuery.exec(QString("INSERT INTO usertag VALUES(NULL, '%1', '%2')")
-                                    .arg(tagId).arg(userId));
-            qWarning() << userTagQuery.lastError().number();
-            qWarning() << userTagQuery.lastError().driverText();
-            qWarning() << userTagQuery.lastError().text();
+                                    .arg(userId).arg(tagId));
         }
     }
 
-    qDebug() << ret;
     return ret;
 }
 
@@ -60,13 +56,10 @@ bool Database::createTagTable()
         QSqlQuery query;
         created = query.exec("CREATE TABLE IF NOT EXISTS tag ("
                              "id INTEGER PRIMARY KEY,"
-                             "name VARCHAR(30)"
+                             "name VARCHAR(30) UNIQUE"
                              ")");
-
-        qWarning() << query.lastError().text();
     }
 
-    qDebug() << created;
     return created;
 }
 
@@ -85,26 +78,37 @@ bool Database::createUserTagTable()
                              "tagid INTEGER,"
                              "FOREIGN KEY(tagid) REFERENCES tag(id)"
                              ")");
-        qWarning() << query.lastError().text();
     }
 
-    qDebug() << created;
     return created;
 }
 
+QStringList Database::getInterestingPeople(int userId)
+{
+    qDebug() << __PRETTY_FUNCTION__;
+
+    QStringList interestingPeopleId;
+
+    QSqlQuery query(QString("SELECT DISTINCT ut.userid FROM usertag ut WHERE ut.id IN "
+                            "(SELECT ut.id FROM usertag ut WHERE userid = '%1')").arg(userId));
+
+    while (query.next())
+        interestingPeopleId.append(query.value(0).toString());
+
+    return interestingPeopleId;
+}
+
 QStringList Database::getTags(int userId)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
     QStringList tags;
 
-    QSqlQuery query(QString("SELECT * from usertag WHERE userid = '%1'").arg(userId));
-    qWarning() << query.lastError().text();
-    if (query.next()) {
-        qWarning() << query.value(0).toString();
-        qWarning() << query.value(1).toString();
-        qWarning() << query.value(2).toString();
-    }
+    QSqlQuery query(QString("SELECT t.name from usertag ut, tag t WHERE userid = '%1' AND "
+                            "ut.tagid = t.id").arg(userId));
+
+    while (query.next())
+        tags.append(query.value(0).toString());
 
     return tags;
 }
@@ -129,5 +133,18 @@ void Database::test()
 
     bool ret = false;
 
-//    QSqlQuery query(QString("SELECT * from tag"))
+    QSqlQuery tagQuery(QString("SELECT * from tag"));
+    qWarning() << tagQuery.lastError().text();
+    qWarning() << "id" << "name";
+    while (tagQuery.next()) {
+         qWarning() << tagQuery.value(0).toString() << tagQuery.value(1).toString();
+     }
+
+    QSqlQuery userTagQuery(QString("SELECT * from usertag"));
+    qWarning() << userTagQuery.lastError().text();
+    qWarning() << "id" << "userid" << "tagid";
+    while (userTagQuery.next()) {
+         qWarning() << userTagQuery.value(0).toString() <<
+                 userTagQuery.value(1).toString() << userTagQuery.value(2).toString();
+     }
 }
index a1c9137..e4b1483 100644 (file)
@@ -17,6 +17,7 @@ public:
 
     bool addTag(int userId, const QString &tag);
     QStringList getTags(int userId);
+    QStringList getInterestingPeople(int userId);
     bool openDatabase();
     bool createTagTable();
     bool createUserTagTable();