Ticket #3115: myth_clean_tvchain4.diff

File myth_clean_tvchain4.diff, 2.3 KB (added by gnome42@…, 17 years ago)

Give the function a more accurate name: CleanupOldLivetvChains?() to CleanupOrphanedLivetvChains?()

  • programs/mythbackend/housekeeper.cpp

     
    247247            if (wantToRun("DailyCleanup", 1, 0, 24)) {
    248248                JobQueue::CleanupOldJobsInQueue();
    249249                CleanupAllOldInUsePrograms();
     250                CleanupOrphanedLivetvChains();
    250251                CleanupRecordedTables();
    251252                CleanupProgramListings();
    252253                updateLastrun("DailyCleanup");
     
    353354    query.exec();
    354355}
    355356
     357void HouseKeeper::CleanupOrphanedLivetvChains(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 msg, keepChains = "";
     375    while (query.next())
     376        keepChains += "'" + query.value(0).toString() + "',";
     377 
     378    if (keepChains.isEmpty())
     379        msg = "DELETE FROM tvchain WHERE endtime < now();";
     380    else
     381    {
     382        keepChains = keepChains.left(keepChains.length() - 1);
     383        msg = QString("DELETE FROM tvchain "
     384                      "WHERE chainid NOT IN ( %1 ) "
     385                      "AND endtime < now();")
     386                      .arg(keepChains.ascii());
     387    }
     388    deleteQuery.prepare(msg);
     389    deleteQuery.exec();
     390}
     391
    356392void HouseKeeper::CleanupRecordedTables(void)
    357393{
    358394    MSqlQuery query(MSqlQuery::InitCon());
  • programs/mythbackend/housekeeper.h

     
    3434    void runFillDatabase();
    3535    void CleanupMyOldRecordings(void);
    3636    void CleanupAllOldInUsePrograms(void);
     37    void CleanupOrphanedLivetvChains(void);
    3738    void CleanupRecordedTables(void);
    3839    void CleanupProgramListings(void);
    3940    void RunStartupTasks(void);