From 370d5234e002a213cb913f789e4575c552aaba20 Mon Sep 17 00:00:00 2001 From: Hamed Masafi Date: Thu, 6 Jun 2019 18:38:11 +0430 Subject: [PATCH] merbe back --- src/generators/postgresqlgenerator.cpp | 4 ++++ src/generators/sqlgeneratorbase.cpp | 15 +++++++++------ test/common/consts.h | 2 +- test/tst_json/tst_json.cpp | 12 ++++++++++-- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/generators/postgresqlgenerator.cpp b/src/generators/postgresqlgenerator.cpp index 1a0ce9e..9f481c4 100644 --- a/src/generators/postgresqlgenerator.cpp +++ b/src/generators/postgresqlgenerator.cpp @@ -25,6 +25,7 @@ #include #endif #include +#include #include "postgresqlgenerator.h" #include "../table.h" @@ -220,6 +221,9 @@ QString PostgreSqlGenerator::escapeValue(const QVariant &v) const QPointF pt = v.toPointF(); return QString("'(%1, %2)'").arg(pt.x()).arg(pt.y()); } + if (v.userType() == QMetaType::QJsonDocument) { + return "'" + QString(v.toJsonDocument().toJson()) + "'"; + } #ifdef QT_GUI_LIB if (v.type() == QVariant::Polygon) { diff --git a/src/generators/sqlgeneratorbase.cpp b/src/generators/sqlgeneratorbase.cpp index 5ebe9f9..52ff9df 100644 --- a/src/generators/sqlgeneratorbase.cpp +++ b/src/generators/sqlgeneratorbase.cpp @@ -468,7 +468,8 @@ QString SqlGeneratorBase::insertRecord(Table *t, QString tableName) QString SqlGeneratorBase::updateRecord(Table *t, QString tableName) { QString sql = QString(); - QString key = t->primaryKey(); + auto model = _database->model().tableByName(tableName); + QString key = model->primaryKey(); QStringList values; foreach (QString f, t->changedProperties()) @@ -477,7 +478,7 @@ QString SqlGeneratorBase::updateRecord(Table *t, QString tableName) + "'"); sql = QString("UPDATE %1 SET %2 WHERE %3=%4") .arg(tableName, values.join(", "), - key, t->primaryValue().toString()); + key, t->property(key.toUtf8().data()).toString()); removeTableNames(sql); @@ -486,8 +487,10 @@ QString SqlGeneratorBase::updateRecord(Table *t, QString tableName) QString SqlGeneratorBase::deleteRecord(Table *t, QString tableName) { + auto model = _database->model().tableByName(tableName); + QString key = model->primaryKey(); QString sql = QString("DELETE FROM %1 WHERE %2='%3'") - .arg(tableName, t->primaryKey(), t->primaryValue().toString()); + .arg(tableName, key, t->property(key.toUtf8().data()).toString()); replaceTableNames(sql); return sql; } @@ -595,9 +598,9 @@ QString SqlGeneratorBase::selectCommand(const QString &tableName, if (orderText != "") sql.append(" ORDER BY " + orderText); - for (int i = 0; i < _database->model().count(); i++) - sql = sql.replace(_database->model().at(i)->className() + ".", - _database->model().at(i)->name() + "."); +// for (int i = 0; i < _database->model().count(); i++) +// sql = sql.replace(_database->model().at(i)->className() + ".", +// _database->model().at(i)->name() + "."); appendSkipTake(sql, skip, take); replaceTableNames(sql); diff --git a/test/common/consts.h b/test/common/consts.h index 901bd2a..9fbd0f8 100644 --- a/test/common/consts.h +++ b/test/common/consts.h @@ -13,7 +13,7 @@ #define DRIVER "QPSQL" #define DATABASE QString("nut_test_%1_db").arg(metaObject()->className()).toLower() #define HOST "127.0.0.1" -#define USERNAME "nut" +#define USERNAME "postgres" #define PASSWORD "856856" #ifdef Q_OS_LINUX diff --git a/test/tst_json/tst_json.cpp b/test/tst_json/tst_json.cpp index 3ae5b61..6d3e02e 100644 --- a/test/tst_json/tst_json.cpp +++ b/test/tst_json/tst_json.cpp @@ -41,12 +41,20 @@ void TestJson::store() db.open(); Table *t = new Table; - QJsonDocument doc = QJsonDocument::fromJson("{a: 4, b:3.14}"); + QJsonParseError e; + QJsonDocument doc = QJsonDocument::fromJson(R"({"a": 4, "b":3.14})", &e); + qDebug() << e.errorString(); t->setDoc(doc); db.sampleTable()->append(t); db.saveChanges(true); -// QTEST_ASSERT(db.open()); + int id = t->id(); + auto newObj = db.sampleTable()->query() + ->where(Table::idField() == id) + ->first(); + + Q_ASSERT(newObj != nullptr); + Q_ASSERT(newObj->doc() == t->doc()); } QTEST_APPLESS_MAIN(TestJson)