[mythtv] [PATCH] add 'category' column to 'record', 'recorded', and 'oldrecorded' tables

Kirby Vandivort kvandivo at ks.uiuc.edu
Fri Jun 27 10:59:49 EDT 2003


This patch adds the category column to the 'record', 'recorded' and
'oldrecorded' tables in the database.  This will be handy in the future
for sorting lists, auto-recommendations, and other things that haven't
been thought about yet.

This should be extended to other fields also;  I had started doing the
category_type column, but some of the low level data structures don't
have fields for category_type yet, and I didn't want to delve that deep
into the code on my first pass.

Enjoy.

-- 

Kirby Vandivort                      Theoretical and Computational Biophysics 
Email: kvandivo at ks.uiuc.edu          3051 Beckman Institute
http://www.ks.uiuc.edu/~kvandivo/    University of Illinois
Phone: (217) 244-5711                405 N. Mathews Ave
Fax  : (217) 244-6078                Urbana, IL  61801, USA
-------------- next part --------------
Index: database/cvs.sql
===================================================================
RCS file: /var/lib/mythcvs/mythtv/database/cvs.sql,v
retrieving revision 1.31
diff -b -u -2 -r1.31 cvs.sql
--- database/cvs.sql	19 Jun 2003 06:34:27 -0000	1.31
+++ database/cvs.sql	27 Jun 2003 14:54:22 -0000
@@ -8,5 +8,5 @@
 
 DELETE FROM settings WHERE value='DBSchemaVer';
-INSERT INTO settings VALUES ('DBSchemaVer', 901, NULL);
+INSERT INTO settings VALUES ('DBSchemaVer', 902, NULL);
 
 #
@@ -15,4 +15,8 @@
 #   when a previously executed command is encountered.
 #
+
+ALTER TABLE record ADD COLUMN category VARCHAR(64) NULL;
+ALTER TABLE recorded ADD COLUMN category VARCHAR(64) NULL;
+ALTER TABLE oldrecorded ADD COLUMN category VARCHAR(64) NULL;
 
 ALTER TABLE program ADD COLUMN category_type VARCHAR(64) NULL;
Index: libs/libmythtv/programinfo.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/programinfo.cpp,v
retrieving revision 1.57
diff -b -u -2 -r1.57 programinfo.cpp
--- libs/libmythtv/programinfo.cpp	24 Jun 2003 04:16:36 -0000	1.57
+++ libs/libmythtv/programinfo.cpp	27 Jun 2003 14:54:48 -0000
@@ -595,16 +595,19 @@
     QString sqlsubtitle = subtitle;
     QString sqldescription = description;
+    QString sqlcategory = category;
 
     sqltitle.replace(QRegExp("\""), QString("\\\""));
     sqlsubtitle.replace(QRegExp("\""), QString("\\\""));
     sqldescription.replace(QRegExp("\""), QString("\\\""));
+    sqlcategory.replace(QRegExp("\""), QString("\\\""));
 
     QString query;
     query = QString("INSERT INTO recorded (chanid,starttime,endtime,title,"
-                    "subtitle,description,hostname) "
-                    "VALUES(%1,\"%2\",\"%3\",\"%4\",\"%5\",\"%6\",\"%7\");")
+                    "subtitle,description,hostname,category) "
+                    "VALUES(%1,\"%2\",\"%3\",\"%4\",\"%5\",\"%6\",\"%7\",\"%8\");")
                     .arg(chanid).arg(starts).arg(ends).arg(sqltitle.utf8()) 
                     .arg(sqlsubtitle.utf8()).arg(sqldescription.utf8())
-                    .arg(gContext->GetHostName());
+                    .arg(gContext->GetHostName())
+                    .arg(sqlcategory.utf8());
 
     QSqlQuery qquery = db->exec(query);
