From 83f5bc2916d1b68c30845ddafc83a4f5a8752c4d Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Fri, 3 Feb 2017 20:47:45 +0000 Subject: [PATCH] Get folders by path --- QtClient/JoplinQtClient/cliapplication.cpp | 21 +++++++++++--------- QtClient/JoplinQtClient/database.cpp | 6 +++--- QtClient/JoplinQtClient/models/basemodel.cpp | 2 +- QtClient/JoplinQtClient/models/folder.cpp | 13 ++++++++++++ QtClient/JoplinQtClient/models/folder.h | 2 ++ 5 files changed, 31 insertions(+), 13 deletions(-) diff --git a/QtClient/JoplinQtClient/cliapplication.cpp b/QtClient/JoplinQtClient/cliapplication.cpp index 3a906076f..69314afd3 100644 --- a/QtClient/JoplinQtClient/cliapplication.cpp +++ b/QtClient/JoplinQtClient/cliapplication.cpp @@ -132,15 +132,18 @@ int CliApplication::exec() { } if (command == "touch") { - // QString path = args.size() ? args[0] : QString(); - // if (path == "") { - // std::vector> folders = Folder::all(); - // for (size_t i = 0; i < folders.size(); i++) { - // qDebug().noquote() << folders[i].get()->value("title").toString(); - // } - // } else { - // // TODO: Get folder by name - // } + QString path = args.size() ? args[0] : QString(); + if (path == "") { + // std::vector> folders = Folder::all(); + // for (size_t i = 0; i < folders.size(); i++) { + // qDebug().noquote() << folders[i].get()->value("title").toString(); + // } + } else { + std::vector> folders = Folder::pathToFolders(path, true); + for (size_t i = 0; i < folders.size(); i++) { + qDebug() << folders[i]->value("title").toString(); + } + } } qDebug() << "==========================================="; diff --git a/QtClient/JoplinQtClient/database.cpp b/QtClient/JoplinQtClient/database.cpp index 8649731be..e54562132 100755 --- a/QtClient/JoplinQtClient/database.cpp +++ b/QtClient/JoplinQtClient/database.cpp @@ -13,7 +13,7 @@ Database::~Database() { void Database::initialize(const QString &path) { version_ = -1; transactionCount_ = 0; - logQueries_ = !false; + logQueries_ = true; //QFile::remove(path); @@ -137,7 +137,7 @@ bool Database::commit() { bool Database::execQuery(QSqlQuery &query) { if (logQueries_) { QString sql = query.lastQuery(); - if (sql.startsWith("insert", Qt::CaseInsensitive)) { + // if (sql.startsWith("insert", Qt::CaseInsensitive)) { qDebug().noquote() << "SQL:" << sql; QMapIterator i(query.boundValues()); @@ -145,7 +145,7 @@ bool Database::execQuery(QSqlQuery &query) { i.next(); qDebug().noquote() << "SQL:" << i.key() << "=" << i.value().toString(); } - } + // } } return query.exec(); diff --git a/QtClient/JoplinQtClient/models/basemodel.cpp b/QtClient/JoplinQtClient/models/basemodel.cpp index 6ce97b835..42f37019e 100755 --- a/QtClient/JoplinQtClient/models/basemodel.cpp +++ b/QtClient/JoplinQtClient/models/basemodel.cpp @@ -49,7 +49,7 @@ bool BaseModel::load(const QString &id) { bool BaseModel::loadByField(const QString& parentId, const QString& field, const QString& fieldValue) { QSqlQuery q(jop::db().database()); - QString sql = QString("SELECT %1 FROM %2 WHERE %3 = :field_value AND parent_id = :parent_id LIMIT 1") + QString sql = QString("SELECT %1 FROM %2 WHERE `%3` = :field_value AND parent_id = :parent_id LIMIT 1") .arg(BaseModel::tableFieldNames(table()).join(",")) .arg(BaseModel::tableName(table())) .arg(field); diff --git a/QtClient/JoplinQtClient/models/folder.cpp b/QtClient/JoplinQtClient/models/folder.cpp index bbeba7925..f2e418952 100755 --- a/QtClient/JoplinQtClient/models/folder.cpp +++ b/QtClient/JoplinQtClient/models/folder.cpp @@ -49,6 +49,19 @@ std::vector> Folder::notes(const QString &orderBy, int lim return output; } +std::vector> Folder::pathToFolders(const QString& path, bool isNotePath) { + std::vector> output; + QStringList parts = path.split('/'); + QString parentId = ""; + for (int i = 0; i < parts.size(); i++) { + std::unique_ptr folder(new Folder()); + bool ok = folder->loadByField(parentId, "title", parts[i]); + qWarning() << "Folder does not exist" << parts[i]; + output.push_back(std::move(folder)); + } + return output; +} + int Folder::noteIndexById(const QString &orderBy, const QString& id) const { qDebug() << "Folder::noteIndexById" << orderBy << id; diff --git a/QtClient/JoplinQtClient/models/folder.h b/QtClient/JoplinQtClient/models/folder.h index be6883cb6..829212b46 100755 --- a/QtClient/JoplinQtClient/models/folder.h +++ b/QtClient/JoplinQtClient/models/folder.h @@ -15,6 +15,7 @@ public: static int count(); static std::vector> all(const QString& orderBy = "title"); + static std::vector> pathToFolders(const QString& path, bool isNotePath); //Table table() const; bool primaryKeyIsUuid() const; @@ -23,6 +24,7 @@ public: std::vector > notes(const QString& orderBy, int limit, int offset) const; int noteIndexById(const QString& orderBy, const QString &id) const; + }; }