Ticket #3115: myth_clean_tvchain2.diff

File myth_clean_tvchain2.diff, 2.4 KB (added by gnome42@…, 19 years ago)

update

  • programs/mythbackend/housekeeper.cpp

     
    247247            if (wantToRun("DailyCleanup", 1, 0, 24)) {
    248248                JobQueue::CleanupOldJobsInQueue();
    249249                CleanupAllOldInUsePrograms();
     250                CleanupOldLivetvChains();
    250251                CleanupRecordedTables();
    251252                CleanupProgramListings();
    252253                updateLastrun("DailyCleanup");
     
    353354    query.exec();
    354355}
    355356
     357void 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
    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 CleanupOldLivetvChains(void);
    3738    void CleanupRecordedTables(void);
    3839    void CleanupProgramListings(void);
    3940    void RunStartupTasks(void);