Author: akv
Date: 2010-01-17 21:28:19 +0100 (Sun, 17 Jan 2010)
New Revision: 3024

Modified:
   branches/rawstudio-ng-color/src/rs-library.c
Log:
When updating from library version 0 to 1 find identifiers for all known photos.

Modified: branches/rawstudio-ng-color/src/rs-library.c
===================================================================
--- branches/rawstudio-ng-color/src/rs-library.c        2010-01-17 20:04:36 UTC 
(rev 3023)
+++ branches/rawstudio-ng-color/src/rs-library.c        2010-01-17 20:28:19 UTC 
(rev 3024)
@@ -143,7 +143,7 @@
 static void
 library_check_version(sqlite3 *db)
 {
-       sqlite3_stmt *stmt;
+       sqlite3_stmt *stmt, *stmt_update;
        gint rc, version = 0;
 
        rc = sqlite3_prepare_v2(db, "SELECT version FROM version", -1, &stmt, 
NULL);
@@ -163,6 +163,26 @@
                        library_sqlite_error(db, rc);
                        sqlite3_finalize(stmt);
 
+                       /* Run through all photos in library and insert unique 
identifier in library */
+                       gchar *filename, *identifier;
+                       sqlite3_prepare_v2(db, "select filename from library", 
-1, &stmt, NULL);
+                       while (sqlite3_step(stmt) == SQLITE_ROW)
+                       {
+                               filename = (gchar *) sqlite3_column_text(stmt, 
0);
+                               if (g_file_test(filename, G_FILE_TEST_EXISTS))
+                               {
+                                       identifier = rs_file_checksum(filename);
+                                       rc = sqlite3_prepare_v2(db, "update 
library set identifier = ?1 WHERE filename = ?2;", -1, &stmt_update, NULL);
+                                       rc = sqlite3_bind_text(stmt_update, 1, 
identifier, strlen(identifier), SQLITE_TRANSIENT);
+                                       rc = sqlite3_bind_text(stmt_update, 2, 
filename, strlen(filename), SQLITE_TRANSIENT);
+                                       rc = sqlite3_step(stmt_update);
+                                       library_sqlite_error(db, rc);
+                                       sqlite3_finalize(stmt_update);
+                                       g_free(identifier);
+                               }
+                       }
+                       sqlite3_finalize(stmt);
+
                        library_set_version(db, version+1);
                        break;
 


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to