Ticket #3115: myth_clean_tvchain.diff

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

housekeeper: cleanup tvchain table

  • programs/mythbackend/housekeeper.cpp

    diff --git a/programs/mythbackend/housekeeper.cpp b/programs/mythbackend/housekeeper.cpp
    index 952e909..ba3b5f0 100644
    a b void HouseKeeper::RunHouseKeeping(void) 
    247247            if (wantToRun("DailyCleanup", 1, 0, 24)) {
    248248                JobQueue::CleanupOldJobsInQueue();
    249249                CleanupAllOldInUsePrograms();
     250                CleanupOldLivetvChains();
    250251                CleanupRecordedTables();
    251252                CleanupProgramListings();
    252253                updateLastrun("DailyCleanup");
    void HouseKeeper::CleanupAllOldInUsePrograms(void) 
    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        deleteQuery.prepare("DELETE FROM tvchain "
     384                            "WHERE chainid NOT IN ( :KEEPERS );");
     385        deleteQuery.bindValue(":KEEPERS", keepChains);
     386    }
     387    deleteQuery.exec();
     388}
     389
    356390void HouseKeeper::CleanupRecordedTables(void)
    357391{
    358392    MSqlQuery query(MSqlQuery::InitCon());
  • programs/mythbackend/housekeeper.h

    diff --git a/programs/mythbackend/housekeeper.h b/programs/mythbackend/housekeeper.h
    index a90889a..3863439 100644
    a b class HouseKeeper 
    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);