mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-07-31 03:10:12 +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(3).toString(), //creator
|
||||
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(4).toInt(), //lastmod
|
||||
query.value(0).toString() //GUID
|
||||
|
@@ -21,21 +21,23 @@ DatabaseCommand_LoadDynamicPlaylist::exec( DatabaseImpl* dbi )
|
||||
// now load the controls etc
|
||||
|
||||
TomahawkSqlQuery controlsQuery = dbi->newquery();
|
||||
controlsQuery.prepare("SELECT controls, plmode, pltype "
|
||||
"FROM dynamic_playlist_revision "
|
||||
"WHERE guid = ?");
|
||||
controlsQuery.addBindValue( guid() );
|
||||
controlsQuery.prepare("SELECT playlist_revision.playlist, controls, plmode, pltype "
|
||||
"FROM dynamic_playlist_revision, playlist_revision "
|
||||
"WHERE dynamic_playlist_revision.guid = ? AND playlist_revision.guid = dynamic_playlist_revision.guid");
|
||||
controlsQuery.addBindValue( revisionGuid() );
|
||||
controlsQuery.exec();
|
||||
|
||||
QList< dyncontrol_ptr > controls;
|
||||
QString playlist_guid;
|
||||
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 )
|
||||
{
|
||||
TomahawkSqlQuery controlQuery = dbi->newquery();
|
||||
controlQuery.prepare( "SELECT selectedType, match, input"
|
||||
"FROM dynamic_playlist_controls"
|
||||
controlQuery.prepare( "SELECT selectedType, match, input "
|
||||
"FROM dynamic_playlist_controls "
|
||||
"WHERE id = :id" );
|
||||
controlQuery.bindValue( ":id", controlId );
|
||||
controlQuery.exec();
|
||||
@@ -51,14 +53,22 @@ DatabaseCommand_LoadDynamicPlaylist::exec( DatabaseImpl* dbi )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
QString type = controlsQuery.value( 2 ).toString();
|
||||
GeneratorMode mode = static_cast<GeneratorMode>( controlsQuery.value( 1 ).toInt() );
|
||||
TomahawkSqlQuery info = dbi->newquery();
|
||||
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 ) );
|
||||
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 ) {
|
||||
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 {
|
||||
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:
|
||||
explicit DatabaseCommand_LoadDynamicPlaylist( QString revision_guid, QObject* parent = 0 )
|
||||
: DatabaseCommand_LoadPlaylistEntries( revision_guid, parent )
|
||||
{}
|
||||
{ qDebug() << "loaded with:" << revision_guid << guid(); }
|
||||
|
||||
|
||||
virtual void exec( DatabaseImpl* );
|
||||
|
@@ -10,10 +10,10 @@ using namespace Tomahawk;
|
||||
void
|
||||
DatabaseCommand_LoadPlaylistEntries::exec( DatabaseImpl* dbi )
|
||||
{
|
||||
qDebug() << "Loading playlist entries for revision" << m_guid;
|
||||
qDebug() << "Loading playlist entries for revision" << m_revguid;
|
||||
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 )
|
||||
@@ -22,7 +22,7 @@ void DatabaseCommand_LoadPlaylistEntries::generateEntries( DatabaseImpl* dbi )
|
||||
query_entries.prepare("SELECT entries, playlist, author, timestamp, previous_revision "
|
||||
"FROM playlist_revision "
|
||||
"WHERE guid = :guid");
|
||||
query_entries.bindValue( ":guid", m_guid );
|
||||
query_entries.bindValue( ":guid", m_revguid );
|
||||
query_entries.exec();
|
||||
|
||||
QString prevrev;
|
||||
@@ -81,7 +81,7 @@ void DatabaseCommand_LoadPlaylistEntries::generateEntries( DatabaseImpl* dbi )
|
||||
"(SELECT currentrevision = ? FROM playlist WHERE guid = ?) "
|
||||
"FROM playlist_revision "
|
||||
"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( prevrev );
|
||||
|
||||
|
@@ -13,13 +13,14 @@ Q_OBJECT
|
||||
|
||||
public:
|
||||
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 bool doesMutates() const { return false; }
|
||||
virtual QString commandname() const { return "loadplaylistentries"; }
|
||||
|
||||
QString revisionGuid() const { return m_revguid; }
|
||||
signals:
|
||||
void done( const QString& rev,
|
||||
const QList<QString>& orderedguid,
|
||||
@@ -37,7 +38,7 @@ protected:
|
||||
QStringList m_oldentries;
|
||||
|
||||
private:
|
||||
QString m_guid;
|
||||
QString m_revguid;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@@ -65,7 +65,10 @@ CREATE TABLE IF NOT EXISTS playlist (
|
||||
);
|
||||
|
||||
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 (
|
||||
guid TEXT PRIMARY KEY,
|
||||
@@ -99,7 +102,9 @@ CREATE TABLE IF NOT EXISTS playlist_revision (
|
||||
);
|
||||
|
||||
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 (
|
||||
guid TEXT PRIMARY KEY,
|
||||
@@ -110,7 +115,7 @@ CREATE TABLE IF NOT EXISTS dynamic_playlist (
|
||||
INSERT INTO dynamic_playlist(guid, pltype, plmode)
|
||||
VALUES('dynamic_playlist-guid-1', 'echonest', 0);
|
||||
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
|
||||
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)
|
||||
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
|
||||
|
||||
|
@@ -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 =
|
||||
@@ -53,7 +53,9 @@ static const char * tomahawk_schema_sql =
|
||||
" dynplaylist BOOLEAN DEFAULT false"
|
||||
");"
|
||||
"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 ("
|
||||
" guid TEXT PRIMARY KEY,"
|
||||
" 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"
|
||||
");"
|
||||
"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 ("
|
||||
" guid TEXT PRIMARY KEY,"
|
||||
" pltype TEXT, "
|
||||
@@ -85,7 +89,7 @@ static const char * tomahawk_schema_sql =
|
||||
"INSERT INTO dynamic_playlist(guid, pltype, plmode)"
|
||||
" VALUES('dynamic_playlist-guid-1', 'echonest', 0);"
|
||||
"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 ("
|
||||
" id TEXT PRIMARY KEY,"
|
||||
" 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)"
|
||||
" 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 ("
|
||||
" ngram TEXT NOT NULL,"
|
||||
" 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
|
||||
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 );
|
||||
|
||||
|
Reference in New Issue
Block a user