X-Git-Url: http://git.maemo.org/git/?p=someplayer;a=blobdiff_plain;f=src%2Fdbstorage.cpp;h=11a551a45cc9b28af9a9d5de800d2fecba96e033;hp=49213716c4cd689be933ba8320c2dd3dcaa00be8;hb=af0c817f3a7b8a7aca40b1b88741cd9460a97799;hpb=c92d96e01d110d72cee8e8d307667507bf5d6fff diff --git a/src/dbstorage.cpp b/src/dbstorage.cpp index 4921371..11a551a 100644 --- a/src/dbstorage.cpp +++ b/src/dbstorage.cpp @@ -27,7 +27,7 @@ void DbStorage::_prepare_queries() { _get_tracks_for_album_query = new QSqlQuery(db); _get_tracks_for_album_query->prepare("SELECT id, title, source, count, length FROM tracks WHERE artist_id IN " "(SELECT id FROM artist WHERE name = :artist_name) AND album_id IN " - "(SELECT id FROM album WHERE name =: album_name);"); + "(SELECT id FROM album WHERE name = :album_name);"); _get_favorites_query = new QSqlQuery(db); _get_favorites_query->prepare("SELECT track_id as id, title, artist, album.name as album, source, count, length FROM " @@ -57,6 +57,10 @@ void DbStorage::_prepare_queries() { "JOIN album ON album_id = album.id " "WHERE track_id IN " "(SELECT track_id FROM adding_date ORDER BY date DESC LIMIT 0, :max)"); + + _get_track_count = new QSqlQuery(db); + _get_track_count->prepare("SELECT count from tracks WHERE id = :id"); + _check_artist_query = new QSqlQuery(db); _check_artist_query->prepare("SELECT id FROM artist WHERE name = :name"); @@ -77,6 +81,12 @@ void DbStorage::_prepare_queries() { _insert_date_query = new QSqlQuery(db); _insert_date_query->prepare("INSERT INTO adding_date (track_id, date) values (:track_id, strftime('%s', 'now'))"); + + _insert_favorites_query = new QSqlQuery(db); + _insert_favorites_query->prepare("INSERT INTO favorites (track_id) values (:track_id)"); + + _update_track_count_query = new QSqlQuery(db); + _update_track_count_query->prepare("UPDATE tracks SET count = :count where id = :id"); } void DbStorage::_create_database_structure() { @@ -123,6 +133,8 @@ DbStorage::~DbStorage() { delete _insert_artist_query; delete _insert_date_query; delete _insert_track_query; + delete _insert_favorites_query; + delete _update_track_count_query; db.close(); } @@ -318,10 +330,23 @@ void DbStorage::addTrack(Track track) { } } -void DbStorage::addToFavorites(Track) { +void DbStorage::addToFavorites(Track track) { + QSqlQuery *query = _insert_favorites_query; + query->bindValue(":track_id", track.id()); + query->exec(); } -void DbStorage::updateTrack(Track) { +void DbStorage::updateTrackCount(Track track) { + QSqlQuery *query = _get_track_count; + query->bindValue(":id", track.id()); + query->exec(); + if (query->next()) { + int count = query->value(0).toInt(); + query = _update_track_count_query; + query->bindValue(":count", count+1); + query->bindValue(":id", track.id()); + query->exec(); + } } int DbStorage::_check_add_artist(QString artist) {