| File src/BuildHistory.cpp changed (mode: 100644) (index 2097bea..e1a9110) |
| ... |
... |
static void updateDBSchema(DB &db, int fromVersion); |
| 37 |
37 |
/** |
/** |
| 38 |
38 |
* @brief Current database scheme version. |
* @brief Current database scheme version. |
| 39 |
39 |
*/ |
*/ |
| 40 |
|
const int AppDBVersion = 3; |
|
|
40 |
|
const int AppDBVersion = 1; |
| 41 |
41 |
|
|
| 42 |
42 |
File::File(std::string path, std::string hash, std::vector<int> coverage) |
File::File(std::string path, std::string hash, std::vector<int> coverage) |
| 43 |
43 |
: path(std::move(path)), hash(std::move(hash)), |
: path(std::move(path)), hash(std::move(hash)), |
| |
| ... |
... |
updateDBSchema(DB &db, int fromVersion) |
| 310 |
310 |
buildid INTEGER, |
buildid INTEGER, |
| 311 |
311 |
vcsref TEXT NOT NULL, |
vcsref TEXT NOT NULL, |
| 312 |
312 |
vcsrefname TEXT NOT NULL, |
vcsrefname TEXT NOT NULL, |
| 313 |
|
covered INTEGER, |
|
| 314 |
|
uncovered INTEGER, |
|
|
313 |
|
covered INTEGER NOT NULL, |
|
314 |
|
missed INTEGER NOT NULL, |
|
315 |
|
timestamp INTEGER NOT NULL |
|
316 |
|
DEFAULT (CAST(strftime('%s', 'now') AS INT)), |
| 315 |
317 |
|
|
| 316 |
318 |
PRIMARY KEY (buildid) |
PRIMARY KEY (buildid) |
| 317 |
319 |
) |
) |
| |
| ... |
... |
updateDBSchema(DB &db, int fromVersion) |
| 337 |
339 |
) |
) |
| 338 |
340 |
)"); |
)"); |
| 339 |
341 |
// Fall through. |
// Fall through. |
| 340 |
|
case 1: |
|
| 341 |
|
db.execute(R"( |
|
| 342 |
|
CREATE TABLE builds_new ( |
|
| 343 |
|
buildid INTEGER, |
|
| 344 |
|
vcsref TEXT NOT NULL, |
|
| 345 |
|
vcsrefname TEXT NOT NULL, |
|
| 346 |
|
covered INTEGER NOT NULL, |
|
| 347 |
|
uncovered INTEGER NOT NULL, |
|
| 348 |
|
timestamp INTEGER NOT NULL |
|
| 349 |
|
DEFAULT (CAST(strftime('%s', 'now') AS INT)), |
|
| 350 |
|
|
|
| 351 |
|
PRIMARY KEY (buildid) |
|
| 352 |
|
) |
|
| 353 |
|
)"); |
|
| 354 |
|
|
|
| 355 |
|
for (std::tuple<int, std::string, std::string, int, int> vals : |
|
| 356 |
|
db.queryAll("SELECT buildid, vcsref, vcsrefname, " |
|
| 357 |
|
"covered, uncovered " |
|
| 358 |
|
"FROM builds")) { |
|
| 359 |
|
db.execute("INSERT INTO builds_new (buildid, vcsref, " |
|
| 360 |
|
"vcsrefname, covered, " |
|
| 361 |
|
"uncovered) " |
|
| 362 |
|
"VALUES (:buildid, :ref, :refname, :covered, " |
|
| 363 |
|
":uncovered)", |
|
| 364 |
|
{ ":buildid"_b = std::get<0>(vals), |
|
| 365 |
|
":ref"_b = std::get<1>(vals), |
|
| 366 |
|
":refname"_b = std::get<2>(vals), |
|
| 367 |
|
":covered"_b = std::get<3>(vals), |
|
| 368 |
|
":uncovered"_b = std::get<4>(vals) }); |
|
| 369 |
|
} |
|
| 370 |
|
|
|
| 371 |
|
db.execute("DROP TABLE builds"); |
|
| 372 |
|
db.execute("ALTER TABLE builds_new RENAME TO builds"); |
|
| 373 |
|
// Fall through. |
|
| 374 |
|
case 2: |
|
| 375 |
|
db.execute(R"( |
|
| 376 |
|
CREATE TABLE builds_new ( |
|
| 377 |
|
buildid INTEGER, |
|
| 378 |
|
vcsref TEXT NOT NULL, |
|
| 379 |
|
vcsrefname TEXT NOT NULL, |
|
| 380 |
|
covered INTEGER NOT NULL, |
|
| 381 |
|
missed INTEGER NOT NULL, |
|
| 382 |
|
timestamp INTEGER NOT NULL |
|
| 383 |
|
DEFAULT (CAST(strftime('%s', 'now') AS INT)), |
|
| 384 |
|
|
|
| 385 |
|
PRIMARY KEY (buildid) |
|
| 386 |
|
) |
|
| 387 |
|
)"); |
|
| 388 |
|
db.execute("INSERT INTO builds_new (buildid, vcsref, vcsrefname, " |
|
| 389 |
|
"covered, missed) " |
|
| 390 |
|
"SELECT buildid, vcsref, vcsrefname, covered, uncovered " |
|
| 391 |
|
"FROM builds"); |
|
| 392 |
|
db.execute("DROP TABLE builds"); |
|
| 393 |
|
db.execute("ALTER TABLE builds_new RENAME TO builds"); |
|
| 394 |
|
// Fall through. |
|
| 395 |
342 |
case AppDBVersion: |
case AppDBVersion: |
| 396 |
343 |
break; |
break; |
| 397 |
344 |
} |
} |