create constructor with accepting QSqlDatabase

This commit is contained in:
Hamed Masafi 2018-01-08 18:24:06 +03:30
parent 2e9aac5204
commit 6417d78634
4 changed files with 63 additions and 14 deletions

42
nut.pro
View File

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

View File

@ -50,7 +50,7 @@ NUT_BEGIN_NAMESPACE
qulonglong DatabasePrivate::lastId = 0;
QMap<QString, DatabaseModel> 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());

View File

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

View File

@ -67,13 +67,7 @@ public:
QSet<TableSetBase *> tableSets;
enum DatabaseStatus{
New,
Modified,
NotChanged
};
DatabaseStatus _databaseStatus;
bool isDatabaseNew;
};
NUT_END_NAMESPACE