diff --git a/cli/commandadd.cpp b/cli/commandadd.cpp index 22ebb38..bf635c8 100644 --- a/cli/commandadd.cpp +++ b/cli/commandadd.cpp @@ -57,9 +57,11 @@ int CommandAdd::handle(QStringList arguments) } FileSaver saver(*this->dbService); - if(!saver.addFiles(files.toVector(), keepGoing, verbose)) + int numFilesCount = files.size(); + int processedFilesCount = saver.addFiles(files.toVector(), keepGoing, verbose); + if(processedFilesCount != numFilesCount ) { - Logger::error() << "Errors occured while trying to add files to the database" << endl; + Logger::error() << "Errors occured while trying to add files to the database. Processed " << processedFilesCount << "out of" << numFilesCount << "files" << endl; return 1; } diff --git a/cli/commandupdate.cpp b/cli/commandupdate.cpp index db2466b..b4386a0 100644 --- a/cli/commandupdate.cpp +++ b/cli/commandupdate.cpp @@ -97,11 +97,13 @@ int CommandUpdate::handle(QStringList arguments) } - if(!saver.updateFiles(filePathsToUpdate, keepGoing, verbose)) + int updatedFilesCount = saver.updateFiles(filePathsToUpdate, keepGoing, verbose); + int shouldHaveUpdatedCount = filePathsToUpdate.size(); + if(updatedFilesCount != shouldHaveUpdatedCount) { if(!keepGoing) { - Logger::error() << "Failed to update all files selected for updating" << endl; + Logger::error() << "Failed to update all files selected for updating. Updated" << updatedFilesCount << "out of" << shouldHaveUpdatedCount << "selected for upating" << endl; return 1; } } diff --git a/cli/filesaver.cpp b/cli/filesaver.cpp index 434dc7e..1a4109d 100644 --- a/cli/filesaver.cpp +++ b/cli/filesaver.cpp @@ -59,20 +59,20 @@ SaveFileResult FileSaver::updateFile(QString path) return saveFile(info); } -bool FileSaver::addFiles(const QVector paths, bool keepGoing, bool verbose) +int FileSaver::addFiles(const QVector paths, bool keepGoing, bool verbose) { return processFiles(paths, std::bind(&FileSaver::addFile, this, std::placeholders::_1), keepGoing, verbose); } -bool FileSaver::updateFiles(const QVector paths, bool keepGoing, bool verbose) +int FileSaver::updateFiles(const QVector paths, bool keepGoing, bool verbose) { return processFiles(paths, std::bind(&FileSaver::updateFile, this, std::placeholders::_1), keepGoing, verbose); } -bool FileSaver::processFiles(const QVector paths, std::function saverFunc, bool keepGoing, bool verbose) +int FileSaver::processFiles(const QVector paths, std::function saverFunc, bool keepGoing, bool verbose) { std::atomic terminate { false }; - std::atomic hasError { false }; + std::atomic errorsCount { 0 }; QtConcurrent::blockingMap(paths, [&](const QString &path) { if(terminate.load()) { @@ -85,12 +85,11 @@ bool FileSaver::processFiles(const QVector paths, std::function paths, std::function paths, std::function saverFunc, bool keepGoing, bool verbose); - bool addFiles(const QVector paths, bool keepGoing, bool verbose); - bool updateFiles(const QVector paths, bool keepGoing, bool verbose); + int processFiles(const QVector paths, std::function saverFunc, bool keepGoing, bool verbose); + int addFiles(const QVector paths, bool keepGoing, bool verbose); + int updateFiles(const QVector paths, bool keepGoing, bool verbose); ; };