[Rawstudio-commit] r3024 - branches/rawstudio-ng-color/src

Anders Kvist anders at kvistmail.dk
Sun Jan 17 21:28:19 CET 2010


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;
 




More information about the Rawstudio-commit mailing list