media-export: Yet another database version
authorJens Georg <mail@jensge.org>
Fri, 23 Jul 2010 20:17:03 +0000 (23:17 +0300)
committerZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Sat, 24 Jul 2010 00:28:17 +0000 (03:28 +0300)
 * Add a genre field to metadata
 * Add a flag filed to object. Will be used to mark URIS as
   DBus-originated

src/plugins/media-export/rygel-media-export-media-cache-upgrader.vala
src/plugins/media-export/rygel-media-export-media-cache.vala

index a4e7476..9e2b90c 100644 (file)
@@ -100,6 +100,9 @@ internal class Rygel.MediaExport.MediaCacheUpgrader {
                     case 6:
                         update_v6_v7 ();
                         break;
+                    case 7:
+                        update_v7_v8 ();
+                        break;
                     default:
                         warning ("Cannot upgrade");
                         database = null;
@@ -226,5 +229,22 @@ internal class Rygel.MediaExport.MediaCacheUpgrader {
         }
     }
 
+    private void update_v7_v8 () {
+        try {
+            database.begin ();
+            database.exec ("ALTER TABLE object ADD COLUMN flags TEXT");
+            database.exec ("ALTER TABLE meta_data ADD COLUMN genre TEXT");
+            database.exec ("UPDATE schema_info SET version = '8'");
+            force_reindex ();
+            database.commit ();
+            database.exec ("VACUUM");
+            database.analyze ();
+        } catch (DatabaseError error) {
+            database.rollback ();
+            warning ("Database upgrade failed: %s", error.message);
+            database = null;
+        }
+    }
+
 
 }
index c687af8..fd50eb0 100644 (file)
@@ -45,7 +45,7 @@ public enum Rygel.MediaDBObjectType {
 public class Rygel.MediaExport.MediaCache : Object {
     private Database db;
     private DBObjectFactory factory;
-    internal const string schema_version = "7";
+    internal const string schema_version = "8";
     internal const string CREATE_META_DATA_TABLE_STRING =
     "CREATE TABLE meta_data (size INTEGER NOT NULL, " +
                             "mime_type TEXT NOT NULL, " +
@@ -56,6 +56,7 @@ public class Rygel.MediaExport.MediaCache : Object {
                             "class TEXT NOT NULL, " +
                             "author TEXT, " +
                             "album TEXT, " +
+                            "genre TEXT, " +
                             "date TEXT, " +
                             "bitrate INTEGER, " +
                             "sample_freq INTEGER, " +
@@ -76,7 +77,8 @@ public class Rygel.MediaExport.MediaCache : Object {
                           "type_fk INTEGER, " +
                           "title TEXT NOT NULL, " +
                           "timestamp INTEGER NOT NULL, " +
-                          "uri TEXT);" +
+                          "uri TEXT, " +
+                          "flags TEXT);" +
     "INSERT INTO schema_info (version) VALUES ('" +
     MediaCache.schema_version + "'); ";