From 6417d78634cc3cc8b807d07500b8e0892394ab2b Mon Sep 17 00:00:00 2001 From: Hamed Masafi Date: Mon, 8 Jan 2018 18:24:06 +0330 Subject: [PATCH] create constructor with accepting QSqlDatabase --- nut.pro | 42 +++++++++++++++++++++++++++++++++++++++++- src/database.cpp | 26 ++++++++++++++++++++------ src/database.h | 1 + src/database_p.h | 8 +------- 4 files changed, 63 insertions(+), 14 deletions(-) diff --git a/nut.pro b/nut.pro index 2bfebcc..9603a19 100644 --- a/nut.pro +++ b/nut.pro @@ -6,4 +6,44 @@ TEMPLATE = lib DEFINES += QT_DEPRECATED_WARNINGS -include(nut.pri) +HEADERS += \ + $$PWD/src/generators/sqlgeneratorbase_p.h \ + $$PWD/src/generators/postgresqlgenerator.h \ + $$PWD/src/generators/mysqlgenerator.h \ + $$PWD/src/generators/sqlitegenerator.h \ + $$PWD/src/generators/sqlservergenerator.h \ + $$PWD/src/types/dbgeography.h \ + $$PWD/src/tableset.h \ + $$PWD/src/defines_p.h \ + $$PWD/src/defines.h \ + $$PWD/src/query.h \ + $$PWD/src/databasemodel.h \ + $$PWD/src/changelogtable.h \ + $$PWD/src/tablesetbase_p.h \ + $$PWD/src/querybase_p.h \ + $$PWD/src/tablemodel.h \ + $$PWD/src/wherephrase.h \ + $$PWD/src/query_p.h \ + $$PWD/src/table.h \ + $$PWD/src/database.h \ + $$PWD/src/database_p.h \ + $$PWD/src/serializableobject.h + +SOURCES += \ + $$PWD/src/generators/sqlgeneratorbase.cpp \ + $$PWD/src/generators/postgresqlgenerator.cpp \ + $$PWD/src/generators/mysqlgenerator.cpp \ + $$PWD/src/generators/sqlitegenerator.cpp \ + $$PWD/src/generators/sqlservergenerator.cpp \ + $$PWD/src/types/dbgeography.cpp \ + $$PWD/src/tableset.cpp \ + $$PWD/src/query.cpp \ + $$PWD/src/databasemodel.cpp \ + $$PWD/src/tablesetbase.cpp \ + $$PWD/src/changelogtable.cpp \ + $$PWD/src/querybase.cpp \ + $$PWD/src/tablemodel.cpp \ + $$PWD/src/wherephrase.cpp \ + $$PWD/src/table.cpp \ + $$PWD/src/database.cpp \ + $$PWD/src/serializableobject.cpp diff --git a/src/database.cpp b/src/database.cpp index c2e1149..b267ef5 100644 --- a/src/database.cpp +++ b/src/database.cpp @@ -50,7 +50,7 @@ NUT_BEGIN_NAMESPACE qulonglong DatabasePrivate::lastId = 0; QMap DatabasePrivate::allTableMaps; -DatabasePrivate::DatabasePrivate(Database *parent) : q_ptr(parent) +DatabasePrivate::DatabasePrivate(Database *parent) : q_ptr(parent), isDatabaseNew(false) { } @@ -63,6 +63,7 @@ bool DatabasePrivate::open(bool update) db = QSqlDatabase::addDatabase(driver, connectionName); db.setHostName(hostName); + db.setPort(port); db.setDatabaseName(databaseName); db.setUserName(userName); db.setPassword(password); @@ -92,7 +93,7 @@ bool DatabasePrivate::open(bool update) return false; } - _databaseStatus = New; + isDatabaseNew = true; return open(update); } else { qWarning("Unknown error detecting change logs, %s", @@ -115,7 +116,7 @@ bool DatabasePrivate::updateDatabase() if (!getCurrectScheema()) return true; - DatabaseModel last = _databaseStatus == New ? DatabaseModel() : getLastScheema(); + DatabaseModel last = isDatabaseNew ? DatabaseModel() : getLastScheema(); DatabaseModel current = currentModel; if (last == current) { @@ -166,9 +167,9 @@ bool DatabasePrivate::getCurrectScheema() { Q_Q(Database); + //is not first instanicate of this class if (allTableMaps.contains(q->metaObject()->className())) { currentModel = allTableMaps[q->metaObject()->className()]; - qDebug() << "******************"; return false; } @@ -316,13 +317,26 @@ Database::Database(QObject *parent) DatabasePrivate::lastId++; } -Database::Database(const Database &other, QObject *parent) - : QObject(parent), d_ptr(new DatabasePrivate(this)) +Database::Database(const Database &other) + : QObject(other.parent()), d_ptr(new DatabasePrivate(this)) { DatabasePrivate::lastId++; setDriver(other.driver()); setHostName(other.hostName()); + setPort(other.port()); + setDatabaseName(other.databaseName()); + setUserName(other.userName()); + setPassword(other.password()); +} + +Database::Database(const QSqlDatabase &other) +{ + DatabasePrivate::lastId++; + + setDriver(other.driver()); + setHostName(other.hostName()); + setPort(other.port()); setDatabaseName(other.databaseName()); setUserName(other.userName()); setPassword(other.password()); diff --git a/src/database.h b/src/database.h index 8c4ade7..60d5a63 100644 --- a/src/database.h +++ b/src/database.h @@ -43,6 +43,7 @@ class NUT_EXPORT Database : public QObject Q_DECLARE_PRIVATE(Database) public: + //TODO: create constructor with accepting QSqlDatabase Database(QObject *parent = 0); Database(const Database &other, QObject *parent = 0); ~Database(); diff --git a/src/database_p.h b/src/database_p.h index 605864b..17669bc 100644 --- a/src/database_p.h +++ b/src/database_p.h @@ -67,13 +67,7 @@ public: QSet tableSets; - - enum DatabaseStatus{ - New, - Modified, - NotChanged - }; - DatabaseStatus _databaseStatus; + bool isDatabaseNew; }; NUT_END_NAMESPACE