static void pragha_application_provider_want_upgrade (PraghaDatabaseProvider *provider, gint provider_id, PraghaApplication *pragha) { PraghaDatabase *database; PraghaScanner *scanner; PraghaPreparedStatement *statement; const gchar *sql, *provider_type = NULL; sql = "SELECT name FROM provider_type WHERE id IN (SELECT type FROM provider WHERE id = ?)"; database = pragha_application_get_database (pragha); statement = pragha_database_create_statement (database, sql); pragha_prepared_statement_bind_int (statement, 1, provider_id); if (pragha_prepared_statement_step (statement)) provider_type = pragha_prepared_statement_get_string (statement, 0); if (g_ascii_strcasecmp (provider_type, "local") == 0) { scanner = pragha_application_get_scanner (pragha); pragha_scanner_scan_library (scanner); } pragha_prepared_statement_free (statement); }
gchar * pragha_database_get_filename_from_location_id (PraghaDatabase *database, gint location_id) { PraghaPreparedStatement *statement; const gchar *sql; gchar *file = NULL; sql = "SELECT name FROM LOCATION WHERE id = ?"; statement = pragha_database_create_statement (database, sql); pragha_prepared_statement_bind_int (statement, 1, location_id); if (pragha_prepared_statement_step (statement)) file = g_strdup (pragha_prepared_statement_get_string (statement, 0)); else g_warning ("Unable to find filename for location id: %d", location_id); pragha_prepared_statement_free (statement); return file; }
PraghaMusicobject * new_musicobject_from_db(PraghaDatabase *cdbase, gint location_id) { PraghaMusicobject *mobj = NULL; CDEBUG(DBG_MOBJ, "Creating new musicobject with location id: %d", location_id); const gchar *sql = "SELECT \ MIME_TYPE.name, \ TRACK.samplerate, \ TRACK.channels, \ TRACK.length, \ TRACK.bitrate, \ COMMENT.name, \ YEAR.year, \ TRACK.track_no, \ GENRE.name, \ ALBUM.name, \ ARTIST.name, \ TRACK.title, \ LOCATION.name \ FROM MIME_TYPE, TRACK, COMMENT, YEAR, GENRE, ALBUM, ARTIST, LOCATION \ WHERE TRACK.location = ? \ AND MIME_TYPE.id = TRACK.file_type \ AND COMMENT.id = TRACK.comment \ AND YEAR.id = TRACK.year \ AND GENRE.id = TRACK.genre \ AND ALBUM.id = TRACK.album \ AND ARTIST.id = TRACK.artist \ AND LOCATION.id = ?"; PraghaPreparedStatement *statement = pragha_database_create_statement (cdbase, sql); pragha_prepared_statement_bind_int (statement, 1, location_id); pragha_prepared_statement_bind_int (statement, 2, location_id); if (pragha_prepared_statement_step (statement)) { mobj = g_object_new (PRAGHA_TYPE_MUSICOBJECT, "file", pragha_prepared_statement_get_string (statement, 12), "source", FILE_LOCAL, "mime-type", pragha_prepared_statement_get_string (statement, 0), "title", pragha_prepared_statement_get_string (statement, 11), "artist", pragha_prepared_statement_get_string (statement, 10), "album", pragha_prepared_statement_get_string (statement, 9), "genre", pragha_prepared_statement_get_string (statement, 8), "comment", pragha_prepared_statement_get_string (statement, 5), "year", pragha_prepared_statement_get_int (statement, 6), "track-no", pragha_prepared_statement_get_int (statement, 7), "length", pragha_prepared_statement_get_int (statement, 3), "bitrate", pragha_prepared_statement_get_int (statement, 4), "channels", pragha_prepared_statement_get_int (statement, 2), "samplerate", pragha_prepared_statement_get_int (statement, 1), NULL); } else { g_critical("Track with location id : %d not found in DB", location_id); } pragha_prepared_statement_free (statement); return mobj; }