Skip to content

Commit

Permalink
database: put Filter and SortDescription into CDatabase::QueryData fo…
Browse files Browse the repository at this point in the history
…r convenience
  • Loading branch information
Montellese committed Oct 28, 2012
1 parent b847aaf commit b94d6a9
Show file tree
Hide file tree
Showing 7 changed files with 366 additions and 353 deletions.
12 changes: 3 additions & 9 deletions xbmc/dbwrappers/Database.cpp
Expand Up @@ -708,18 +708,12 @@ bool CDatabase::BuildSQL(const CStdString &strQuery, const Filter &filter, CStdS
return true;
}

bool CDatabase::BuildSQL(const CStdString &strBaseDir, const CStdString &strQuery, Filter &filter, CStdString &strSQL, CDbUrl &dbUrl)
{
SortDescription sorting;
return BuildSQL(strBaseDir, strQuery, filter, strSQL, dbUrl, sorting);
}

bool CDatabase::BuildSQL(const CStdString &strBaseDir, const CStdString &strQuery, Filter &filter, CStdString &strSQL, CDbUrl &dbUrl, SortDescription &sorting /* = SortDescription() */)
bool CDatabase::BuildSQL(const CStdString &strBaseDir, const CStdString &strQuery, QueryData &data, CStdString &strSQL, CDbUrl &dbUrl)
{
// parse the base path to get additional filters
dbUrl.Reset();
if (!dbUrl.FromString(strBaseDir) || !GetFilter(dbUrl, filter, sorting))
if (!dbUrl.FromString(strBaseDir) || !GetFilter(dbUrl, data))
return false;

return BuildSQL(strQuery, filter, strSQL);
return BuildSQL(strQuery, data.filter, strSQL);
}
12 changes: 8 additions & 4 deletions xbmc/dbwrappers/Database.h
Expand Up @@ -21,6 +21,7 @@
*/

#include "utils/StdString.h"
#include "utils/SortUtils.h"

namespace dbiplus {
class Database;
Expand All @@ -31,7 +32,6 @@ namespace dbiplus {

class DatabaseSettings; // forward
class CDbUrl;
struct SortDescription;

class CDatabase
{
Expand Down Expand Up @@ -136,9 +136,13 @@ class CDatabase
*/
bool CommitInsertQueries();

virtual bool GetFilter(CDbUrl &dbUrl, Filter &filter, SortDescription &sorting) { return true; }
virtual bool BuildSQL(const CStdString &strBaseDir, const CStdString &strQuery, Filter &filter, CStdString &strSQL, CDbUrl &dbUrl);
virtual bool BuildSQL(const CStdString &strBaseDir, const CStdString &strQuery, Filter &filter, CStdString &strSQL, CDbUrl &dbUrl, SortDescription &sorting);
typedef struct {
Filter filter;
SortDescription sortDescription;
} QueryData;

virtual bool GetFilter(CDbUrl &dbUrl, QueryData &data) { return true; }
virtual bool BuildSQL(const CStdString &strBaseDir, const CStdString &strQuery, QueryData &data, CStdString &strSQL, CDbUrl &dbUrl);

protected:
friend class CDatabaseManager;
Expand Down
5 changes: 3 additions & 2 deletions xbmc/dialogs/GUIDialogMediaFilter.cpp
Expand Up @@ -940,9 +940,10 @@ bool CGUIDialogMediaFilter::GetMinMax(const CStdString &table, const CStdString
return false;
}

CDatabase::Filter extFilter = filter;
CDatabase::QueryData data;
data.filter = filter;
CStdString strSQLExtra;
if (!db->BuildSQL(m_dbUrl->ToString(), strSQLExtra, extFilter, strSQLExtra, *dbUrl))
if (!db->BuildSQL(m_dbUrl->ToString(), strSQLExtra, data, strSQLExtra, *dbUrl))
{
delete db;
delete dbUrl;
Expand Down

0 comments on commit b94d6a9

Please sign in to comment.