[rygel] lms: Replace prepare_and_init with exec_cursor



commit b932b8fe0e32b736dd9d6487a42366ac107fb7e8
Author: Jens Georg <mail jensge org>
Date:   Sun Feb 7 15:11:53 2016 +0100

    lms: Replace prepare_and_init with exec_cursor
    
    Signed-off-by: Jens Georg <mail jensge org>

 src/plugins/lms/rygel-lms-albums.vala             |    9 +--
 src/plugins/lms/rygel-lms-category-container.vala |   11 +---
 src/plugins/lms/rygel-lms-database.vala           |   60 ---------------------
 3 files changed, 6 insertions(+), 74 deletions(-)
---
diff --git a/src/plugins/lms/rygel-lms-albums.vala b/src/plugins/lms/rygel-lms-albums.vala
index 8b93f28..12d77f3 100644
--- a/src/plugins/lms/rygel-lms-albums.vala
+++ b/src/plugins/lms/rygel-lms-albums.vala
@@ -108,10 +108,7 @@ public class Rygel.LMS.Albums : Rygel.LMS.CategoryContainer {
         }
         var query = Albums.SQL_CHILD_COUNT_WITH_FILTER_TEMPLATE.printf (filter);
         try {
-            var stmt = this.lms_db.prepare_and_init (query, args.values);
-            if (stmt.step () == Sqlite.ROW) {
-                count += stmt.column_int (0);
-            }
+            count += this.lms_db.query_value (query, args.values);
         } catch (DatabaseError e) {
             warning ("Query failed: %s", e.message);
         }
@@ -136,8 +133,8 @@ public class Rygel.LMS.Albums : Rygel.LMS.CategoryContainer {
         }
         var query = Albums.SQL_CHILD_ALL_WITH_FILTER_TEMPLATE.printf (filter);
         try {
-            var stmt = this.lms_db.prepare_and_init (query, args.values);
-            while (Database.get_children_step (stmt)) {
+            var cursor = this.lms_db.exec_cursor (query, args.values);
+            foreach (var stmt in cursor) {
                 var album_id = stmt.column_text (13);
                 var album = new Album (album_id, this, "", this.lms_db);
 
diff --git a/src/plugins/lms/rygel-lms-category-container.vala 
b/src/plugins/lms/rygel-lms-category-container.vala
index 8a07f48..f208ef2 100644
--- a/src/plugins/lms/rygel-lms-category-container.vala
+++ b/src/plugins/lms/rygel-lms-category-container.vala
@@ -201,12 +201,7 @@ public abstract class Rygel.LMS.CategoryContainer : Rygel.MediaContainer,
     {
         var query = this.get_sql_count_with_filter (where_filter);
         try {
-            var stmt = this.lms_db.prepare_and_init (query, args.values);
-            if (stmt.step () != Sqlite.ROW) {
-                return 0;
-            }
-
-            return stmt.column_int (0);
+            return this.lms_db.query_value (query, args.values);
         } catch (DatabaseError e) {
             warning ("Query failed: %s", e.message);
 
@@ -228,8 +223,8 @@ public abstract class Rygel.LMS.CategoryContainer : Rygel.MediaContainer,
 
         var query = this.get_sql_all_with_filter (where_filter);
         try {
-            var stmt = this.lms_db.prepare_and_init (query, args.values);
-            while (Database.get_children_step (stmt)) {
+            var cursor = this.lms_db.exec_cursor (query, args.values);
+            foreach (var stmt in cursor) {
                 children.add (this.object_from_statement (stmt));
             }
         } catch (DatabaseError e) {
diff --git a/src/plugins/lms/rygel-lms-database.vala b/src/plugins/lms/rygel-lms-database.vala
index 82c4b83..70dd7f8 100644
--- a/src/plugins/lms/rygel-lms-database.vala
+++ b/src/plugins/lms/rygel-lms-database.vala
@@ -85,66 +85,6 @@ public class Rygel.LMS.Database : Rygel.Database.Database, Initable {
         }
     }
 
-
-    public Statement prepare_and_init (string   query,
-                                       GLib.Value[]? arguments)
-                                        throws DatabaseError {
-
-        var statement = this.prepare (query);
-
-        for (var i = 1; i <= arguments.length; ++i) {
-            int sqlite_err;
-            unowned GLib.Value current_value = arguments[i - 1];
-
-            if (current_value.holds (typeof (int))) {
-                sqlite_err = statement.bind_int (i, current_value.get_int ());
-                if (sqlite_err != Sqlite.OK)
-                    throw new DatabaseError.BIND("Unable to bind value %d",
-                                                 sqlite_err);
-            } else if (current_value.holds (typeof (int64))) {
-                sqlite_err = statement.bind_int64 (i, current_value.get_int64 ());
-                if (sqlite_err != Sqlite.OK)
-                    throw new DatabaseError.BIND("Unable to bind value %d",
-                                                 sqlite_err);
-            } else if (current_value.holds (typeof (uint64))) {
-                sqlite_err = statement.bind_int64 (i, (int64) current_value.get_uint64 ());
-                if (sqlite_err != Sqlite.OK)
-                    throw new DatabaseError.BIND("Unable to bind value %d",
-                                                 sqlite_err);
-            } else if (current_value.holds (typeof (long))) {
-                sqlite_err = statement.bind_int64 (i, current_value.get_long ());
-                if (sqlite_err != Sqlite.OK)
-                    throw new DatabaseError.BIND("Unable to bind value %d",
-                                                 sqlite_err);
-            } else if (current_value.holds (typeof (uint))) {
-                sqlite_err = statement.bind_int64 (i, current_value.get_uint ());
-                if (sqlite_err != Sqlite.OK)
-                    throw new DatabaseError.BIND("Unable to bind value %d",
-                                                 sqlite_err);
-            } else if (current_value.holds (typeof (string))) {
-                sqlite_err = statement.bind_text (i, current_value.get_string ());
-                if (sqlite_err != Sqlite.OK)
-                    throw new DatabaseError.BIND("Unable to bind value %d",
-                                                 sqlite_err);
-            } else if (current_value.holds (typeof (void *))) {
-                if (current_value.peek_pointer () == null) {
-                    sqlite_err = statement.bind_null (i);
-                    if (sqlite_err != Sqlite.OK)
-                        throw new DatabaseError.BIND("Unable to bind value %d",
-                                                     sqlite_err);
-                } else {
-                    assert_not_reached ();
-                }
-            } else {
-                var type = current_value.type ();
-                warning (_("Unsupported type %s"), type.name ());
-                assert_not_reached ();
-            }
-        }
-
-        return statement;
-    }
-
     public static void find_object(string id, Statement stmt) throws DatabaseError {
 
         (void) stmt.reset();


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