Index: libs/libmythtv/scheduledrecording.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/scheduledrecording.cpp,v
retrieving revision 1.28
diff -b -u -2 -r1.28 scheduledrecording.cpp
--- libs/libmythtv/scheduledrecording.cpp	19 Jun 2003 02:20:42 -0000	1.28
+++ libs/libmythtv/scheduledrecording.cpp	27 Jun 2003 14:54:49 -0000
@@ -135,4 +135,12 @@
 };
 
+class SRCategory: public LineEditSetting, public SRSetting {
+public:
+    SRCategory(const ScheduledRecording& parent):
+        SRSetting(parent, "category") {
+        setVisible(false);
+    };
+};
+
 ScheduledRecording::ScheduledRecording() {
     addChild(id = new ID());
@@ -147,4 +155,5 @@
     addChild(startDate = new SRStartDate(*this));
     addChild(endDate = new SREndDate(*this));
+    addChild(category = new SRCategory(*this));
 
     m_pginfo = NULL;
@@ -161,4 +170,5 @@
     endTime->setValue(proginfo->endts.time());
     endDate->setValue(proginfo->endts.date());
+    category->setValue(proginfo->category);
 }
 
@@ -170,5 +180,5 @@
 "program.title, program.subtitle, program.description, "
 "channel.channum, channel.callsign, channel.name, "
-"oldrecorded.starttime IS NOT NULL AS duplicate "
+"oldrecorded.starttime IS NOT NULL AS duplicate, program.category "
 "FROM record "
 " INNER JOIN channel ON (channel.chanid = program.chanid) "
@@ -233,4 +243,5 @@
              proginfo->channame = result.value(9).toString();
              proginfo->duplicate = result.value(10).toInt();
+             proginfo->category = QString::fromUtf8(result.value(11).toString());
 
              // would save many queries to create and populate a
@@ -245,4 +256,6 @@
              if (proginfo->description == QString::null)
                  proginfo->description = "";
+             if (proginfo->category == QString::null)
+                 proginfo->category = "";
 
              if (proginfo->endts < now)
@@ -416,12 +429,14 @@
     QString sqlsubtitle = proginfo.subtitle;
     QString sqldescription = proginfo.description;
+    QString sqlcategory = proginfo.category;
 
     sqltitle.replace(QRegExp("\""), QString("\\\""));
     sqlsubtitle.replace(QRegExp("\""), QString("\\\""));
     sqldescription.replace(QRegExp("\""), QString("\\\""));
+    sqlcategory.replace(QRegExp("\""), QString("\\\""));
 
     QString query = QString("INSERT INTO oldrecorded (chanid,starttime,endtime,title,"
-                            "subtitle,description) "
-                            "VALUES(%1,\"%2\",\"%3\",\"%4\",\"%5\",\"%6\");")
+                            "subtitle,description,category) "
+                            "VALUES(%1,\"%2\",\"%3\",\"%4\",\"%5\",\"%6\",\"%7\");")
         .arg(proginfo.chanid)
         .arg(proginfo.startts.toString(Qt::ISODate))
@@ -429,5 +444,6 @@
         .arg(sqltitle.utf8()) 
         .arg(sqlsubtitle.utf8())
-        .arg(sqldescription.utf8());
+        .arg(sqldescription.utf8())
+        .arg(sqlcategory.utf8());
 
     QSqlQuery result = db->exec(query);
Index: libs/libmythtv/scheduledrecording.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/scheduledrecording.h,v
retrieving revision 1.8
diff -b -u -2 -r1.8 scheduledrecording.h
--- libs/libmythtv/scheduledrecording.h	18 Jun 2003 23:43:41 -0000	1.8
+++ libs/libmythtv/scheduledrecording.h	27 Jun 2003 14:54:50 -0000
@@ -83,4 +83,5 @@
     class SREndTime* endTime;
     class SREndDate* endDate;
+    class SRCategory* category;
 
     ProgramInfo* m_pginfo;


More information about the mythtv-dev mailing list