_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 "
"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");
_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() {
delete _insert_artist_query;
delete _insert_date_query;
delete _insert_track_query;
+ delete _insert_favorites_query;
+ delete _update_track_count_query;
db.close();
}
}
}
-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) {