add dlna fields to image table.
authorGustavo Sverzut Barbieri <barbieri@profusion.mobi>
Tue, 27 Aug 2013 21:50:05 +0000 (18:50 -0300)
committerLucas De Marchi <lucas.demarchi@intel.com>
Fri, 30 Aug 2013 14:30:17 +0000 (11:30 -0300)
Add new fields dlna_profile and dlna_mime to provide simple
information for applications that use it.

src/lib/lightmediascanner_db.h
src/lib/lightmediascanner_db_image.c

index 2c87ec3..9744dcd 100644 (file)
@@ -74,6 +74,8 @@ extern "C" {
         int64_t id;
         struct lms_string_size title;
         struct lms_string_size artist;
+        struct lms_string_size dlna_profile;
+        struct lms_string_size dlna_mime;
         unsigned int date;
         unsigned short width;
         unsigned short height;
index 5c13398..737a05f 100644 (file)
@@ -88,8 +88,29 @@ _db_table_updater_images_0(sqlite3 *db, const char *table, unsigned int current_
     return ret;
 }
 
+static int
+_db_table_updater_images_1(sqlite3 *db, const char *table, unsigned int current_version, int is_last_run)
+{
+    int ret;
+    char *err;
+
+    ret = sqlite3_exec(
+        db, "BEGIN TRANSACTION;"
+        "ALTER TABLE images ADD COLUMN dlna_profile TEXT DEFAULT NULL;"
+        "ALTER TABLE images ADD COLUMN dlna_mime TEXT DEFAULT NULL;"
+        "COMMIT;",
+        NULL, NULL, &err);
+    if (ret != SQLITE_OK) {
+        fprintf(stderr, "ERROR: could add columns to images table: %s\n", err);
+        sqlite3_free(err);
+    }
+
+    return ret;
+}
+
 static lms_db_table_updater_t _db_table_updater_images[] = {
-    _db_table_updater_images_0
+    _db_table_updater_images_0,
+    _db_table_updater_images_1
 };
 
 
@@ -170,8 +191,8 @@ lms_db_image_start(lms_db_image_t *ldi)
     ldi->insert = lms_db_compile_stmt(ldi->db,
         "INSERT OR REPLACE INTO images ("
         "id, title, artist, date, width, height, orientation, "
-        "gps_lat, gps_long, gps_alt) VALUES ("
-        "?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
+        "gps_lat, gps_long, gps_alt, dlna_profile, dlna_mime) VALUES ("
+        "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
     if (!ldi->insert)
         return -2;
 
@@ -264,6 +285,15 @@ _db_insert(lms_db_image_t *ldi, const struct lms_image_info *info)
     if (ret != 0)
         goto done;
 
+    ret = lms_db_bind_text(stmt, 11, info->dlna_profile.str,
+                           info->dlna_profile.len);
+    if (ret != 0)
+        goto done;
+
+    ret = lms_db_bind_text(stmt, 12, info->dlna_mime.str, info->dlna_mime.len);
+    if (ret != 0)
+        goto done;
+
     r = sqlite3_step(stmt);
     if (r != SQLITE_DONE) {
         fprintf(stderr, "ERROR: could not insert image info: %s\n",