Ticket #554: programid-part.patch

File programid-part.patch, 2.0 KB (added by jppoet@…, 11 years ago)

Fudge programids to include the part number as necessary to make the programid unique

  • programs/mythfilldatabase/main.cpp

    old new int main(int argc, char *argv[]) 
    728728                QString("    Found %1").arg(query.numRowsAffected()));
    729729    }
    730730
     731    if (grab_data)
     732    {
     733        VERBOSE(VB_GENERAL, "Fudging non-unique programid "
     734                "with multiple parts.");
     735
     736        MSqlQuery sel(MSqlQuery::InitCon());
     737        sel.exec("SELECT DISTINCT programid, partnumber "
     738                 "FROM program WHERE partnumber > 0 AND parttotal > 0 AND "
     739                 "programid LIKE '%0000'");
     740
     741        if (sel.isActive() && sel.size() > 0)
     742        {
     743            MSqlQuery repl(MSqlQuery::InitCon());
     744
     745            while (sel.next())
     746            {
     747                QString orig_programid = sel.value(0).toString();
     748                int partnum = sel.value(1).toInt();
     749                QString new_programid = orig_programid.left(8);
     750                QString part;
     751
     752                part.setNum(partnum);
     753                new_programid.append(part.rightJustify(4, '0'));
     754
     755                repl.prepare("UPDATE program SET programid = :NEWID "
     756                             "WHERE programid = :OLDID AND "
     757                             "partnumber = :PART");
     758                repl.bindValue(":NEWID", new_programid);
     759                repl.bindValue(":OLDID", orig_programid);
     760                repl.bindValue(":PART", partnum);
     761                if (!repl.exec())
     762                {
     763                    VERBOSE(VB_GENERAL,
     764                            QString("Fudging programid from '%1' to '%2'")
     765                            .arg(orig_programid)
     766                            .arg(new_programid));
     767                }
     768            }
     769        }
     770
     771        VERBOSE(VB_GENERAL,
     772                QString("    Found %1").arg(sel.numRowsAffected()));
     773    }
     774
    731775    if (mark_repeats)
    732776    {
    733777        VERBOSE(VB_GENERAL, "Marking repeats.");