"WHERE object_fk = ?";
private const string INSERT_OBJECT_STRING =
- "INSERT INTO Object (upnp_id, title, type_fk, parent) " +
- "VALUES (?,?,?,?)";
+ "INSERT INTO Object (upnp_id, title, type_fk, parent, timestamp) " +
+ "VALUES (?,?,?,?,?)";
private const string UPDATE_OBJECT_STRING =
- "UPDATE Object SET title = ? WHERE upnp_id = ?";
+ "UPDATE Object SET title = ?, timestamp = ? WHERE upnp_id = ?";
private const string INSERT_URI_STRING =
"INSERT INTO Uri (object_fk, uri) VALUES (?,?)";
"Meta_Data.date, Meta_Data.bitrate, Meta_Data.sample_freq, " +
"Meta_Data.bits_per_sample, Meta_Data.channels, " +
"Meta_Data.track, Meta_Data.color_depth, Meta_Data.duration, " +
- "upnp_id, Object.parent " +
+ "upnp_id, Object.parent, Object.timestamp " +
"FROM Object LEFT OUTER JOIN Meta_Data " +
"ON Object.upnp_id = Meta_Data.object_fk " +
"WHERE Object.parent = ? " +
null);
if (rc == Sqlite.OK) {
statement.bind_text (1, obj.title);
- statement.bind_text (2, obj.id);
+ statement.bind_int64 (2, (int64) obj.timestamp);
+ statement.bind_text (3, obj.id);
rc = statement.step ();
if (rc != Sqlite.DONE && rc != Sqlite.OK) {
throw new MediaDBError.SQLITE_ERROR (db.errmsg ());
} else {
statement.bind_text (4, item.parent.id);
}
+
+ statement.bind_int64 (5, (int64) item.timestamp);
rc = statement.step ();
if (rc != Sqlite.OK && rc != Sqlite.DONE) {
throw new MediaDBError.SQLITE_ERROR (db.errmsg ());
}
if (obj != null) {
+ obj.timestamp = statement.column_int64 (18);
add_uris (obj);
}
return obj;
null);
if (rc == Sqlite.OK) {
statement.bind_text (1, object_id);
- statement.bind_int64 (2, (int64)offset);
- statement.bind_int64 (3, (int64)max_count);
+ statement.bind_int64 (2, (int64) offset);
+ statement.bind_int64 (3, (int64) max_count);
while ((rc = statement.step ()) == Sqlite.ROW) {
var child_id = statement.column_text (17);
var parent = get_object (statement.column_text (18));
public const string TAG_RYGEL_WIDTH = "rygel-width";
public const string TAG_RYGEL_HEIGHT = "rygel-height";
public const string TAG_RYGEL_DEPTH = "rygel-depth";
+ public const string TAG_RYGEL_MTIME = "rygel-mtime";
/* TODO: Use tagbin instead once it's ready */
private dynamic Gst.Element playbin;
this.register_custom_tag (TAG_RYGEL_WIDTH, typeof (int));
this.register_custom_tag (TAG_RYGEL_HEIGHT, typeof (int));
this.register_custom_tag (TAG_RYGEL_DEPTH, typeof (int));
+ this.register_custom_tag (TAG_RYGEL_MTIME, typeof (uint64));
// setup fake sinks
this.playbin = ElementFactory.make ("playbin", null);
try {
file_info = file.query_info (FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE
+ "," +
- FILE_ATTRIBUTE_STANDARD_SIZE,
+ FILE_ATTRIBUTE_STANDARD_SIZE + "," +
+ FILE_ATTRIBUTE_TIME_MODIFIED,
FileQueryInfoFlags.NONE,
null);
} catch (Error error) {
this.tag_list.add (TagMergeMode.REPLACE,
TAG_RYGEL_SIZE,
size);
+
+ var mtime = file_info.get_attribute_uint64(
+ FILE_ATTRIBUTE_TIME_MODIFIED);
+ this.tag_list.add (TagMergeMode.REPLACE,
+ TAG_RYGEL_MTIME,
+ mtime);
}
private void extract_duration () {