diff --git a/include/IMediaLibrary.h b/include/IMediaLibrary.h index 06fc6119d784a85a3485ca0adaf6f12cfc8aa6f5..a0630986c6f34bf1db5adf3213ae268654fd11c0 100644 --- a/include/IMediaLibrary.h +++ b/include/IMediaLibrary.h @@ -60,6 +60,8 @@ class IMediaLibrary virtual bool deleteLabel( const std::string& label ) = 0; virtual bool deleteLabel( LabelPtr label ) = 0; virtual std::vector files() = 0; + virtual std::vector audioFiles() = 0; + virtual std::vector videoFiles() = 0; virtual AlbumPtr album( const std::string& title ) = 0; virtual AlbumPtr createAlbum( const std::string& title ) = 0; virtual ShowPtr show( const std::string& name ) = 0; diff --git a/src/MediaLibrary.cpp b/src/MediaLibrary.cpp index 365ce2edb9a4ff58287bdbe25268b3534de48f91..008c30a9337904de3249c6d919cfe96d3ecea798 100644 --- a/src/MediaLibrary.cpp +++ b/src/MediaLibrary.cpp @@ -123,6 +123,21 @@ std::vector MediaLibrary::files() return File::fetchAll( m_dbConnection ); } +std::vector MediaLibrary::audioFiles() +{ + static const std::string req = "SELECT * FROM " + policy::FileTable::Name + " WHERE type = ?"; + //FIXME: Replace this with template magic in sqlite's traits + using type_t = std::underlying_type::type; + return sqlite::Tools::fetchAll( m_dbConnection, req, static_cast( IFile::Type::AudioType ) ); +} + +std::vector MediaLibrary::videoFiles() +{ + static const std::string req = "SELECT * FROM " + policy::FileTable::Name + " WHERE type = ?"; + using type_t = std::underlying_type::type; + return sqlite::Tools::fetchAll( m_dbConnection, req, static_cast( IFile::Type::VideoType ) ); +} + FilePtr MediaLibrary::file( const std::string& path ) { return File::fetch( m_dbConnection, path ); diff --git a/src/MediaLibrary.h b/src/MediaLibrary.h index 4a70c20d411f7eaf6f9f163068075e294ea8ec2a..25c1e4f76bd086ae873aaf4358e5767e372343ec 100644 --- a/src/MediaLibrary.h +++ b/src/MediaLibrary.h @@ -18,6 +18,8 @@ class MediaLibrary : public IMediaLibrary, public IDiscovererCb virtual void setFsFactory( std::shared_ptr fsFactory ) override; virtual std::vector files() override; + virtual std::vector audioFiles() override; + virtual std::vector videoFiles() override; virtual FilePtr file( const std::string& path ) override; virtual FilePtr addFile( const std::string& path ) override; virtual bool deleteFile( const std::string& mrl ) override;