~stolowski/unity-scope-click/provide-default-db

« back to all changes in this revision

Viewing changes to libclickscope/click/departments-db.cpp

  • Committer: Pawel Stolowski
  • Date: 2014-07-10 08:57:59 UTC
  • Revision ID: pawel.stolowski@canonical.com-20140710085759-0f7u1s8sb2kj49za
Delete existing departments before adding new ones.

Show diffs side-by-side

added added

removed removed

Lines of Context:
56
56
    init_db(name);
57
57
 
58
58
    delete_pkgmap_query_.reset(new QSqlQuery(db_));
 
59
    delete_depts_query_.reset(new QSqlQuery(db_));
 
60
    delete_deptnames_query_.reset(new QSqlQuery(db_));
59
61
    insert_pkgmap_query_.reset(new QSqlQuery(db_));
60
62
    insert_dept_id_query_.reset(new QSqlQuery(db_));
61
63
    insert_dept_name_query_.reset(new QSqlQuery(db_));
66
68
    select_dept_name_.reset(new QSqlQuery(db_));
67
69
 
68
70
    delete_pkgmap_query_->prepare("DELETE FROM pkgmap WHERE pkgid=:pkgid");
 
71
    delete_depts_query_->prepare("DELETE FROM depts");
 
72
    delete_deptnames_query_->prepare("DELETE FROM deptnames WHERE locale=:locale");
69
73
    insert_pkgmap_query_->prepare("INSERT OR REPLACE INTO pkgmap (pkgid, deptid) VALUES (:pkgid, :deptid)");
70
74
    insert_dept_id_query_->prepare("INSERT OR REPLACE INTO depts (deptid, parentid) VALUES (:deptid, :parentid)");
71
75
    insert_dept_name_query_->prepare("INSERT OR REPLACE INTO deptnames (deptid, locale, name) VALUES (:deptid, :locale, :name)");
332
336
        std::cerr << "Failed to start transaction" << std::endl;
333
337
    }
334
338
 
 
339
    //
 
340
    // delete existing departments for given locale first
 
341
    delete_deptnames_query_->bindValue(":locale", QVariant(QString::fromStdString(locale)));
 
342
    if (!delete_deptnames_query_->exec())
 
343
    {
 
344
        db_.rollback();
 
345
        report_db_error(delete_deptnames_query_->lastError(), "Failed to delete from deptnames");
 
346
    }
 
347
    if (!delete_depts_query_->exec())
 
348
    {
 
349
        db_.rollback();
 
350
        report_db_error(delete_depts_query_->lastError(), "Failed to delete from depts");
 
351
    }
 
352
 
335
353
    store_departments_(depts, locale);
336
354
 
337
355
    if (!db_.commit())