From e9d4b2b651e2ee261eb81764e77f9030e1c567a5 Mon Sep 17 00:00:00 2001 From: Daniel Nicoletti Date: Mon, 23 Oct 2023 11:08:24 -0300 Subject: [PATCH] Add missing 0.82 code and use migration file name as fallback to migration name --- CMakeLists.txt | 2 +- src/adriver.cpp | 1 + src/adriverpg.cpp | 5 +++++ src/adriverpg.h | 6 +++++- src/aresult.cpp | 5 +++++ src/aresult.h | 7 +++++++ src/asql_migration.cpp | 21 +++++++++++++-------- 7 files changed, 37 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index eecb0d2..2b9e87b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ # SPDX-License-Identifier: MIT cmake_minimum_required(VERSION 3.16) -project(libasql VERSION 0.81.0 LANGUAGES CXX) +project(libasql VERSION 0.83.0 LANGUAGES CXX) include(GNUInstallDirs) diff --git a/src/adriver.cpp b/src/adriver.cpp index c9146ce..fe501c6 100644 --- a/src/adriver.cpp +++ b/src/adriver.cpp @@ -20,6 +20,7 @@ class AResultInvalid : public AResultPrivate QString errorString() const { return {}; } QByteArray query() const { return {}; } + QVariantList queryArgs() const { return {}; } int size() const final { return 0; } int fields() const final { return 0; } diff --git a/src/adriverpg.cpp b/src/adriverpg.cpp index 395873a..72c1b14 100644 --- a/src/adriverpg.cpp +++ b/src/adriverpg.cpp @@ -826,6 +826,11 @@ QByteArray AResultPg::query() const return m_query; } +QVariantList AResultPg::queryArgs() const +{ + return m_queryArgs; +} + int AResultPg::size() const { return PQntuples(m_result); diff --git a/src/adriverpg.h b/src/adriverpg.h index 74afaf3..a49267f 100644 --- a/src/adriverpg.h +++ b/src/adriverpg.h @@ -32,6 +32,7 @@ class AResultPg final : public AResultPrivate QString errorString() const override; QByteArray query() const override; + QVariantList queryArgs() const override; int size() const override; int fields() const override; @@ -59,6 +60,7 @@ class AResultPg final : public AResultPrivate inline void processResult(); QByteArray m_query; + QVariantList m_queryArgs; QString m_errorString; PGresult *m_result = nullptr; bool m_error = false; @@ -82,7 +84,8 @@ class APGQuery inline void done() { if (cb && (!checkReceiver || !receiver.isNull())) { - result->m_query = query; + result->m_query = query; + result->m_queryArgs = params; AResult r(std::move(result)); cb(r); } @@ -93,6 +96,7 @@ class APGQuery if (cb && (!checkReceiver || !receiver.isNull())) { result = std::make_shared(nullptr); result->m_query = query; + result->m_queryArgs = params; result->m_errorString = error; result->m_error = true; AResult r(std::move(result)); diff --git a/src/aresult.cpp b/src/aresult.cpp index bd6b6f5..26ef6f0 100644 --- a/src/aresult.cpp +++ b/src/aresult.cpp @@ -42,6 +42,11 @@ QByteArray AResult::query() const return d->query(); } +QVariantList AResult::queryArgs() const +{ + return d->queryArgs(); +} + int AResult::size() const { return d->size(); diff --git a/src/aresult.h b/src/aresult.h index 7033441..45d3998 100644 --- a/src/aresult.h +++ b/src/aresult.h @@ -21,6 +21,7 @@ class ASQL_EXPORT AResultPrivate virtual QString errorString() const = 0; virtual QByteArray query() const = 0; + virtual QVariantList queryArgs() const = 0; virtual int size() const = 0; virtual int fields() const = 0; @@ -67,6 +68,12 @@ class ASQL_EXPORT AResult */ [[nodiscard]] QByteArray query() const; + /*! + * \brief returns the query arguments sent to the database + * \return + */ + [[nodiscard]] QVariantList queryArgs() const; + [[nodiscard]] int size() const; [[nodiscard]] int fields() const; [[nodiscard]] int numRowsAffected() const; diff --git a/src/asql_migration.cpp b/src/asql_migration.cpp index 72e72d5..2b72403 100644 --- a/src/asql_migration.cpp +++ b/src/asql_migration.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include using namespace ASql; @@ -85,10 +86,14 @@ int main(int argc, char *argv[]) return 3; } - const QString name = parser.value(nameOption); + QString name = parser.value(nameOption); if (name.isEmpty()) { - std::cerr << qPrintable(QCoreApplication::translate("main", "Migration name not set.")) << std::endl; - return 4; + // Use the first filename as the migration name + name = QFileInfo(args.value(0)).baseName(); + if (name.isEmpty()) { + std::cerr << qPrintable(QCoreApplication::translate("main", "Migration name not set.")) << std::endl; + return 4; + } } const QString conn = parser.value(connOption); @@ -124,7 +129,7 @@ int main(int argc, char *argv[]) auto mig = new AMigrations; mig->fromString(sql); - mig->connect(mig, &AMigrations::ready, [targetVersion, mig, confirm, dryRun, showSql](bool error, const QString &errorString) { + mig->connect(mig, &AMigrations::ready, [=](bool error, const QString &errorString) { if (error) { std::cerr << qPrintable(QCoreApplication::translate("main", "Failed to initialize migrations: %1.").arg(errorString)) << std::endl; qApp->exit(7); @@ -146,11 +151,11 @@ int main(int argc, char *argv[]) if (!confirm || newVersion < mig->active()) { if (newVersion < mig->active()) { - std::cout << qPrintable(QCoreApplication::translate("main", "Do you wanto to migrate the database from %1 to %2? [yes/no] ") - .arg(QString::number(mig->active()), QString::number(newVersion))); + std::cout << qPrintable(QCoreApplication::translate("main", "Do you want to migrate '%1' from %2 to %3? [yes/no] ") + .arg(name).arg(QString::number(mig->active())).arg(QString::number(newVersion))); } else { - std::cout << qPrintable(QCoreApplication::translate("main", "Do you wanto to migrate the database from %1 to %2? [y/n] ") - .arg(QString::number(mig->active()), QString::number(newVersion))); + std::cout << qPrintable(QCoreApplication::translate("main", "Do you wanto to migrate '%1' from %2 to %3? [y/n] ") + .arg(name).arg(QString::number(mig->active())).arg(QString::number(newVersion))); } std::string value;