remove extra model check

This commit is contained in:
Hamed Masafi 2019-06-06 17:30:03 +04:30
parent d8b99d04bf
commit 4028471303
6 changed files with 34 additions and 9 deletions

View File

@ -439,7 +439,8 @@ QString SqlGeneratorBase::join(const QStringList &list, QStringList *order)
QString SqlGeneratorBase::insertRecord(Table *t, QString tableName) QString SqlGeneratorBase::insertRecord(Table *t, QString tableName)
{ {
QString sql = QString(); 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; QStringList values;

View File

@ -45,7 +45,6 @@ Table::Table(QObject *parent) : QObject(parent),
{ {
Q_D(Table); Q_D(Table);
d->status = NewCreated; d->status = NewCreated;
d->model = TableModel::findByClassName(metaObject()->className());
} }
Table::~Table() Table::~Table()
@ -86,15 +85,15 @@ QVariant Table::primaryValue() const
void Table::propertyChanged(const QString &propName) void Table::propertyChanged(const QString &propName)
{ {
Q_D(Table); Q_D(Table);
if (!d->model) // if (!d->model)
d->model = TableModel::findByClassName(metaObject()->className()); // d->model = TableModel::findByClassName(metaObject()->className());
if (!d->model) // if (!d->model)
qFatal ("model for class '%s' not found", qPrintable(metaObject()->className())); // qFatal ("model for class '%s' not found", qPrintable(metaObject()->className()));
foreach (FieldModel *f, d->model->fields()) // foreach (FieldModel *f, d->model->fields())
if(f->isPrimaryKey && propName == f->name && f->isAutoIncrement) // if(f->isPrimaryKey && propName == f->name && f->isAutoIncrement)
return; // return;
d->changedProperties.insert(propName); d->changedProperties.insert(propName);
if (d->status == FeatchedFromDB) if (d->status == FeatchedFromDB)
@ -121,6 +120,7 @@ bool Table::setParentTable(Table *master)
Q_D(Table); Q_D(Table);
QString masterClassName = master->metaObject()->className(); QString masterClassName = master->metaObject()->className();
d->refreshModel();
foreach (RelationModel *r, d->model->foregionKeys()) foreach (RelationModel *r, d->model->foregionKeys())
if(r->masterClassName == masterClassName) 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 NUT_END_NAMESPACE

View File

@ -55,9 +55,15 @@ public:
int save(Database *db); int save(Database *db);
Q_DECL_DEPRECATED
QString primaryKey() const; QString primaryKey() const;
Q_DECL_DEPRECATED
bool isPrimaryKeyAutoIncrement() const; bool isPrimaryKeyAutoIncrement() const;
Q_DECL_DEPRECATED
QVariant primaryValue() const; QVariant primaryValue() const;
Status status() const; Status status() const;
void setStatus(const Status &status); void setStatus(const Status &status);

View File

@ -23,6 +23,8 @@ public:
QSet<QString> changedProperties; QSet<QString> changedProperties;
TableSetBase *parentTableSet; TableSetBase *parentTableSet;
QSet<TableSetBase*> childTableSets; QSet<TableSetBase*> childTableSets;
void refreshModel();
}; };
NUT_END_NAMESPACE NUT_END_NAMESPACE

View File

@ -410,6 +410,14 @@ QString TableModel::primaryKey() const
return QString(); return QString();
} }
bool TableModel::isPrimaryKeyAutoIncrement() const
{
FieldModel *pk = field(primaryKey());
if (!pk)
return false;
return pk->isAutoIncrement;
}
FieldModel::FieldModel(const QJsonObject &json) FieldModel::FieldModel(const QJsonObject &json)
{ {
name = json.value(__NAME).toString(); name = json.value(__NAME).toString();

View File

@ -110,6 +110,7 @@ public:
QString toString() const; QString toString() const;
QString primaryKey() const; QString primaryKey() const;
bool isPrimaryKeyAutoIncrement() const;
QString name() const; QString name() const;
void setName(const QString &name); void setName(const QString &name);