From 096fb2c5be5316e6d2e469b134b10329ca239c0f Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 30 Mar 2016 21:19:36 -0400 Subject: [PATCH] Reduce the number of queries to get all the options for a pkg down to a single query (across a couple tables). --- src/server/library/sysadm-pkg.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/server/library/sysadm-pkg.cpp b/src/server/library/sysadm-pkg.cpp index 4fbd4bd..285a613 100644 --- a/src/server/library/sysadm-pkg.cpp +++ b/src/server/library/sysadm-pkg.cpp @@ -14,14 +14,7 @@ using namespace sysadm; // ================== // INLINE FUNCTIONS // ================== -//Get Option Name -inline QString option_from_id(QString id){ - QSqlQuery q("SELECT option FROM option WHERE option_id = '"+id+"'"); - while(q.next()){ - return q.value("option").toString(); - } - return ""; //nothing found -} + //Get Annotation (name/value - both use ID's) inline QString anno_from_id(QString id){ QSqlQuery q("SELECT annotation FROM annotation WHERE annotation_id = '"+id+"'"); @@ -117,9 +110,12 @@ QJsonObject PKG::pkg_info(QStringList origins, QString repo, QString category, b } if(!fullresults){ retObj.insert(origin,info); continue; } //skip the rest of the info queries //OPTIONS - QSqlQuery q3("SELECT option_id, value FROM pkg_option WHERE package_id = '"+id+"'"); + QSqlQuery q3("SELECT value, option FROM pkg_option INNER JOIN option ON pkg_option.option_id = option.option_id WHERE pkg_option.package_id = '"+id+"'"); QJsonObject options; - while(q3.next()){ options.insert(option_from_id(q3.value("option_id").toString()), q3.value("value").toString() ); } + while(q3.next()){ + //for(int r=0; r