diff --git a/.gitignore b/.gitignore index dc2f50a..ce75793 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,5 @@ test/tst_json/tst_upgrades* test/tst_phrases/tst_phrases* test/tst_quuid/tst_uuid* test/tst_upgrades/tst_upgrades* + +.idea diff --git a/src/nut/generators/abstractsqlgenerator.cpp b/src/nut/generators/abstractsqlgenerator.cpp index bc6b806..c3806e6 100644 --- a/src/nut/generators/abstractsqlgenerator.cpp +++ b/src/nut/generators/abstractsqlgenerator.cpp @@ -147,7 +147,7 @@ QString AbstractSqlGenerator::fieldDeclare(FieldModel *field) if (type.isEmpty()) return type; - QString ret = field->name + QStringLiteral(" ") + type; + QString ret = escaleFieldName(field->name) + QStringLiteral(" ") + type; if (field->notNull) ret.append(QStringLiteral(" NOT NULL")); @@ -157,6 +157,11 @@ QString AbstractSqlGenerator::fieldDeclare(FieldModel *field) return ret; } +QString AbstractSqlGenerator::escaleFieldName(const QString &fieldName) const +{ + return fieldName; +} + QStringList AbstractSqlGenerator::constraints(TableModel *table) { Q_UNUSED(table) diff --git a/src/nut/generators/abstractsqlgenerator.h b/src/nut/generators/abstractsqlgenerator.h index fe39608..9340cb6 100644 --- a/src/nut/generators/abstractsqlgenerator.h +++ b/src/nut/generators/abstractsqlgenerator.h @@ -80,6 +80,7 @@ public: //fields virtual QString fieldType(FieldModel *field) = 0; virtual QString fieldDeclare(FieldModel *field); + virtual QString escaleFieldName(const QString &fieldName) const; virtual QStringList constraints(TableModel *table); virtual QString escapeValue(const QVariant &v) const; virtual QVariant unescapeValue(const QMetaType::Type &type, const QVariant &dbValue); diff --git a/src/nut/generators/mysqlgenerator.cpp b/src/nut/generators/mysqlgenerator.cpp index 97b45ad..69987b3 100644 --- a/src/nut/generators/mysqlgenerator.cpp +++ b/src/nut/generators/mysqlgenerator.cpp @@ -356,4 +356,14 @@ void MySqlGenerator::appendSkipTake(QString &sql, int skip, int take) } } +QString MySqlGenerator::primaryKeyConstraint(const TableModel *table) const +{ + return QStringLiteral("PRIMARY KEY (%1)") + .arg(table->primaryKey()); +} + +QString MySqlGenerator::escaleFieldName(const QString &fieldName) const +{ + return "`" + fieldName + "`"; +} NUT_END_NAMESPACE diff --git a/src/nut/generators/mysqlgenerator.h b/src/nut/generators/mysqlgenerator.h index 289069f..a90ed07 100644 --- a/src/nut/generators/mysqlgenerator.h +++ b/src/nut/generators/mysqlgenerator.h @@ -39,6 +39,8 @@ public: // QString selectCommand(AgregateType t, QString agregateArg, QString tableName, QList &wheres, QList &orders, QList joins, int skip, int take); QString createConditionalPhrase(const PhraseData *d) const override; void appendSkipTake(QString &sql, int skip, int take) override; + QString primaryKeyConstraint(const TableModel *table) const override; + QString escaleFieldName(const QString &fieldName) const override; private: bool readInsideParentese(QString &text, QString &out); diff --git a/tests/auto/common/consts.h b/tests/auto/common/consts.h index b861467..7ccd623 100644 --- a/tests/auto/common/consts.h +++ b/tests/auto/common/consts.h @@ -13,12 +13,18 @@ .arg(QString::fromUtf8(__func__)) -#define DRIVER QStringLiteral("QSQLITE") -#define DATABASE QStringLiteral("nut_test_%1_db") \ - .arg(QString::fromUtf8(metaObject()->className())).toLower() +/*#define DRIVER QStringLiteral("QSQLITE") #define HOST QString() #define USERNAME QString() #define PASSWORD QString() +*/ +#define DRIVER QStringLiteral("QMYSQL") +#define HOST QStringLiteral("192.168.10.2") +#define USERNAME QStringLiteral("root") +#define PASSWORD QStringLiteral("lDexDJGvQwx20sfgtsetDSupmn9") + +#define DATABASE QStringLiteral("nut_test_%1_db") \ + .arg(QString::fromUtf8(metaObject()->className())).toLower() #ifdef Q_OS_LINUX # define OS "Linux"