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)
{
Q_D(Database);
if (!d->db.isOpen()) {
qWarning("Database is not open");
return 0;
}
int rowsAffected = 0;
foreach (TableSetBase *ts, d->tableSets)
rowsAffected += ts->save(this, cleanUp);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -38,7 +38,15 @@ void TestJson::store()
DB 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)