Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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);
    }