# HG changeset patch # User Tom Fredrik Blenning Klaussen # Date 1382445608 -7200 # Node ID c7da835ea912ac3e42b3fa8ecb86a1331c52104f # Parent 7c935d3d5b74b92dca16afffaa574101a7eb6866 Support for prefix in commit. diff -r 7c935d3d5b74 -r c7da835ea912 DataController.cpp --- a/DataController.cpp Tue Oct 22 14:22:00 2013 +0200 +++ b/DataController.cpp Tue Oct 22 14:40:08 2013 +0200 @@ -126,7 +126,7 @@ last = now; } } - dblink.commit(); + dblink.commit(dir.path()); } diff -r 7c935d3d5b74 -r c7da835ea912 FileDBLink.cpp --- a/FileDBLink.cpp Tue Oct 22 14:22:00 2013 +0200 +++ b/FileDBLink.cpp Tue Oct 22 14:40:08 2013 +0200 @@ -225,7 +225,7 @@ return dbinf_ptr_t(); } -bool FileDBLink::commit() +bool FileDBLink::commit(const QString&) { return true; } diff -r 7c935d3d5b74 -r c7da835ea912 FileDBLink.hpp --- a/FileDBLink.hpp Tue Oct 22 14:22:00 2013 +0200 +++ b/FileDBLink.hpp Tue Oct 22 14:40:08 2013 +0200 @@ -145,7 +145,7 @@ virtual DBStatus existsWithMtime(const QString& path, const QDateTime& mtime) = 0; - virtual bool commit(); + virtual bool commit(const QString& prefix = QString()); virtual const QList values(const QString& prefix = QString() ) const = 0; diff -r 7c935d3d5b74 -r c7da835ea912 SqliteDBLink.cpp --- a/SqliteDBLink.cpp Tue Oct 22 14:22:00 2013 +0200 +++ b/SqliteDBLink.cpp Tue Oct 22 14:40:08 2013 +0200 @@ -294,7 +294,7 @@ checksums.clear(); } -bool SqliteDBLink::commit() +bool SqliteDBLink::commit(const QString& prefix) { OperationType last = None; QVariantList paths, sizes, mtimes, hashes; @@ -321,8 +321,18 @@ } QSqlQuery whatToUpdate(db); - whatToUpdate.prepare("SELECT path FROM files WHERE checksum is NULL AND size in (SELECT size FROM files WHERE size <> 0 GROUP BY size HAVING count(*) > 1 ORDER BY SIZE) ORDER BY size"); - + QString whatToUpdateQuery = "SELECT path FROM files WHERE checksum is NULL AND size in (SELECT size FROM files WHERE size <> 0 GROUP BY size HAVING count(*) > 1 ORDER BY SIZE) %1 ORDER BY size"; + if (prefix.isEmpty()) { + whatToUpdateQuery = whatToUpdateQuery.arg(""); + } + else { + whatToUpdateQuery = whatToUpdateQuery.arg("AND path LIKE :prefix"); + } + whatToUpdate.prepare(whatToUpdateQuery); + if (!prefix.isEmpty()) { + whatToUpdate.bindValue("prefix", QString("%1%").arg(prefix)); + } + if (!whatToUpdate.exec()) { throw SQLException(whatToUpdate); } diff -r 7c935d3d5b74 -r c7da835ea912 SqliteDBLink.hpp --- a/SqliteDBLink.hpp Tue Oct 22 14:22:00 2013 +0200 +++ b/SqliteDBLink.hpp Tue Oct 22 14:40:08 2013 +0200 @@ -28,7 +28,7 @@ virtual void keepOnlyFromPrefix(const QString& prefix, const QStringList& files); virtual void deleteFileFromDB(const QString& path); - bool commit(); + bool commit(const QString& prefix = QString() ); private: typedef enum {None = 0, Add, Update } OperationType;