1
0
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:
Leo Franchi
2010-12-12 14:08:25 -05:00
parent a1a01784ee
commit c345ee6e35
8 changed files with 52 additions and 28 deletions

View File

@@ -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

View File

@@ -21,21 +21,23 @@ 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();
controlQuery.prepare( "SELECT selectedType, match, input" controlQuery.prepare( "SELECT selectedType, match, input "
"FROM dynamic_playlist_controls" "FROM dynamic_playlist_controls "
"WHERE id = :id" ); "WHERE id = :id" );
controlQuery.bindValue( ":id", controlId ); controlQuery.bindValue( ":id", controlId );
controlQuery.exec(); controlQuery.exec();
@@ -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 );
} }
} }

View File

@@ -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* );

View File

@@ -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 );

View File

@@ -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

View File

@@ -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

View File

@@ -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,"

View File

@@ -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 );