| | 357 | void HouseKeeper::CleanupOldLivetvChains(void) |
| | 358 | { |
| | 359 | QDateTime fourHoursAgo = QDateTime::currentDateTime().addSecs(-4 * 60 * 60); |
| | 360 | MSqlQuery query(MSqlQuery::InitCon()); |
| | 361 | MSqlQuery deleteQuery(MSqlQuery::InitCon()); |
| | 362 | |
| | 363 | // Keep these tvchains, they may be in use. |
| | 364 | query.prepare("SELECT DISTINCT chainid FROM tvchain " |
| | 365 | "WHERE endtime > :FOURHOURSAGO ;"); |
| | 366 | query.bindValue(":FOURHOURSAGO", fourHoursAgo); |
| | 367 | |
| | 368 | if (!query.exec() || !query.isActive()) |
| | 369 | { |
| | 370 | MythContext::DBError("HouseKeeper Cleaning TVChain Table", query); |
| | 371 | return; |
| | 372 | } |
| | 373 | |
| | 374 | QString keepChains = ""; |
| | 375 | while (query.next()) |
| | 376 | keepChains += "'" + query.value(0).toString() + "',"; |
| | 377 | |
| | 378 | if (keepChains.isEmpty()) |
| | 379 | deleteQuery.prepare("TRUNCATE TABLE tvchain;"); |
| | 380 | else |
| | 381 | { |
| | 382 | keepChains = keepChains.left(keepChains.length() - 1); |
| | 383 | // bindValue() adds unwanted quoting of keepChains :( |
| | 384 | deleteQuery.prepare(QString("DELETE FROM tvchain " |
| | 385 | "WHERE endtime < now() " |
| | 386 | "AND chainid NOT IN ( %1 );") |
| | 387 | .arg(keepChains)); |
| | 388 | } |
| | 389 | deleteQuery.exec(); |
| | 390 | } |
| | 391 | |