performance improvement for load persons
authortimkoma <timkoma@localhost>
Wed, 3 Feb 2010 13:19:18 +0000 (13:19 +0000)
committertimkoma <timkoma@localhost>
Wed, 3 Feb 2010 13:19:18 +0000 (13:19 +0000)
src/mvc/event.cpp
src/mvc/event.h

index 4e19cb0..49ce16f 100644 (file)
@@ -143,21 +143,23 @@ int Event::roomId() const
     return query.record().value("xid_room").toInt();
 }
 
-QStringList Event::persons() const
+QStringList Event::persons()
 {
-    QSqlQuery query;
-    // TODO: conference ID isn't used here
-    query.prepare("SELECT person.name FROM person INNER JOIN event_person ON person.id = event_person.xid_person AND event_person.xid_event = :id");
-    query.bindValue(":id", id());
-    query.exec();
-    // TODO: handle qeury error
-    //qDebug() << query.lastError();
-
-    QStringList persons;
-    while(query.next())
-        persons.append(query.record().value("name").toString());
+    if( personsList.isEmpty() )
+    {
+        QSqlQuery query;
+        // TODO: conference ID isn't used here
+        query.prepare("SELECT person.name FROM person INNER JOIN event_person ON person.id = event_person.xid_person AND event_person.xid_event = :id");
+        query.bindValue(":id", id());
+        query.exec();
+        // TODO: handle qeury error
+        //qDebug() << query.lastError();
+
+        while(query.next())
+            personsList.append(query.record().value("name").toString());
+    }
 
-    return persons;
+    return personsList;
 }
 
 QMap<QString,QString> Event::links() const
index dccd970..4fcd3ed 100644 (file)
@@ -65,7 +65,7 @@ public:
     // records from other tables associated with 'id'
     QString room() const;
     int roomId() const;
-    QStringList persons() const;
+    QStringList persons();
     QMap<QString,QString> links() const;
 
     void setId(int id) { setValue("id", id); }
@@ -88,6 +88,9 @@ public:
     void setLinks(const QMap<QString,QString> &aLinks);
 
 friend class EventTest;
+
+private:
+    QStringList personsList;
 };
 
 #endif // EVENT_H