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 sql = QString();
QString key = t->isPrimaryKeyAutoIncrement() ? t->primaryKey() : QString();
TableModel *model = _database->model().tableByName(tableName);
QString key = model->isPrimaryKeyAutoIncrement() ? model->primaryKey() : QString();
QStringList values;

View File

@ -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

View File

@ -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);

View File

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

View File

@ -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();

View File

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