Skip to content

Commit

Permalink
libmythmetadata: allow loading a single metadata item without the who…
Browse files Browse the repository at this point in the history
…le library.

Also, convert the GetVideo API to use it.  Wayyyyyy more efficient and something I
should probably have gotten around to a long, long time ago.

Also, snag the coveted "20111111-1" library API bump.  Make distclean.
  • Loading branch information
Robert McNamara committed Nov 11, 2011
1 parent ce52b5e commit af40167
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 12 deletions.
2 changes: 1 addition & 1 deletion mythtv/libs/libmythbase/mythversion.h
Expand Up @@ -12,7 +12,7 @@
/// Update this whenever the plug-in API changes.
/// Including changes in the libmythbase, libmyth, libmythtv, libmythav* and
/// libmythui class methods used by plug-ins.
#define MYTH_BINARY_VERSION "0.25.20111102-1"
#define MYTH_BINARY_VERSION "0.25.20111111-1"

/** \brief Increment this whenever the MythTV network protocol changes.
*
Expand Down
24 changes: 21 additions & 3 deletions mythtv/libs/libmythmetadata/videometadatalistmanager.cpp
Expand Up @@ -106,17 +106,35 @@ VideoMetadataListManager::~VideoMetadataListManager()
delete m_imp;
}

void VideoMetadataListManager::loadAllFromDatabase(metadata_list &items)
VideoMetadataListManager::VideoMetadataPtr
VideoMetadataListManager::loadOneFromDatabase(uint id)
{
QString sql = QString("WHERE intid = %1 LIMIT 1").arg(id);
metadata_list item;
loadAllFromDatabase(item, sql);
if (item.size() > 0)
{
return item.front();
}

return VideoMetadataPtr(new VideoMetadata());
}

void VideoMetadataListManager::loadAllFromDatabase(metadata_list &items,
const QString &sql)
{
MSqlQuery query(MSqlQuery::InitCon());
query.setForwardOnly(true);
const QString BaseMetadataQuery(
QString BaseMetadataQuery(
"SELECT title, director, studio, plot, rating, year, releasedate,"
"userrating, length, filename, hash, showlevel, "
"coverfile, inetref, homepage, childid, browse, watched, "
"playcommand, category, intid, trailer, screenshot, banner, fanart, "
"subtitle, tagline, season, episode, host, insertdate, processed "
" FROM videometadata");
" FROM videometadata ");

if (!sql.isEmpty())
BaseMetadataQuery.append(sql);

query.prepare(BaseMetadataQuery);

Expand Down
4 changes: 3 additions & 1 deletion mythtv/libs/libmythmetadata/videometadatalistmanager.h
Expand Up @@ -14,7 +14,9 @@ class META_PUBLIC VideoMetadataListManager
typedef std::list<VideoMetadataPtr> metadata_list;

public:
static void loadAllFromDatabase(metadata_list &items);
static VideoMetadataPtr loadOneFromDatabase(uint id);
static void loadAllFromDatabase(metadata_list &items,
const QString &sql = "");

public:
VideoMetadataListManager();
Expand Down
13 changes: 6 additions & 7 deletions mythtv/programs/mythbackend/services/video.cpp
Expand Up @@ -136,19 +136,18 @@ DTC::VideoMetadataInfoList* Video::GetVideoList( bool bDescending,

DTC::VideoMetadataInfo* Video::GetVideo( int Id )
{
VideoMetadataListManager::metadata_list videolist;
VideoMetadataListManager::loadAllFromDatabase(videolist);
VideoMetadataListManager *mlm = new VideoMetadataListManager();
mlm->setList(videolist);
VideoMetadataListManager::VideoMetadataPtr metadata = mlm->byID(Id);
// VideoMetadataListManager::metadata_list videolist;
VideoMetadataListManager::VideoMetadataPtr metadata =
VideoMetadataListManager::loadOneFromDatabase(Id);
// VideoMetadataListManager *mlm = new VideoMetadataListManager();
// mlm->setList(videolist);
// VideoMetadataListManager::VideoMetadataPtr metadata = mlm->byID(Id);

if ( !metadata )
throw( QString( "No metadata found for selected ID!." ));

DTC::VideoMetadataInfo *pVideoMetadataInfo = GetInfoFromMetadata(metadata);

delete mlm;

return pVideoMetadataInfo;
}

Expand Down

0 comments on commit af40167

Please sign in to comment.