From 76ff49a8bac3262697f01e857e653faa9dc3d2db Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Fri, 30 Sep 2011 16:06:35 -0400 Subject: [PATCH] Proper ID generation --- .../database/databasecommand_deletefiles.cpp | 23 +++++++++++++------ .../database/databasecommand_deletefiles.h | 1 + 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/libtomahawk/database/databasecommand_deletefiles.cpp b/src/libtomahawk/database/databasecommand_deletefiles.cpp index faa5f0120..717459342 100644 --- a/src/libtomahawk/database/databasecommand_deletefiles.cpp +++ b/src/libtomahawk/database/databasecommand_deletefiles.cpp @@ -71,13 +71,13 @@ DatabaseCommand_DeleteFiles::exec( DatabaseImpl* dbi ) qDebug() << "Deleting" << m_dir.path() << "from db for localsource" << srcid; TomahawkSqlQuery dirquery = dbi->newquery(); - dirquery.prepare( QString( "SELECT url FROM file WHERE source IS NULL AND url LIKE ?" ) ); + dirquery.prepare( QString( "SELECT id, url FROM file WHERE source IS NULL AND url LIKE ?" ) ); dirquery.bindValue( 0, "file://" + m_dir.canonicalPath() + "/%" ); dirquery.exec(); while ( dirquery.next() ) { - QFileInfo fi( dirquery.value( 0 ).toString().mid( 7 ) ); // remove file:// + QFileInfo fi( dirquery.value( 1 ).toString().mid( 7 ) ); // remove file:// if ( fi.canonicalPath() != m_dir.canonicalPath() ) { if ( lastPath != fi.canonicalPath() ) @@ -87,15 +87,16 @@ DatabaseCommand_DeleteFiles::exec( DatabaseImpl* dbi ) continue; } - m_files << dirquery.value( 0 ).toString(); + m_files << dirquery.value( 1 ).toString(); m_ids << dirquery.value( 0 ).toUInt(); + m_localUrlMapping[ dirquery.value( 0 ).toString() ] = dirquery.value( 1 ).toString();; } } else if ( !m_ids.isEmpty() ) { TomahawkSqlQuery dirquery = dbi->newquery(); - dirquery.prepare( QString( "SELECT url FROM file WHERE source IS NULL AND id IN ( ? )" ) ); + dirquery.prepare( QString( "SELECT id, url FROM file WHERE source IS NULL AND id IN ( ? )" ) ); QString idstring; foreach( const QVariant& id, m_ids ) @@ -105,7 +106,10 @@ DatabaseCommand_DeleteFiles::exec( DatabaseImpl* dbi ) dirquery.bindValue( 0, idstring ); dirquery.exec(); while ( dirquery.next() ) - m_files << dirquery.value( 0 ).toString(); + { + m_files << dirquery.value( 1 ).toString(); + m_localUrlMapping[ dirquery.value( 0 ).toString() ] = dirquery.value( 1 ).toString();; + } } } else @@ -137,8 +141,13 @@ DatabaseCommand_DeleteFiles::exec( DatabaseImpl* dbi ) QString idstring; foreach( const QVariant& id, m_ids ) - idstring.append( id.toString() + ", " ); - idstring.chop( 2 ); //remove the trailing ", " + { + if ( source()->isLocal() ) + idstring.append( '"' + m_localUrlMapping[ id.toString() ] + "\", " ); + else + idstring.append( '"' + id.toString() + "\", " ); + } + idstring.chop( 3 ); //remove the trailing "\", " delquery.bindValue( 0, idstring ); if( !delquery.exec() ) diff --git a/src/libtomahawk/database/databasecommand_deletefiles.h b/src/libtomahawk/database/databasecommand_deletefiles.h index 2cc43871d..d92919f95 100644 --- a/src/libtomahawk/database/databasecommand_deletefiles.h +++ b/src/libtomahawk/database/databasecommand_deletefiles.h @@ -79,6 +79,7 @@ private: QDir m_dir; QVariantList m_ids; bool m_deleteAll; + QHash< QString, QString > m_localUrlMapping; }; #endif // DATABASECOMMAND_DELETEFILES_H