mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-06 06:07:37 +02:00
fix database stuff
This commit is contained in:
@@ -42,7 +42,7 @@ void DatabaseCommand_LoadAllDynamicPlaylists::exec( DatabaseImpl* dbi )
|
|||||||
query.value(2).toString(), //info
|
query.value(2).toString(), //info
|
||||||
query.value(3).toString(), //creator
|
query.value(3).toString(), //creator
|
||||||
query.value(7).toString(), // dynamic type
|
query.value(7).toString(), // dynamic type
|
||||||
static_cast<GeneratorMode>(query.value(7).toInt()), // dynamic mode
|
static_cast<GeneratorMode>(query.value(8).toInt()), // dynamic mode
|
||||||
query.value(5).toBool(), //shared
|
query.value(5).toBool(), //shared
|
||||||
query.value(4).toInt(), //lastmod
|
query.value(4).toInt(), //lastmod
|
||||||
query.value(0).toString() //GUID
|
query.value(0).toString() //GUID
|
||||||
|
@@ -21,16 +21,18 @@ DatabaseCommand_LoadDynamicPlaylist::exec( DatabaseImpl* dbi )
|
|||||||
// now load the controls etc
|
// now load the controls etc
|
||||||
|
|
||||||
TomahawkSqlQuery controlsQuery = dbi->newquery();
|
TomahawkSqlQuery controlsQuery = dbi->newquery();
|
||||||
controlsQuery.prepare("SELECT controls, plmode, pltype "
|
controlsQuery.prepare("SELECT playlist_revision.playlist, controls, plmode, pltype "
|
||||||
"FROM dynamic_playlist_revision "
|
"FROM dynamic_playlist_revision, playlist_revision "
|
||||||
"WHERE guid = ?");
|
"WHERE dynamic_playlist_revision.guid = ? AND playlist_revision.guid = dynamic_playlist_revision.guid");
|
||||||
controlsQuery.addBindValue( guid() );
|
controlsQuery.addBindValue( revisionGuid() );
|
||||||
controlsQuery.exec();
|
controlsQuery.exec();
|
||||||
|
|
||||||
QList< dyncontrol_ptr > controls;
|
QList< dyncontrol_ptr > controls;
|
||||||
|
QString playlist_guid;
|
||||||
if( controlsQuery.next() )
|
if( controlsQuery.next() )
|
||||||
{
|
{
|
||||||
QStringList controlIds = controlsQuery.value( 0 ).toStringList();
|
playlist_guid = controlsQuery.value( 0 ).toString();
|
||||||
|
QStringList controlIds = controlsQuery.value( 1 ).toStringList();
|
||||||
foreach( const QString& controlId, controlIds )
|
foreach( const QString& controlId, controlIds )
|
||||||
{
|
{
|
||||||
TomahawkSqlQuery controlQuery = dbi->newquery();
|
TomahawkSqlQuery controlQuery = dbi->newquery();
|
||||||
@@ -51,14 +53,22 @@ DatabaseCommand_LoadDynamicPlaylist::exec( DatabaseImpl* dbi )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TomahawkSqlQuery info = dbi->newquery();
|
||||||
QString type = controlsQuery.value( 2 ).toString();
|
info.prepare( QString( "SELECT dynamic_playlist.pltype, dynamic_playlist.plmode FROM playlist, dynamic_playlist WHERE playlist.guid = \"%1\" AND playlist.guid = dynamic_playlist.guid" ).arg( playlist_guid ) );
|
||||||
GeneratorMode mode = static_cast<GeneratorMode>( controlsQuery.value( 1 ).toInt() );
|
if( !info.exec() ) {
|
||||||
|
qWarning() << "Failed to load dynplaylist info..";
|
||||||
|
return;
|
||||||
|
} else if( !info.first() ) {
|
||||||
|
qWarning() << "Noo results for queryL:" << info.lastQuery();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QString type = info.value( 0 ).toString();
|
||||||
|
GeneratorMode mode = static_cast<GeneratorMode>( info.value( 1 ).toInt() );
|
||||||
if( mode == OnDemand ) {
|
if( mode == OnDemand ) {
|
||||||
Q_ASSERT( m_entrymap.isEmpty() ); // ondemand should have no entry
|
Q_ASSERT( m_entrymap.isEmpty() ); // ondemand should have no entry
|
||||||
|
|
||||||
emit done( guid(), m_islatest, type, controls, true );
|
emit done( revisionGuid(), m_islatest, type, controls, true );
|
||||||
} else {
|
} else {
|
||||||
emit done( guid(), m_guids, m_oldentries, type, controls, m_islatest, m_entrymap, true );
|
emit done( revisionGuid(), m_guids, m_oldentries, type, controls, m_islatest, m_entrymap, true );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -17,7 +17,7 @@ class DatabaseCommand_LoadDynamicPlaylist : public DatabaseCommand_LoadPlaylistE
|
|||||||
public:
|
public:
|
||||||
explicit DatabaseCommand_LoadDynamicPlaylist( QString revision_guid, QObject* parent = 0 )
|
explicit DatabaseCommand_LoadDynamicPlaylist( QString revision_guid, QObject* parent = 0 )
|
||||||
: DatabaseCommand_LoadPlaylistEntries( revision_guid, parent )
|
: DatabaseCommand_LoadPlaylistEntries( revision_guid, parent )
|
||||||
{}
|
{ qDebug() << "loaded with:" << revision_guid << guid(); }
|
||||||
|
|
||||||
|
|
||||||
virtual void exec( DatabaseImpl* );
|
virtual void exec( DatabaseImpl* );
|
||||||
|
@@ -10,10 +10,10 @@ using namespace Tomahawk;
|
|||||||
void
|
void
|
||||||
DatabaseCommand_LoadPlaylistEntries::exec( DatabaseImpl* dbi )
|
DatabaseCommand_LoadPlaylistEntries::exec( DatabaseImpl* dbi )
|
||||||
{
|
{
|
||||||
qDebug() << "Loading playlist entries for revision" << m_guid;
|
qDebug() << "Loading playlist entries for revision" << m_revguid;
|
||||||
generateEntries( dbi );
|
generateEntries( dbi );
|
||||||
|
|
||||||
emit done( m_guid, m_guids, m_oldentries, m_islatest, m_entrymap, true );
|
emit done( m_revguid, m_guids, m_oldentries, m_islatest, m_entrymap, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
void DatabaseCommand_LoadPlaylistEntries::generateEntries( DatabaseImpl* dbi )
|
void DatabaseCommand_LoadPlaylistEntries::generateEntries( DatabaseImpl* dbi )
|
||||||
@@ -22,7 +22,7 @@ void DatabaseCommand_LoadPlaylistEntries::generateEntries( DatabaseImpl* dbi )
|
|||||||
query_entries.prepare("SELECT entries, playlist, author, timestamp, previous_revision "
|
query_entries.prepare("SELECT entries, playlist, author, timestamp, previous_revision "
|
||||||
"FROM playlist_revision "
|
"FROM playlist_revision "
|
||||||
"WHERE guid = :guid");
|
"WHERE guid = :guid");
|
||||||
query_entries.bindValue( ":guid", m_guid );
|
query_entries.bindValue( ":guid", m_revguid );
|
||||||
query_entries.exec();
|
query_entries.exec();
|
||||||
|
|
||||||
QString prevrev;
|
QString prevrev;
|
||||||
@@ -81,7 +81,7 @@ void DatabaseCommand_LoadPlaylistEntries::generateEntries( DatabaseImpl* dbi )
|
|||||||
"(SELECT currentrevision = ? FROM playlist WHERE guid = ?) "
|
"(SELECT currentrevision = ? FROM playlist WHERE guid = ?) "
|
||||||
"FROM playlist_revision "
|
"FROM playlist_revision "
|
||||||
"WHERE guid = ?" );
|
"WHERE guid = ?" );
|
||||||
query_entries_old.addBindValue( m_guid );
|
query_entries_old.addBindValue( m_revguid );
|
||||||
query_entries_old.addBindValue( query_entries.value( 1 ).toString() );
|
query_entries_old.addBindValue( query_entries.value( 1 ).toString() );
|
||||||
query_entries_old.addBindValue( prevrev );
|
query_entries_old.addBindValue( prevrev );
|
||||||
|
|
||||||
|
@@ -13,13 +13,14 @@ Q_OBJECT
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit DatabaseCommand_LoadPlaylistEntries( QString revision_guid, QObject* parent = 0 )
|
explicit DatabaseCommand_LoadPlaylistEntries( QString revision_guid, QObject* parent = 0 )
|
||||||
: DatabaseCommand( parent ), m_guid( revision_guid )
|
: DatabaseCommand( parent ), m_revguid( revision_guid )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
virtual void exec( DatabaseImpl* );
|
virtual void exec( DatabaseImpl* );
|
||||||
virtual bool doesMutates() const { return false; }
|
virtual bool doesMutates() const { return false; }
|
||||||
virtual QString commandname() const { return "loadplaylistentries"; }
|
virtual QString commandname() const { return "loadplaylistentries"; }
|
||||||
|
|
||||||
|
QString revisionGuid() const { return m_revguid; }
|
||||||
signals:
|
signals:
|
||||||
void done( const QString& rev,
|
void done( const QString& rev,
|
||||||
const QList<QString>& orderedguid,
|
const QList<QString>& orderedguid,
|
||||||
@@ -37,7 +38,7 @@ protected:
|
|||||||
QStringList m_oldentries;
|
QStringList m_oldentries;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString m_guid;
|
QString m_revguid;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -65,7 +65,10 @@ CREATE TABLE IF NOT EXISTS playlist (
|
|||||||
);
|
);
|
||||||
|
|
||||||
INSERT INTO playlist(guid, title, info, currentrevision, dynplaylist)
|
INSERT INTO playlist(guid, title, info, currentrevision, dynplaylist)
|
||||||
VALUES('dynamic_playlist-guid-1','Test Dynamic Playlist','this playlist automatically created and used for testing','revisionguid-1', 1);
|
VALUES('dynamic_playlist-guid-1','Test Dynamic Playlist Dynamic','this playlist automatically created and used for testing','revisionguid-1', 1);
|
||||||
|
|
||||||
|
INSERT INTO playlist(guid, title, info, currentrevision, dynplaylist)
|
||||||
|
VALUES('dynamic_playlist-guid-2','Test Dynamic Playlist Static','this playlist automatically created and used for testing','revisionguid-11', 1);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS playlist_item (
|
CREATE TABLE IF NOT EXISTS playlist_item (
|
||||||
guid TEXT PRIMARY KEY,
|
guid TEXT PRIMARY KEY,
|
||||||
@@ -99,7 +102,9 @@ CREATE TABLE IF NOT EXISTS playlist_revision (
|
|||||||
);
|
);
|
||||||
|
|
||||||
INSERT INTO playlist_revision(guid, playlist, entries)
|
INSERT INTO playlist_revision(guid, playlist, entries)
|
||||||
VALUES('revisionguid-1', 'playlistguid-1', '["itemguid-2","itemguid-1","itemguid-3"]');
|
VALUES('revisionguid-1', 'dynamic_playlist-guid-1', '[]');
|
||||||
|
INSERT INTO playlist_revision(guid, playlist, entries)
|
||||||
|
VALUES('revisionguid-11', 'dynamic_playlist-guid-2', '[]');
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS dynamic_playlist (
|
CREATE TABLE IF NOT EXISTS dynamic_playlist (
|
||||||
guid TEXT PRIMARY KEY,
|
guid TEXT PRIMARY KEY,
|
||||||
@@ -110,7 +115,7 @@ CREATE TABLE IF NOT EXISTS dynamic_playlist (
|
|||||||
INSERT INTO dynamic_playlist(guid, pltype, plmode)
|
INSERT INTO dynamic_playlist(guid, pltype, plmode)
|
||||||
VALUES('dynamic_playlist-guid-1', 'echonest', 0);
|
VALUES('dynamic_playlist-guid-1', 'echonest', 0);
|
||||||
INSERT INTO dynamic_playlist(guid, pltype, plmode)
|
INSERT INTO dynamic_playlist(guid, pltype, plmode)
|
||||||
VALUES('dynamic_playlist-guid-2', 'echonest', 0);
|
VALUES('dynamic_playlist-guid-2', 'echonest', 1);
|
||||||
|
|
||||||
-- list of controls in each playlist. each control saves a selectedType, a match, and an input
|
-- list of controls in each playlist. each control saves a selectedType, a match, and an input
|
||||||
CREATE TABLE IF NOT EXISTS dynamic_playlist_controls (
|
CREATE TABLE IF NOT EXISTS dynamic_playlist_controls (
|
||||||
@@ -134,6 +139,8 @@ CREATE TABLE IF NOT EXISTS dynamic_playlist_revision (
|
|||||||
|
|
||||||
INSERT INTO dynamic_playlist_revision(guid, controls, plmode, pltype)
|
INSERT INTO dynamic_playlist_revision(guid, controls, plmode, pltype)
|
||||||
VALUES('revisionguid-1', '["controlid-1"]', 0, "echonest");
|
VALUES('revisionguid-1', '["controlid-1"]', 0, "echonest");
|
||||||
|
INSERT INTO dynamic_playlist_revision(guid, controls, plmode, pltype)
|
||||||
|
VALUES('revisionguid-11', '["controlid-1"]', 1, "echonest");
|
||||||
|
|
||||||
-- the trigram search indexes
|
-- the trigram search indexes
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
This file was automatically generated from schema.sql on Wed Dec 8 22:37:14 EST 2010.
|
This file was automatically generated from schema.sql on Sun Dec 12 14:07:45 EST 2010.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const char * tomahawk_schema_sql =
|
static const char * tomahawk_schema_sql =
|
||||||
@@ -53,7 +53,9 @@ static const char * tomahawk_schema_sql =
|
|||||||
" dynplaylist BOOLEAN DEFAULT false"
|
" dynplaylist BOOLEAN DEFAULT false"
|
||||||
");"
|
");"
|
||||||
"INSERT INTO playlist(guid, title, info, currentrevision, dynplaylist)"
|
"INSERT INTO playlist(guid, title, info, currentrevision, dynplaylist)"
|
||||||
"VALUES('dynamic_playlist-guid-1','Test Dynamic Playlist','this playlist automatically created and used for testing','revisionguid-1', 1);"
|
"VALUES('dynamic_playlist-guid-1','Test Dynamic Playlist Dynamic','this playlist automatically created and used for testing','revisionguid-1', 1);"
|
||||||
|
"INSERT INTO playlist(guid, title, info, currentrevision, dynplaylist)"
|
||||||
|
"VALUES('dynamic_playlist-guid-2','Test Dynamic Playlist Static','this playlist automatically created and used for testing','revisionguid-11', 1);"
|
||||||
"CREATE TABLE IF NOT EXISTS playlist_item ("
|
"CREATE TABLE IF NOT EXISTS playlist_item ("
|
||||||
" guid TEXT PRIMARY KEY,"
|
" guid TEXT PRIMARY KEY,"
|
||||||
" playlist TEXT NOT NULL REFERENCES playlist(guid) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED,"
|
" playlist TEXT NOT NULL REFERENCES playlist(guid) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED,"
|
||||||
@@ -76,7 +78,9 @@ static const char * tomahawk_schema_sql =
|
|||||||
" previous_revision TEXT REFERENCES playlist_revision(guid) DEFERRABLE INITIALLY DEFERRED"
|
" previous_revision TEXT REFERENCES playlist_revision(guid) DEFERRABLE INITIALLY DEFERRED"
|
||||||
");"
|
");"
|
||||||
"INSERT INTO playlist_revision(guid, playlist, entries)"
|
"INSERT INTO playlist_revision(guid, playlist, entries)"
|
||||||
" VALUES('revisionguid-1', 'playlistguid-1', '[\"itemguid-2\",\"itemguid-1\",\"itemguid-3\"]');"
|
" VALUES('revisionguid-1', 'dynamic_playlist-guid-1', '[]');"
|
||||||
|
"INSERT INTO playlist_revision(guid, playlist, entries)"
|
||||||
|
" VALUES('revisionguid-11', 'dynamic_playlist-guid-2', '[]');"
|
||||||
"CREATE TABLE IF NOT EXISTS dynamic_playlist ("
|
"CREATE TABLE IF NOT EXISTS dynamic_playlist ("
|
||||||
" guid TEXT PRIMARY KEY,"
|
" guid TEXT PRIMARY KEY,"
|
||||||
" pltype TEXT, "
|
" pltype TEXT, "
|
||||||
@@ -85,7 +89,7 @@ static const char * tomahawk_schema_sql =
|
|||||||
"INSERT INTO dynamic_playlist(guid, pltype, plmode)"
|
"INSERT INTO dynamic_playlist(guid, pltype, plmode)"
|
||||||
" VALUES('dynamic_playlist-guid-1', 'echonest', 0);"
|
" VALUES('dynamic_playlist-guid-1', 'echonest', 0);"
|
||||||
"INSERT INTO dynamic_playlist(guid, pltype, plmode)"
|
"INSERT INTO dynamic_playlist(guid, pltype, plmode)"
|
||||||
" VALUES('dynamic_playlist-guid-2', 'echonest', 0);"
|
" VALUES('dynamic_playlist-guid-2', 'echonest', 1);"
|
||||||
"CREATE TABLE IF NOT EXISTS dynamic_playlist_controls ("
|
"CREATE TABLE IF NOT EXISTS dynamic_playlist_controls ("
|
||||||
" id TEXT PRIMARY KEY,"
|
" id TEXT PRIMARY KEY,"
|
||||||
" playlist TEXT NOT NULL REFERENCES playlist(guid) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED,"
|
" playlist TEXT NOT NULL REFERENCES playlist(guid) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED,"
|
||||||
@@ -104,6 +108,8 @@ static const char * tomahawk_schema_sql =
|
|||||||
");"
|
");"
|
||||||
"INSERT INTO dynamic_playlist_revision(guid, controls, plmode, pltype)"
|
"INSERT INTO dynamic_playlist_revision(guid, controls, plmode, pltype)"
|
||||||
" VALUES('revisionguid-1', '[\"controlid-1\"]', 0, \"echonest\");"
|
" VALUES('revisionguid-1', '[\"controlid-1\"]', 0, \"echonest\");"
|
||||||
|
"INSERT INTO dynamic_playlist_revision(guid, controls, plmode, pltype)"
|
||||||
|
" VALUES('revisionguid-11', '[\"controlid-1\"]', 1, \"echonest\");"
|
||||||
"CREATE TABLE IF NOT EXISTS artist_search_index ("
|
"CREATE TABLE IF NOT EXISTS artist_search_index ("
|
||||||
" ngram TEXT NOT NULL,"
|
" ngram TEXT NOT NULL,"
|
||||||
" id INTEGER NOT NULL REFERENCES artist(id) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED,"
|
" id INTEGER NOT NULL REFERENCES artist(id) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED,"
|
||||||
|
@@ -181,7 +181,7 @@ DynamicPlaylist::createNewRevision( const QString& newrev,
|
|||||||
void
|
void
|
||||||
DynamicPlaylist::loadRevision( const QString& rev )
|
DynamicPlaylist::loadRevision( const QString& rev )
|
||||||
{
|
{
|
||||||
qDebug() << Q_FUNC_INFO;
|
qDebug() << Q_FUNC_INFO << "Loading with:" << ( rev.isEmpty() ? currentrevision() : rev );
|
||||||
|
|
||||||
DatabaseCommand_LoadDynamicPlaylist* cmd = new DatabaseCommand_LoadDynamicPlaylist( rev.isEmpty() ? currentrevision() : rev );
|
DatabaseCommand_LoadDynamicPlaylist* cmd = new DatabaseCommand_LoadDynamicPlaylist( rev.isEmpty() ? currentrevision() : rev );
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user