[rygel/wip/track-changes: 26/34] wip: Persist change tracking variables
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel/wip/track-changes: 26/34] wip: Persist change tracking variables
- Date: Tue, 11 Dec 2012 20:10:08 +0000 (UTC)
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]