[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/extragear/graphics/digikam/1.0-databaseext
From:       Holger Foerster <hamsi2k () freenet ! de>
Date:       2010-03-02 17:40:43
Message-ID: 1267551643.101538.2667.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1098022 by foerster:

Move SQL statements to extern dbconfig.xml config file to provide specific \
statements.

 M  +51 -1     data/database/dbconfig.xml.cmake  
 M  +8 -25     libs/database/albumdb.cpp  


--- branches/extragear/graphics/digikam/1.0-databaseext/data/database/dbconfig.xml.cmake \
#1098021:1098022 @@ -245,6 +245,30 @@
 				END;</statement>
 			</dbaction>
 			
+			<dbaction name="getItemURLsInAlbumByItemName" mode="transaction">
+				<statement mode="query">SELECT Albums.relativePath, Images.name FROM Images \
INNER JOIN Albums ON Albums.id=Images.album WHERE Albums.id=:albumID ORDER BY \
Images.name COLLATE NOCASE;</statement> +			</dbaction>
+			
+			<!--Don't collate on the path - this is to maintain the same behavior
+            	that happens when sort order is "By Path"
+            -->
+			<dbaction name="getItemURLsInAlbumByItemPath" mode="transaction">
+				<statement mode="query">SELECT Albums.relativePath, Images.name FROM Images \
INNER JOIN Albums ON Albums.id=Images.album WHERE Albums.id=:albumID ORDER BY \
Albums.relativePath,Images.name;</statement> +			</dbaction>
+			
+			<dbaction name="getItemURLsInAlbumByItemDate" mode="transaction">
+				<statement mode="query">SELECT Albums.relativePath, Images.name FROM Images \
INNER JOIN Albums ON Albums.id=Images.album INNER JOIN ImageInformation ON \
ImageInformation.imageid=Images.id WHERE Albums.id=:albumID ORDER BY \
ImageInformation.creationDate;</statement> +			</dbaction>
+			
+			<dbaction name="getItemURLsInAlbumByItemRating" mode="transaction">
+				<statement mode="query">SELECT Albums.relativePath, Images.name FROM Images \
INNER JOIN Albums ON Albums.id=Images.album INNER JOIN ImageInformation ON \
ImageInformation.imageid=Images.id WHERE Albums.id=:albumID ORDER BY \
ImageInformation.rating DESC;</statement> +			</dbaction>
+			
+			<dbaction name="getItemURLsInAlbumNoItemSorting" mode="transaction">
+				<statement mode="query">SELECT Albums.relativePath, Images.name FROM Images \
INNER JOIN Albums ON Albums.id=Images.album WHERE Albums.id=:albumID;</statement> \
+			</dbaction> +			
+			
 			<dbaction name="InsertTag" mode="transaction">
 				<statement mode="query">INSERT INTO Tags (pid, name) VALUES( :tagPID, \
:tagname);</statement>  </dbaction>
@@ -645,7 +669,33 @@
 			  WHERE node.lft BETWEEN parent.lft AND parent.rgt
 			  ORDER BY parent.lft;
 			END;</statement>
-			</dbaction> 
+			</dbaction>
+			
+			<dbaction name="getItemURLsInAlbumByItemName" mode="transaction">
+				<statement mode="query">SELECT Albums.relativePath, Images.name FROM Images \
INNER JOIN Albums ON Albums.id=Images.album WHERE Albums.id=:albumID ORDER BY \
Images.name;</statement> +			</dbaction>
+			
+			<!--Don't collate on the path - this is to maintain the same behavior
+            	that happens when sort order is "By Path"
+            -->
+			<dbaction name="getItemURLsInAlbumByItemPath" mode="transaction">
+				<statement mode="query">SELECT Albums.relativePath, Images.name FROM Images \
INNER JOIN Albums ON Albums.id=Images.album WHERE Albums.id=:albumID ORDER BY \
Albums.relativePath,Images.name;</statement> +			</dbaction>
+			
+			<dbaction name="getItemURLsInAlbumByItemDate" mode="transaction">
+				<statement mode="query">SELECT Albums.relativePath, Images.name FROM Images \
INNER JOIN Albums ON Albums.id=Images.album INNER JOIN ImageInformation ON \
ImageInformation.imageid=Images.id WHERE Albums.id=:albumID ORDER BY \
ImageInformation.creationDate;</statement> +			</dbaction>
+			
+			<dbaction name="getItemURLsInAlbumByItemRating" mode="transaction">
+				<statement mode="query">SELECT Albums.relativePath, Images.name FROM Images \
INNER JOIN Albums ON Albums.id=Images.album INNER JOIN ImageInformation ON \
ImageInformation.imageid=Images.id WHERE Albums.id=:albumID ORDER BY \
ImageInformation.rating DESC;</statement> +			</dbaction>
+			
+			<dbaction name="getItemURLsInAlbumNoItemSorting" mode="transaction">
+				<statement mode="query">SELECT Albums.relativePath, Images.name FROM Images \
INNER JOIN Albums ON Albums.id=Images.album WHERE Albums.id=:albumID;</statement> \
+			</dbaction> +			
+			
+			 
 			<dbaction name="InsertTag" mode="transaction">
 				<statement mode="plain">LOCK TABLE Tags WRITE;</statement>
 				<statement mode="query">SELECT @myLeft := lft FROM Tags WHERE id = \
                :tagPID;</statement>
--- branches/extragear/graphics/digikam/1.0-databaseext/libs/database/albumdb.cpp \
#1098021:1098022 @@ -2563,47 +2563,30 @@
     if (albumRootPath.isNull())
         return QStringList();
 
-    //TODO lets define SQL actions within dbconfig.xml
-    QString sqlString;
+    QMap<QString, QVariant> bindingMap;
+    bindingMap.insert(QString(":albumID"), albumID);
+
     switch(sortOrder)
     {
         case ByItemName:
-            sqlString = QString("SELECT Albums.relativePath, Images.name "
-                                 "FROM Images INNER JOIN Albums ON \
                Albums.id=Images.album "
-                                 "WHERE Albums.id=? "
-                                 "ORDER BY Images.name;"); //  COLLATE NOCASE
+            d->db->execDBAction(d->db->getDBAction(QString("getItemURLsInAlbumByItemName")), \
bindingMap, &values);  break;
         case ByItemPath:
             // Don't collate on the path - this is to maintain the same behavior
             // that happens when sort order is "By Path"
-            sqlString = QString("SELECT Albums.relativePath, Images.name "
-                                 "FROM Images INNER JOIN Albums ON \
                Albums.id=Images.album "
-                                 "WHERE Albums.id=? "
-                                 "ORDER BY Albums.relativePath,Images.name;");
+            d->db->execDBAction(d->db->getDBAction(QString("getItemURLsInAlbumByItemPath")), \
bindingMap, &values);  break;
         case ByItemDate:
-            sqlString = QString("SELECT Albums.relativePath, Images.name "
-                                 "FROM Images INNER JOIN Albums ON \
                Albums.id=Images.album "
-                                 "            INNER JOIN ImageInformation ON \
                ImageInformation.imageid=Images.id "
-                                 "WHERE Albums.id=? "
-                                 "ORDER BY ImageInformation.creationDate;");
+            d->db->execDBAction(d->db->getDBAction(QString("getItemURLsInAlbumByItemDate")), \
bindingMap, &values);  break;
         case ByItemRating:
-            sqlString = QString("SELECT Albums.relativePath, Images.name "
-                                 "FROM Images INNER JOIN Albums ON \
                Albums.id=Images.album "
-                                 "            INNER JOIN ImageInformation ON \
                ImageInformation.imageid=Images.id "
-                                 "WHERE Albums.id=? "
-                                 "ORDER BY ImageInformation.rating DESC;");
+            d->db->execDBAction(d->db->getDBAction(QString("getItemURLsInAlbumByItemRating")), \
bindingMap, &values);  break;
         case NoItemSorting:
         default:
-            sqlString = QString("SELECT Albums.relativePath, Images.name "
-                                 "FROM Images INNER JOIN Albums ON \
                Albums.id=Images.album "
-                                 "WHERE Albums.id=?;");
+            d->db->execDBAction(d->db->getDBAction(QString("getItemURLsInAlbumNoItemSorting")), \
bindingMap, &values);  break;
     }
-    // all statements take one bound value
-    d->db->execSql(sqlString, albumID, &values);
 
     QStringList urls;
     QString relativePath, name;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic