wip: remove unneeded TableModel creation

This commit is contained in:
Hamed Masafi 2019-06-05 00:45:30 +04:30
parent 8f8b588e1b
commit ae1ee06f85
9 changed files with 39 additions and 21 deletions

2
3rdparty/serializer vendored

@ -1 +1 @@
Subproject commit e2d8a726ef1396c47bf35347ea8b55ca47c6af3b Subproject commit b3c550c5bb7c570b1b10492fcedf287c1915af39

View File

@ -1 +1 @@
QT -= gui #QT -= gui

View File

@ -625,6 +625,12 @@ void Database::add(TableSetBase *t)
int Database::saveChanges(bool cleanUp) int Database::saveChanges(bool cleanUp)
{ {
Q_D(Database); Q_D(Database);
if (!d->db.isOpen()) {
qWarning("Database is not open");
return 0;
}
int rowsAffected = 0; int rowsAffected = 0;
foreach (TableSetBase *ts, d->tableSets) foreach (TableSetBase *ts, d->tableSets)
rowsAffected += ts->save(this, cleanUp); rowsAffected += ts->save(this, cleanUp);

View File

@ -152,6 +152,7 @@ QString SqlGeneratorBase::fieldDeclare(FieldModel *field)
QStringList SqlGeneratorBase::constraints(TableModel *table) QStringList SqlGeneratorBase::constraints(TableModel *table)
{ {
Q_UNUSED(table);
return QStringList(); return QStringList();
} }

View File

@ -45,7 +45,7 @@ Table::Table(QObject *parent) : QObject(parent),
{ {
Q_D(Table); Q_D(Table);
d->status = NewCreated; d->status = NewCreated;
d->model = TableModel::findByClassName(metaObject()->className()); // d->model = TableModel::findByClassName(metaObject()->className());
} }
Table::~Table() Table::~Table()
@ -86,15 +86,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)

View File

@ -300,6 +300,7 @@ TableModel::TableModel(const QJsonObject &json, const QString &tableName) : _typ
QJsonObject relations = json.value(__FOREIGN_KEYS).toObject(); QJsonObject relations = json.value(__FOREIGN_KEYS).toObject();
foreach (QString key, fields.keys()) { foreach (QString key, fields.keys()) {
QJsonObject fieldObject = fields.value(key).toObject(); QJsonObject fieldObject = fields.value(key).toObject();
//TODO: use FieldModel(QJsonObject) ctor
auto *f = new FieldModel; auto *f = new FieldModel;
f->name = fieldObject.value(__NAME).toString(); f->name = fieldObject.value(__NAME).toString();
f->type = static_cast<QMetaType::Type>(QMetaType::type(fieldObject.value(__TYPE).toString().toLatin1().data())); f->type = static_cast<QMetaType::Type>(QMetaType::type(fieldObject.value(__TYPE).toString().toLatin1().data()));

View File

@ -1,6 +1,8 @@
#ifndef CONSTS_H #ifndef CONSTS_H
#define CONSTS_H #define CONSTS_H
#include <qsystemdetection.h>
#define REGISTER(x) qDebug() << (#x) << "type id:" << qMetaTypeId<x*>() #define REGISTER(x) qDebug() << (#x) << "type id:" << qMetaTypeId<x*>()
#define PRINT(x) qDebug() << (#x "=") << (x); #define PRINT(x) qDebug() << (#x "=") << (x);
#define TIC() QElapsedTimer timer; timer.start() #define TIC() QElapsedTimer timer; timer.start()
@ -11,8 +13,8 @@
#define DRIVER "QPSQL" #define DRIVER "QPSQL"
#define DATABASE QString("nut_test_%1_db").arg(metaObject()->className()).toLower() #define DATABASE QString("nut_test_%1_db").arg(metaObject()->className()).toLower()
#define HOST "127.0.0.1" #define HOST "127.0.0.1"
#define USERNAME "postgres" #define USERNAME "nut"
#define PASSWORD "" #define PASSWORD "856856"
#ifdef Q_OS_LINUX #ifdef Q_OS_LINUX
# define OS "Linux" # define OS "Linux"

View File

@ -1,10 +1,10 @@
win32 { #win32 {
CONFIG(debug,debug|release): LIBDIR = $$absolute_path($$OUT_PWD/../../src/debug) # CONFIG(debug,debug|release): LIBDIR = $$absolute_path($$OUT_PWD/../../src/debug)
CONFIG(release,debug|release): LIBDIR = $$absolute_path($$OUT_PWD/../../src/release) # CONFIG(release,debug|release): LIBDIR = $$absolute_path($$OUT_PWD/../../src/release)
} else { #} else {
LIBDIR = $$absolute_path($$OUT_PWD/../../src) # LIBDIR = $$absolute_path($$OUT_PWD/../../src)
} #}
LIBS += -L$$LIBDIR -lnut
#LIBS += -L$$LIBDIR -lnut
include(../../src/src.pri)
INCLUDEPATH += $$PWD/../../src $$PWD/../common INCLUDEPATH += $$PWD/../../src $$PWD/../common

View File

@ -38,7 +38,15 @@ void TestJson::store()
DB db; DB db;
initDb(db); initDb(db);
QTEST_ASSERT(db.open()); db.open();
Table *t = new Table;
QJsonDocument doc = QJsonDocument::fromJson("{a: 4, b:3.14}");
t->setDoc(doc);
db.sampleTable()->append(t);
db.saveChanges(true);
// QTEST_ASSERT(db.open());
} }
QTEST_APPLESS_MAIN(TestJson) QTEST_APPLESS_MAIN(TestJson)