From 4028471303bbab1ae88e5f5f4016063b9d8efe43 Mon Sep 17 00:00:00 2001 From: Hamed Masafi Date: Thu, 6 Jun 2019 17:30:03 +0430 Subject: [PATCH] remove extra model check --- src/generators/sqlgeneratorbase.cpp | 3 ++- src/table.cpp | 23 +++++++++++++++-------- src/table.h | 6 ++++++ src/table_p.h | 2 ++ src/tablemodel.cpp | 8 ++++++++ src/tablemodel.h | 1 + 6 files changed, 34 insertions(+), 9 deletions(-) diff --git a/src/generators/sqlgeneratorbase.cpp b/src/generators/sqlgeneratorbase.cpp index 22b0757..cccc9d0 100644 --- a/src/generators/sqlgeneratorbase.cpp +++ b/src/generators/sqlgeneratorbase.cpp @@ -439,7 +439,8 @@ QString SqlGeneratorBase::join(const QStringList &list, QStringList *order) QString SqlGeneratorBase::insertRecord(Table *t, QString tableName) { QString sql = QString(); - QString key = t->isPrimaryKeyAutoIncrement() ? t->primaryKey() : QString(); + TableModel *model = _database->model().tableByName(tableName); + QString key = model->isPrimaryKeyAutoIncrement() ? model->primaryKey() : QString(); QStringList values; diff --git a/src/table.cpp b/src/table.cpp index c2c3636..853d949 100644 --- a/src/table.cpp +++ b/src/table.cpp @@ -45,7 +45,6 @@ Table::Table(QObject *parent) : QObject(parent), { Q_D(Table); d->status = NewCreated; - d->model = TableModel::findByClassName(metaObject()->className()); } Table::~Table() @@ -86,15 +85,15 @@ QVariant Table::primaryValue() const void Table::propertyChanged(const QString &propName) { Q_D(Table); - if (!d->model) - d->model = TableModel::findByClassName(metaObject()->className()); +// if (!d->model) +// d->model = TableModel::findByClassName(metaObject()->className()); - if (!d->model) - qFatal ("model for class '%s' not found", qPrintable(metaObject()->className())); +// if (!d->model) +// qFatal ("model for class '%s' not found", qPrintable(metaObject()->className())); - foreach (FieldModel *f, d->model->fields()) - if(f->isPrimaryKey && propName == f->name && f->isAutoIncrement) - return; +// foreach (FieldModel *f, d->model->fields()) +// if(f->isPrimaryKey && propName == f->name && f->isAutoIncrement) +// return; d->changedProperties.insert(propName); if (d->status == FeatchedFromDB) @@ -121,6 +120,7 @@ bool Table::setParentTable(Table *master) Q_D(Table); QString masterClassName = master->metaObject()->className(); + d->refreshModel(); foreach (RelationModel *r, d->model->foregionKeys()) if(r->masterClassName == masterClassName) @@ -194,4 +194,11 @@ TablePrivate::TablePrivate(Table *parent) : q_ptr(parent), } +void TablePrivate::refreshModel() +{ + Q_Q(Table); + if (!model) + model = TableModel::findByClassName(q->metaObject()->className()); +} + NUT_END_NAMESPACE diff --git a/src/table.h b/src/table.h index 4d58fde..5526166 100644 --- a/src/table.h +++ b/src/table.h @@ -55,9 +55,15 @@ public: int save(Database *db); + Q_DECL_DEPRECATED QString primaryKey() const; + + Q_DECL_DEPRECATED bool isPrimaryKeyAutoIncrement() const; + + Q_DECL_DEPRECATED QVariant primaryValue() const; + Status status() const; void setStatus(const Status &status); diff --git a/src/table_p.h b/src/table_p.h index aae0b28..5f40ed3 100644 --- a/src/table_p.h +++ b/src/table_p.h @@ -23,6 +23,8 @@ public: QSet changedProperties; TableSetBase *parentTableSet; QSet childTableSets; + + void refreshModel(); }; NUT_END_NAMESPACE diff --git a/src/tablemodel.cpp b/src/tablemodel.cpp index aa5d416..188ef66 100644 --- a/src/tablemodel.cpp +++ b/src/tablemodel.cpp @@ -410,6 +410,14 @@ QString TableModel::primaryKey() const return QString(); } +bool TableModel::isPrimaryKeyAutoIncrement() const +{ + FieldModel *pk = field(primaryKey()); + if (!pk) + return false; + return pk->isAutoIncrement; +} + FieldModel::FieldModel(const QJsonObject &json) { name = json.value(__NAME).toString(); diff --git a/src/tablemodel.h b/src/tablemodel.h index 5ef28bb..7914ee5 100644 --- a/src/tablemodel.h +++ b/src/tablemodel.h @@ -110,6 +110,7 @@ public: QString toString() const; QString primaryKey() const; + bool isPrimaryKeyAutoIncrement() const; QString name() const; void setName(const QString &name);