1
0
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:
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(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

View File

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

View File

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

View File

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

View File

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

View File

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

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

View File

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