[rygel/wip/track-changes: 26/34] wip: Persist change tracking variables



commit 9469443bd022c8ecc6c4733ab4a8513dc7e77c8e
Author: Jens Georg <jensg openismus com>
Date:   Mon Dec 10 19:27:58 2012 +0100

    wip: Persist change tracking variables

 .../rygel-media-export-media-cache.vala            |   31 ++++++++++++++-----
 .../rygel-media-export-sql-factory.vala            |   19 +++++++++---
 2 files changed, 37 insertions(+), 13 deletions(-)
---
diff --git a/src/plugins/media-export/rygel-media-export-media-cache.vala b/src/plugins/media-export/rygel-media-export-media-cache.vala
index 6b2f537..62737b4 100644
--- a/src/plugins/media-export/rygel-media-export-media-cache.vala
+++ b/src/plugins/media-export/rygel-media-export-media-cache.vala
@@ -583,27 +583,36 @@ public class Rygel.MediaExport.MediaCache : Object {
         this.db.exec (this.sql.make (SQLString.SAVE_METADATA), values);
     }
 
-    private void create_object (MediaObject item) throws Error {
+    private void create_object (MediaObject object) throws Error {
         int type = ObjectType.CONTAINER;
         GLib.Value parent;
 
-        if (item is MediaItem) {
+        if (object is MediaItem) {
             type = ObjectType.ITEM;
         }
 
-        if (item.parent == null) {
+        if (object.parent == null) {
             parent = Database  null ();
         } else {
-            parent = item.parent.id;
+            parent = object.parent.id;
         }
 
-        GLib.Value[] values = { item.id,
-                                item.title,
+        GLib.Value[] values = { object.id,
+                                object.title,
                                 type,
                                 parent,
-                                item.modified,
-                                item.uris.size == 0 ? null : item.uris[0]
+                                object.modified,
+                                object.uris.size == 0 ? null : object.uris[0],
+                                object.object_update_id,
+                                -1,
+                                -1
                               };
+        if (object is MediaContainer) {
+            var container = object as MediaContainer;
+            values[7] = container.total_deleted_child_count;
+            values[8] = container.update_id;
+        }
+
         this.db.exec (this.sql.make (SQLString.INSERT), values);
     }
 
@@ -652,6 +661,10 @@ public class Rygel.MediaExport.MediaCache : Object {
                 if (uri != null) {
                     container.uris.add (uri);
                 }
+                container.total_deleted_child_count = (uint32) statement.column_int64
+                                        (DetailColumn.DELETED_CHILD_COUNT);
+                container.update_id = (uint) statement.column_int64
+                                        (DetailColumn.CONTAINER_UPDATE_ID);
                 break;
             case 1:
                 // this is an item
@@ -678,6 +691,8 @@ public class Rygel.MediaExport.MediaCache : Object {
                 object.modified = 0;
                 (object as MediaItem).place_holder = true;
             }
+            object.object_update_id = (uint) statement.column_int64
+                                        (DetailColumn.OBJECT_UPDATE_ID);
         }
 
         return object;
diff --git a/src/plugins/media-export/rygel-media-export-sql-factory.vala b/src/plugins/media-export/rygel-media-export-sql-factory.vala
index 35e808c..4b3f94a 100644
--- a/src/plugins/media-export/rygel-media-export-sql-factory.vala
+++ b/src/plugins/media-export/rygel-media-export-sql-factory.vala
@@ -44,7 +44,10 @@ internal enum Rygel.MediaExport.DetailColumn {
     URI,
     DLNA_PROFILE,
     GENRE,
-    DISC
+    DISC,
+    OBJECT_UPDATE_ID,
+    DELETED_CHILD_COUNT,
+    CONTAINER_UPDATE_ID
 }
 
 internal enum Rygel.MediaExport.SQLString {
@@ -82,8 +85,10 @@ internal class Rygel.MediaExport.SQLFactory : Object {
          "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
 
     private const string INSERT_OBJECT_STRING =
-    "INSERT OR REPLACE INTO Object (upnp_id, title, type_fk, parent, timestamp, uri) " +
-        "VALUES (?,?,?,?,?,?)";
+    "INSERT OR REPLACE INTO Object " +
+        "(upnp_id, title, type_fk, parent, timestamp, uri, " +
+        " object_update_id, deleted_child_count, container_update_id) " +
+        "VALUES (?,?,?,?,?,?,?,?,?)";
 
     private const string DELETE_BY_ID_STRING =
     "DELETE FROM Object WHERE upnp_id IN " +
@@ -94,7 +99,8 @@ internal class Rygel.MediaExport.SQLFactory : Object {
     "m.height, m.class, m.author, m.album, m.date, m.bitrate, " +
     "m.sample_freq, m.bits_per_sample, m.channels, m.track, " +
     "m.color_depth, m.duration, o.upnp_id, o.parent, o.timestamp, " +
-    "o.uri, m.dlna_profile, m.genre, m.disc ";
+    "o.uri, m.dlna_profile, m.genre, m.disc, o.object_update_id, " +
+    "o.deleted_child_count, o.container_update_id ";
 
     private const string GET_OBJECT_WITH_PATH =
     "SELECT DISTINCT " + ALL_DETAILS_STRING +
@@ -197,7 +203,10 @@ internal class Rygel.MediaExport.SQLFactory : Object {
                           "title TEXT NOT NULL, " +
                           "timestamp INTEGER NOT NULL, " +
                           "uri TEXT, " +
-                          "flags TEXT);" +
+                          "flags TEXT, " +
+                          "object_update_id INTEGER, " +
+                          "deleted_child_count INTEGER, " +
+                          "container_update_id INTEGER);" +
     "INSERT INTO schema_info (version) VALUES ('" +
     SQLFactory.SCHEMA_VERSION + "'); ";
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]