summaryrefslogtreecommitdiff
path: root/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp
Side-by-side diff
Diffstat (limited to 'libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp29
1 files changed, 22 insertions, 7 deletions
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp b/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp
index 9375f43..2368865 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp
+++ b/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp
@@ -279,7 +279,9 @@ namespace {
RemoveQuery::RemoveQuery(int uid )
: OSQLQuery(), m_uid( uid ) {}
+
RemoveQuery::~RemoveQuery() {}
+
QString RemoveQuery::query()const {
QString qu = "DELETE from addressbook where uid = "
+ QString::number(m_uid) + ";";
@@ -289,8 +291,6 @@ namespace {
}
-
-
FindQuery::FindQuery(int uid)
: OSQLQuery(), m_uid( uid ) {
}
@@ -300,12 +300,14 @@ namespace {
FindQuery::~FindQuery() {
}
QString FindQuery::query()const{
- if ( m_uids.count() == 0 )
- return single();
- else
- return multi();
+ if ( m_uids.count() == 0 )
+ return single();
+ else
+ return multi();
}
+
+
QString FindQuery::multi()const {
QString qu = "select * from addressbook where";
for (uint i = 0; i < m_uids.count(); i++ ) {
@@ -528,10 +530,23 @@ OPimContact OPimContactAccessBackend_SQL::find( int uid, const UIDArray& queryUi
}
-UIDArray OPimContactAccessBackend_SQL::queryByExample ( const OPimContact &query, int settings,
+UIDArray OPimContactAccessBackend_SQL::queryByExample ( const UIDArray& uidlist, const OPimContact &query, int settings,
const QDateTime& qd ) const
{
QString qu = "SELECT uid FROM addressbook WHERE";
+
+ // Just add uid's selection if we really try to search in a subset of all uids! Otherwise this would
+ // just take time and memory!
+ if ( uidlist.count() != m_uids.count() ) {
+ qu += " (";
+
+ for ( uint i = 0; i < uidlist.count(); i++ ) {
+ qu += " uid = " + QString::number( uidlist[i] ) + " OR";
+ }
+ qu.remove( qu.length()-2, 2 ); // Hmmmm..
+ qu += " ) AND ";
+ }
+
QString searchQuery ="";
QDate startDate;