QList<AnalysisDao::AnalysisInfo> AnalysisDao::getAnalysesForTrack(TrackId trackId) { if (!m_db.isOpen() || !trackId.isValid()) { return QList<AnalysisInfo>(); } QSqlQuery query(m_db); query.prepare(QString( "SELECT id, type, description, version, data_checksum FROM %1 " "WHERE track_id=:trackId").arg(s_analysisTableName)); query.bindValue(":trackId", trackId.toVariant()); return loadAnalysesFromQuery(trackId, &query); }
bool AnalysisDao::deleteAnalysesForTrack(TrackId trackId) { if (!trackId.isValid()) { return false; } QSqlQuery query(m_db); query.prepare(QString( "SELECT id FROM %1 where track_id = :track_id").arg(s_analysisTableName)); query.bindValue(":track_id", trackId.toVariant()); if (!query.exec()) { LOG_FAILED_QUERY(query) << "couldn't delete analyses for track" << trackId; return false; } QList<int> analysesToDelete; const int idColumn = query.record().indexOf("id"); while (query.next()) { analysesToDelete.append( query.value(idColumn).toInt()); } foreach (int analysisId, analysesToDelete) { deleteAnalysis(analysisId); }