diff --git a/src/nut/abstractquery.cpp b/src/nut/abstractquery.cpp
new file mode 100644
index 0000000..f2dd832
--- /dev/null
+++ b/src/nut/abstractquery.cpp
@@ -0,0 +1,43 @@
+/**************************************************************************
+**
+** This file is part of Nut project.
+** https://github.com/HamedMasafi/Nut
+**
+** Nut is free software: you can redistribute it and/or modify
+** it under the terms of the GNU Lesser General Public License as published by
+** the Free Software Foundation, either version 3 of the License, or
+** (at your option) any later version.
+**
+** Nut is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU Lesser General Public License for more details.
+**
+** You should have received a copy of the GNU Lesser General Public License
+** along with Nut. If not, see .
+**
+**************************************************************************/
+
+#include "abstractquery.h"
+#include "abstractquery_p.h"
+
+NUT_BEGIN_NAMESPACE
+
+AbstractQuery::AbstractQuery(QObject *parent) : QObject(parent)
+ , d_ptr(new AbstractQueryPrivate(this))
+{
+
+}
+
+Nut::AbstractQueryPrivate::AbstractQueryPrivate(Nut::AbstractQuery *parent) :
+ q_ptr(parent)
+{
+
+}
+
+Nut::AbstractQueryPrivate::~AbstractQueryPrivate()
+{
+
+}
+
+NUT_END_NAMESPACE
diff --git a/src/nut/querybase_p.h b/src/nut/abstractquery.h
similarity index 74%
rename from src/nut/querybase_p.h
rename to src/nut/abstractquery.h
index f714927..8618e72 100644
--- a/src/nut/querybase_p.h
+++ b/src/nut/abstractquery.h
@@ -18,37 +18,36 @@
**
**************************************************************************/
-#ifndef QUERYBASE_H
-#define QUERYBASE_H
+#ifndef NUT_ABSTRACTQUERY_H
+#define NUT_ABSTRACTQUERY_H
#include
#include
#include
#include "defines.h"
-#include "query_p.h"
+#include "abstractquery_p.h"
NUT_BEGIN_NAMESPACE
-//TODO: remove this class
-class Table;
-class AbstractTableSet;
-class NUT_EXPORT QueryBase : public QObject
+class AbstractQueryPrivate;
+class NUT_EXPORT AbstractQuery : public QObject
{
Q_OBJECT
protected:
- QExplicitlySharedDataPointer d;
+ AbstractQueryPrivate *d_ptr;
+ Q_DECLARE_PRIVATE(AbstractQuery)
public:
- explicit QueryBase(QObject *parent = nullptr);
+ explicit AbstractQuery(QObject *parent = nullptr);
protected:
-// void addTableToSet(AbstractTableSet *set, Table *table);
+ // void addTableToSet(TableSetBase *set, Table *table);
public slots:
};
NUT_END_NAMESPACE
-#endif // QUERYBASE_H
+#endif // NUT_ABSTRACTQUERY_H
diff --git a/src/nut/query_p.h b/src/nut/abstractquery_p.h
similarity index 71%
rename from src/nut/query_p.h
rename to src/nut/abstractquery_p.h
index ed7e2a4..e432869 100644
--- a/src/nut/query_p.h
+++ b/src/nut/abstractquery_p.h
@@ -18,8 +18,19 @@
**
**************************************************************************/
-#ifndef QUERY_P_H
-#define QUERY_P_H
+#ifndef NUT_QUERY_P_H
+#define NUT_QUERY_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header
+// file may change from version to version without notice, or even be removed.
+//
+// We mean it.
+//
#include "phrase.h"
@@ -31,15 +42,15 @@ NUT_BEGIN_NAMESPACE
class Database;
class AbstractTableSet;
-class QueryBase;
+class AbstractQuery;
struct RelationModel;
-class NUT_EXPORT QueryPrivate : public QSharedData {
- QueryBase *q_ptr;
- Q_DECLARE_PUBLIC(QueryBase)
+class NUT_EXPORT AbstractQueryPrivate {
+ AbstractQuery *q_ptr;
+ Q_DECLARE_PUBLIC(AbstractQuery)
public:
- explicit QueryPrivate(QueryBase *parent);
- ~QueryPrivate();
+ explicit AbstractQueryPrivate(AbstractQuery *parent);
+ ~AbstractQueryPrivate();
QString sql;
QString className;
@@ -57,4 +68,4 @@ public:
NUT_END_NAMESPACE
-#endif // QUERY_P_H
+#endif // NUT_QUERY_P_H
diff --git a/src/nut/abstracttableset.h b/src/nut/abstracttableset.h
index b78012b..5644005 100644
--- a/src/nut/abstracttableset.h
+++ b/src/nut/abstracttableset.h
@@ -26,7 +26,7 @@
#include
#include
-#include "defines.h"
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/abstracttablesetdata.h b/src/nut/abstracttablesetdata.h
index 7f00b14..c53448c 100644
--- a/src/nut/abstracttablesetdata.h
+++ b/src/nut/abstracttablesetdata.h
@@ -22,7 +22,8 @@
#define NUT_ABSTRACTTABLESETDATA_H
#include
-#include "defines.h"
+
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/bulkinserter.h b/src/nut/bulkinserter.h
index 95af330..7ba47c6 100644
--- a/src/nut/bulkinserter.h
+++ b/src/nut/bulkinserter.h
@@ -3,9 +3,10 @@
#include
#include
-#include "defines.h"
-#include "phraselist.h"
-#include "fieldphrase.h"
+#include
+#include
+
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/changelogtable.h b/src/nut/changelogtable.h
index e42b61d..76f6c38 100644
--- a/src/nut/changelogtable.h
+++ b/src/nut/changelogtable.h
@@ -22,7 +22,7 @@
#define CHANGELOGTABLE_H
#include
-#include "table.h"
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/database.h b/src/nut/database.h
index afffe70..c88c9d6 100644
--- a/src/nut/database.h
+++ b/src/nut/database.h
@@ -26,8 +26,8 @@
#include
#include
-#include "defines.h"
-#include "tableset.h"
+#include
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/database_p.h b/src/nut/database_p.h
index b817b77..c401b6a 100644
--- a/src/nut/database_p.h
+++ b/src/nut/database_p.h
@@ -21,12 +21,12 @@
#ifndef DATABASE_P_H
#define DATABASE_P_H
-#include "database.h"
-#include "databasemodel.h"
-
#include
#include
+#include
+#include
+
NUT_BEGIN_NAMESPACE
class ChangeLogTable;
diff --git a/src/nut/databasemodel.h b/src/nut/databasemodel.h
index 8afe966..5b8e17c 100644
--- a/src/nut/databasemodel.h
+++ b/src/nut/databasemodel.h
@@ -25,7 +25,7 @@
#include
#include
-#include "defines.h"
+#include
class QJsonObject;
diff --git a/src/nut/defines.h b/src/nut/defines.h
index 64795ac..aa6725e 100644
--- a/src/nut/defines.h
+++ b/src/nut/defines.h
@@ -23,7 +23,7 @@
#define NUT_NAMESPACE Nut
-#include "defines_consts.h"
+#include
#include
#include
diff --git a/src/nut/generators/abstractsqlgenerator.h b/src/nut/generators/abstractsqlgenerator.h
index 8a16b56..fe39608 100644
--- a/src/nut/generators/abstractsqlgenerator.h
+++ b/src/nut/generators/abstractsqlgenerator.h
@@ -24,7 +24,8 @@
#include
#include
#include
-#include "phrase.h"
+
+#include
class SqlSerializer;
diff --git a/src/nut/generators/mysqlgenerator.h b/src/nut/generators/mysqlgenerator.h
index 121b34b..289069f 100644
--- a/src/nut/generators/mysqlgenerator.h
+++ b/src/nut/generators/mysqlgenerator.h
@@ -22,7 +22,8 @@
#define MYSQLGENERATOR_H
#include
-#include "abstractsqlgenerator.h"
+
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/generators/postgresqlgenerator.h b/src/nut/generators/postgresqlgenerator.h
index c691975..7d5865b 100644
--- a/src/nut/generators/postgresqlgenerator.h
+++ b/src/nut/generators/postgresqlgenerator.h
@@ -22,7 +22,8 @@
#define POSTGRESQLGENERATOR_H
#include
-#include "abstractsqlgenerator.h"
+
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/generators/sqlitegenerator.h b/src/nut/generators/sqlitegenerator.h
index 33a6b86..693f379 100644
--- a/src/nut/generators/sqlitegenerator.h
+++ b/src/nut/generators/sqlitegenerator.h
@@ -22,7 +22,8 @@
#define SQLITEGENERATOR_H
#include
-#include "abstractsqlgenerator.h"
+
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/generators/sqlservergenerator.h b/src/nut/generators/sqlservergenerator.h
index d67647c..6156fe5 100644
--- a/src/nut/generators/sqlservergenerator.h
+++ b/src/nut/generators/sqlservergenerator.h
@@ -22,7 +22,8 @@
#define SQLSERVERGENERATOR_H
#include
-#include "abstractsqlgenerator.h"
+
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/nut.pro b/src/nut/nut.pro
index f8a7db8..b6a4057 100644
--- a/src/nut/nut.pro
+++ b/src/nut/nut.pro
@@ -30,9 +30,7 @@ HEADERS += \
$$PWD/changelogtable.h \
$$PWD/abstracttableset.h \
$$PWD/abstracttablesetdata.h \
- $$PWD/querybase_p.h \
$$PWD/tablemodel.h \
- $$PWD/query_p.h \
$$PWD/table.h \
$$PWD/database.h \
$$PWD/database_p.h \
@@ -49,7 +47,9 @@ HEADERS += \
$$PWD/phrases/phrasedatalist.h \
$$PWD/phrases/phraselist.h \
$$PWD/phrases/datephrase.h \
- $$PWD/table_p.h
+ $$PWD/table_p.h \
+ $$PWD/abstractquery.h \
+ $$PWD/abstractquery_p.h
SOURCES += \
$$PWD/generators/abstractsqlgenerator.cpp \
@@ -64,7 +64,6 @@ SOURCES += \
$$PWD/databasemodel.cpp \
$$PWD/abstracttableset.cpp \
$$PWD/changelogtable.cpp \
- $$PWD/querybase.cpp \
$$PWD/tablemodel.cpp \
$$PWD/table.cpp \
$$PWD/database.cpp \
@@ -79,7 +78,8 @@ SOURCES += \
$$PWD/phrases/phrasedata.cpp \
$$PWD/phrases/phrasedatalist.cpp \
$$PWD/phrases/phraselist.cpp \
- $$PWD/phrases/datephrase.cpp
+ $$PWD/phrases/datephrase.cpp \
+ $$PWD/abstractquery.cpp
load(qt_module)
diff --git a/src/nut/phrase.h b/src/nut/phrase.h
index 4433f8d..30fb6df 100644
--- a/src/nut/phrase.h
+++ b/src/nut/phrase.h
@@ -21,16 +21,16 @@
#ifndef PHRASE_H
#define PHRASE_H
-#include "conditionalphrase.h"
-#include "abstractfieldphrase.h"
-#include "fieldphrase.h"
-#include "phraselist.h"
-#include "assignmentphraselist.h"
-#include "phrasedatalist.h"
-#include "phrasedata.h"
-#include "assignmentphrase.h"
-#include "numericphrase.h"
-#include "datephrase.h"
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/phrases/abstractfieldphrase.h b/src/nut/phrases/abstractfieldphrase.h
index b09dc7e..0745fa5 100644
--- a/src/nut/phrases/abstractfieldphrase.h
+++ b/src/nut/phrases/abstractfieldphrase.h
@@ -21,11 +21,10 @@
#ifndef ABSTRACTFIELDPHRASE_H
#define ABSTRACTFIELDPHRASE_H
-#include "defines.h"
-
-#include "assignmentphrase.h"
-#include "conditionalphrase.h"
-#include "phraselist.h"
+#include
+#include
+#include
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/phrases/assignmentphrase.h b/src/nut/phrases/assignmentphrase.h
index a23c169..fc2711f 100644
--- a/src/nut/phrases/assignmentphrase.h
+++ b/src/nut/phrases/assignmentphrase.h
@@ -21,9 +21,8 @@
#ifndef ASSIGNMENTPHRASE_H
#define ASSIGNMENTPHRASE_H
-#include "defines.h"
-
-#include "assignmentphraselist.h"
+#include
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/phrases/assignmentphraselist.h b/src/nut/phrases/assignmentphraselist.h
index 4d779a5..7e0c897 100644
--- a/src/nut/phrases/assignmentphraselist.h
+++ b/src/nut/phrases/assignmentphraselist.h
@@ -21,7 +21,7 @@
#ifndef ASSIGNMENTPHRASELIST_H
#define ASSIGNMENTPHRASELIST_H
-#include "defines.h"
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/phrases/conditionalphrase.h b/src/nut/phrases/conditionalphrase.h
index 49c6aaa..33d2ad7 100644
--- a/src/nut/phrases/conditionalphrase.h
+++ b/src/nut/phrases/conditionalphrase.h
@@ -21,7 +21,7 @@
#ifndef CONDITIONALPHRASE_H
#define CONDITIONALPHRASE_H
-#include "phrasedata.h"
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/phrases/datephrase.h b/src/nut/phrases/datephrase.h
index 005936f..b76cd1e 100644
--- a/src/nut/phrases/datephrase.h
+++ b/src/nut/phrases/datephrase.h
@@ -21,10 +21,11 @@
#ifndef DATEPHRASE_H
#define DATEPHRASE_H
-#include "fieldphrase.h"
#include
#include
+#include
+
NUT_BEGIN_NAMESPACE
#define COMMON_OPERATORS_DECL(T) \
diff --git a/src/nut/phrases/fieldphrase.h b/src/nut/phrases/fieldphrase.h
index 71dc4b3..7ef4b6d 100644
--- a/src/nut/phrases/fieldphrase.h
+++ b/src/nut/phrases/fieldphrase.h
@@ -21,9 +21,8 @@
#ifndef FIELDPHRASE_H
#define FIELDPHRASE_H
-#include "defines.h"
-
-#include "abstractfieldphrase.h"
+#include
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/phrases/numericphrase.h b/src/nut/phrases/numericphrase.h
index 39cd615..e7e7bbb 100644
--- a/src/nut/phrases/numericphrase.h
+++ b/src/nut/phrases/numericphrase.h
@@ -1,9 +1,10 @@
#ifndef NUMERICPHRASE_H
#define NUMERICPHRASE_H
-#include "fieldphrase.h"
#include
+#include
+
NUT_BEGIN_NAMESPACE
#define SPECIALIZATION_NUMERIC_MEMBER(type, op, cond) \
diff --git a/src/nut/phrases/phrasedata.h b/src/nut/phrases/phrasedata.h
index 6b99eb9..0af3d7b 100644
--- a/src/nut/phrases/phrasedata.h
+++ b/src/nut/phrases/phrasedata.h
@@ -21,7 +21,7 @@
#ifndef PHRASEDATA_H
#define PHRASEDATA_H
-#include "defines.h"
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/phrases/phrasedatalist.h b/src/nut/phrases/phrasedatalist.h
index 9566ccb..a7b6fda 100644
--- a/src/nut/phrases/phrasedatalist.h
+++ b/src/nut/phrases/phrasedatalist.h
@@ -21,7 +21,7 @@
#ifndef PHRASEDATALIST_H
#define PHRASEDATALIST_H
-#include "phrasedata.h"
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/phrases/phraselist.h b/src/nut/phrases/phraselist.h
index ba87cd0..42620fc 100644
--- a/src/nut/phrases/phraselist.h
+++ b/src/nut/phrases/phraselist.h
@@ -21,9 +21,8 @@
#ifndef PHRASELIST_H
#define PHRASELIST_H
-#include "defines.h"
-
-#include "phrasedatalist.h"
+#include
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/query.cpp b/src/nut/query.cpp
index 84c94e3..8ddb18e 100644
--- a/src/nut/query.cpp
+++ b/src/nut/query.cpp
@@ -22,17 +22,6 @@
NUT_BEGIN_NAMESPACE
-QueryPrivate::QueryPrivate(QueryBase *parent) : q_ptr(parent),
- database(nullptr), tableSet(nullptr), skip(-1), take(-1)
-{
-
-}
-
-QueryPrivate::~QueryPrivate()
-{
-
-}
-
/*!
* \class Query
* \brief This class hold a query. A query can be used for getting database rows, editing or deleting without row fetching.
diff --git a/src/nut/query.h b/src/nut/query.h
index 0f7785e..8cf076d 100644
--- a/src/nut/query.h
+++ b/src/nut/query.h
@@ -18,8 +18,8 @@
**
**************************************************************************/
-#ifndef QUERY_H
-#define QUERY_H
+#ifndef NUT_QUERY_H
+#define NUT_QUERY_H
#include
#include
@@ -36,24 +36,21 @@
#endif
#include
-#include
-#include
-#include "database.h"
-#include "databasemodel.h"
-#include "abstracttableset.h"
-#include "abstractsqlgenerator.h"
-#include "phrase.h"
-#include "tablemodel.h"
-#include "sqlmodel.h"
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
NUT_BEGIN_NAMESPACE
template
-class Query : public QueryBase
+class Query : public AbstractQuery
{
- QueryPrivate *d_ptr;
- Q_DECLARE_PRIVATE(Query)
-
bool m_autoDelete;
public:
@@ -113,7 +110,7 @@ template
template
Q_OUTOFLINE_TEMPLATE QList Query::select(const std::function allocator)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
QList ret;
d->joins.prepend(d->tableName);
@@ -146,10 +143,9 @@ Q_OUTOFLINE_TEMPLATE QList Query::select(const std::function
Q_OUTOFLINE_TEMPLATE Query::Query(Database *database, AbstractTableSet *tableSet,
bool autoDelete)
- : QueryBase(database), d_ptr(new QueryPrivate(this)),
- m_autoDelete(autoDelete)
+ : AbstractQuery(database), m_autoDelete(autoDelete)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->database = database;
d->tableSet = tableSet;
@@ -163,14 +159,14 @@ Q_OUTOFLINE_TEMPLATE Query::Query(Database *database, AbstractTableSet *table
template
Q_OUTOFLINE_TEMPLATE Query::~Query()
{
- Q_D(Query);
+ Q_D(AbstractQuery);
delete d;
}
template
Q_OUTOFLINE_TEMPLATE RowList Query::toList(int count)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
RowList returnList;
d->select = QStringLiteral("*");
@@ -347,7 +343,7 @@ template
template
Q_OUTOFLINE_TEMPLATE QList Query::select(const FieldPhrase f)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
QList ret;
d->joins.prepend(d->tableName);
@@ -385,7 +381,7 @@ Q_OUTOFLINE_TEMPLATE Row Query::first()
template
Q_OUTOFLINE_TEMPLATE int Query::count()
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->joins.prepend(d->tableName);
d->select = QStringLiteral("COUNT(*)");
@@ -405,7 +401,7 @@ Q_OUTOFLINE_TEMPLATE int Query::count()
template
Q_OUTOFLINE_TEMPLATE QVariant Query::max(const FieldPhrase &f)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->joins.prepend(d->tableName);
d->sql = d->database->sqlGenerator()->selectCommand(
@@ -423,7 +419,7 @@ Q_OUTOFLINE_TEMPLATE QVariant Query::max(const FieldPhrase &f)
template
Q_OUTOFLINE_TEMPLATE QVariant Query::min(const FieldPhrase &f)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->joins.prepend(d->tableName);
d->sql = d->database->sqlGenerator()->selectCommand(
@@ -441,7 +437,7 @@ Q_OUTOFLINE_TEMPLATE QVariant Query::min(const FieldPhrase &f)
template
Q_OUTOFLINE_TEMPLATE QVariant Query::sum(const FieldPhrase &f)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->joins.prepend(d->tableName);
d->sql = d->database->sqlGenerator()->selectCommand(
@@ -459,7 +455,7 @@ Q_OUTOFLINE_TEMPLATE QVariant Query::sum(const FieldPhrase &f)
template
Q_OUTOFLINE_TEMPLATE QVariant Query::average(const FieldPhrase &f)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->joins.prepend(d->tableName);
d->sql = d->database->sqlGenerator()->selectCommand(
@@ -477,7 +473,7 @@ Q_OUTOFLINE_TEMPLATE QVariant Query::average(const FieldPhrase &f)
template
Q_OUTOFLINE_TEMPLATE QVariant Query::insert(const AssignmentPhraseList &p)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->sql = d->database->sqlGenerator()
->insertCommand(d->tableName, p);
QSqlQuery q = d->database->exec(d->sql);
@@ -488,7 +484,7 @@ Q_OUTOFLINE_TEMPLATE QVariant Query::insert(const AssignmentPhraseList &p)
template
Q_OUTOFLINE_TEMPLATE Query *Query::join(const QString &className)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
RelationModel *rel = d->database->model()
.relationByClassNames(d->className, className);
@@ -517,7 +513,7 @@ Q_OUTOFLINE_TEMPLATE Query *Query::join(Table *c)
template
Q_OUTOFLINE_TEMPLATE Query *Query::where(const ConditionalPhrase &ph)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
if (d->wherePhrase.data)
d->wherePhrase = d->wherePhrase && ph;
else
@@ -528,7 +524,7 @@ Q_OUTOFLINE_TEMPLATE Query *Query::where(const ConditionalPhrase &ph)
template
Q_OUTOFLINE_TEMPLATE Query *Query::setWhere(const ConditionalPhrase &ph)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->wherePhrase = ph;
return this;
}
@@ -536,7 +532,7 @@ Q_OUTOFLINE_TEMPLATE Query *Query::setWhere(const ConditionalPhrase &ph)
template
Q_OUTOFLINE_TEMPLATE Query *Query::skip(int n)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->skip = n;
return this;
}
@@ -544,7 +540,7 @@ Q_OUTOFLINE_TEMPLATE Query *Query::skip(int n)
template
Q_OUTOFLINE_TEMPLATE Query *Query::take(int n)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->take = n;
return this;
}
@@ -552,7 +548,7 @@ Q_OUTOFLINE_TEMPLATE Query *Query::take(int n)
template
Q_OUTOFLINE_TEMPLATE Query *Query::fields(const PhraseList &ph)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->fieldPhrase = ph;
return this;
}
@@ -561,7 +557,7 @@ Q_OUTOFLINE_TEMPLATE Query *Query::fields(const PhraseList &ph)
//Q_OUTOFLINE_TEMPLATE Query *Query::orderBy(QString fieldName,
// QString type)
//{
-// Q_D(Query);
+// Q_D(AbstractQuery);
// d->orderPhrases.append(fieldName, type);
// return this;
//}
@@ -569,7 +565,7 @@ Q_OUTOFLINE_TEMPLATE Query *Query::fields(const PhraseList &ph)
template
Q_OUTOFLINE_TEMPLATE Query *Query::orderBy(const PhraseList &ph)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->orderPhrase = ph;
return this;
}
@@ -577,7 +573,7 @@ Q_OUTOFLINE_TEMPLATE Query *Query::orderBy(const PhraseList &ph)
template
Q_OUTOFLINE_TEMPLATE int Query::update(const AssignmentPhraseList &ph)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->sql = d->database->sqlGenerator()->updateCommand(
d->tableName,
@@ -594,7 +590,7 @@ Q_OUTOFLINE_TEMPLATE int Query::update(const AssignmentPhraseList &ph)
template
Q_OUTOFLINE_TEMPLATE int Query::remove()
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->sql = d->database->sqlGenerator()->deleteCommand(
d->tableName, d->wherePhrase);
@@ -616,7 +612,7 @@ Q_OUTOFLINE_TEMPLATE QSqlQueryModel *Query::toModel()
template
Q_OUTOFLINE_TEMPLATE void Query::toModel(QSqlQueryModel *model)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->sql = d->database->sqlGenerator()->selectCommand(
d->tableName,
@@ -653,7 +649,7 @@ Q_OUTOFLINE_TEMPLATE void Query::toModel(QSqlQueryModel *model)
template
Q_OUTOFLINE_TEMPLATE void Query::toModel(SqlModel *model)
{
- Q_D(Query);
+ Q_D(AbstractQuery);
d->sql = d->database->sqlGenerator()->selectCommand(
d->tableName,
@@ -690,7 +686,7 @@ Q_OUTOFLINE_TEMPLATE void Query::toModel(SqlModel *model)
template
Q_OUTOFLINE_TEMPLATE QString Query::sqlCommand() const
{
- Q_D(const Query);
+ Q_D(const AbstractQuery);
return d->sql;
}
@@ -705,4 +701,4 @@ Q_OUTOFLINE_TEMPLATE QString Query::sqlCommand() const
NUT_END_NAMESPACE
-#endif // QUERY_H
+#endif // NUT_QUERY_H
diff --git a/src/nut/querybase.cpp b/src/nut/querybase.cpp
deleted file mode 100644
index de1b0bf..0000000
--- a/src/nut/querybase.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-#include "querybase_p.h"
-
-#include "table.h"
-#include "abstracttableset.h"
-
-
-NUT_BEGIN_NAMESPACE
-
-QueryBase::QueryBase(QObject *parent) : QObject(parent)
-{
-
-}
-
-//void QueryBase::addTableToSet(AbstractTableSet *set, Table *table)
-//{
-// set->add(table);
-//}
-
-NUT_END_NAMESPACE
diff --git a/src/nut/sqlmodel.cpp b/src/nut/sqlmodel.cpp
index 25bf6cd..6a58a26 100644
--- a/src/nut/sqlmodel.cpp
+++ b/src/nut/sqlmodel.cpp
@@ -29,43 +29,46 @@
NUT_BEGIN_NAMESPACE
-//SqlModel::SqlModel(Query *q) : QAbstractItemModel(q.)
-//{
-
-//}
+SqlModelPrivate::SqlModelPrivate(SqlModel *parent) : q_ptr(parent)
+ , renderer(nullptr)
+{
+ Q_UNUSED(parent)
+}
void SqlModel::setRenderer(const std::function &renderer)
{
- _renderer = renderer;
+ Q_D(SqlModel);
+ d->renderer = renderer;
}
SqlModel::SqlModel(Database *database, AbstractTableSet *tableSet, QObject *parent)
: QAbstractTableModel(parent)
- , _renderer(nullptr)
- , d(new SqlModelPrivate(this))
+ , d_ptr(new SqlModelPrivate(this))
{
+ Q_D(SqlModel);
d->model = database->model()
.tableByClassName(tableSet->childClassName());
d->tableName = d->model->name();
-
-
- // setQuery("SELECT * FROM " + d->tableName, database->databaseName());
}
int SqlModel::rowCount(const QModelIndex &parent) const
{
+ Q_D(const SqlModel);
Q_UNUSED(parent)
return d->rows.count();
}
int SqlModel::columnCount(const QModelIndex &parent) const
{
+ Q_D(const SqlModel);
Q_UNUSED(parent)
return d->model->fields().count();
}
QVariant SqlModel::data(const QModelIndex &index, int role) const
{
+ Q_D(const SqlModel);
+
if (!index.isValid())
return QVariant();
@@ -76,8 +79,8 @@ QVariant SqlModel::data(const QModelIndex &index, int role) const
Row t = d->rows.at(index.row());
QVariant v = t->property(d->model->field(index.column())->name.toLocal8Bit().data());
- if (_renderer != nullptr)
- v = _renderer(index.column(), v);
+ if (d->renderer != nullptr)
+ v = d->renderer(index.column(), v);
return v;
}
return QVariant();
@@ -85,7 +88,8 @@ QVariant SqlModel::data(const QModelIndex &index, int role) const
void SqlModel::setRows(RowList rows)
{
- d.detach();
+ Q_D(SqlModel);
+
if (d->rows.count()) {
beginRemoveRows(QModelIndex(), 0, d->rows.count());
d->rows.clear();
@@ -98,19 +102,15 @@ void SqlModel::setRows(RowList rows)
void SqlModel::append(Row table)
{
- d.detach();
+ Q_D(SqlModel);
beginInsertRows(QModelIndex(), d->rows.count(), d->rows.count());
d->rows.append(table);
endInsertRows();
}
-//void SqlModel::append(Table *table)
-//{
-// append(TableType::Row(table));
-//}
-
QVariant SqlModel::headerData(int section, Qt::Orientation orientation, int role) const
{
+ Q_D(const SqlModel);
if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
return d->model->field(section)->displayName;
}
@@ -119,13 +119,8 @@ QVariant SqlModel::headerData(int section, Qt::Orientation orientation, int role
Row SqlModel::at(const int &i) const
{
+ Q_D(const SqlModel);
return d->rows.at(i);
}
-SqlModelPrivate::SqlModelPrivate(SqlModel *parent)
-{
- Q_UNUSED(parent)
-}
-
-
NUT_END_NAMESPACE
diff --git a/src/nut/sqlmodel.h b/src/nut/sqlmodel.h
index 2f2654a..3a87d76 100644
--- a/src/nut/sqlmodel.h
+++ b/src/nut/sqlmodel.h
@@ -24,9 +24,8 @@
#include
#include
#include
-#include "defines.h"
-#include "sqlmodel_p.h"
-#include
+
+#include
NUT_BEGIN_NAMESPACE
@@ -34,12 +33,12 @@ class Database;
class AbstractTableSet;
class Table;
class TableModel;
-
+class SqlModelPrivate;
class NUT_EXPORT SqlModel : public QAbstractTableModel
{
Q_OBJECT
-
- std::function _renderer;
+ SqlModelPrivate *d_ptr;
+ Q_DECLARE_PRIVATE(SqlModel)
public:
// explicit SqlModel(Query *q);
@@ -60,9 +59,6 @@ public:
void setRenderer(const std::function &renderer);
-private:
- QExplicitlySharedDataPointer d;
-
signals:
void beforeShowText(int col, QVariant &value);
};
diff --git a/src/nut/sqlmodel_p.h b/src/nut/sqlmodel_p.h
index 2254c10..ea57486 100644
--- a/src/nut/sqlmodel_p.h
+++ b/src/nut/sqlmodel_p.h
@@ -3,21 +3,28 @@
#include
#include
-#include "defines.h"
+
+#include
+
+#include
NUT_BEGIN_NAMESPACE
class SqlModel;
class Table;
class TableModel;
-class NUT_EXPORT SqlModelPrivate : public QSharedData {
+class NUT_EXPORT SqlModelPrivate {
public:
+ SqlModel *q_ptr;
+ Q_DECLARE_PUBLIC(SqlModel);
+
explicit SqlModelPrivate(SqlModel *parent);
QString tableName;
RowList rows;
TableModel *model;
+ std::function renderer;
};
NUT_END_NAMESPACE
diff --git a/src/nut/table.h b/src/nut/table.h
index 9431ab8..ec73c6a 100644
--- a/src/nut/table.h
+++ b/src/nut/table.h
@@ -25,9 +25,9 @@
#include
#include
-#include "tablemodel.h"
-#include "defines.h"
-#include "phrase.h"
+#include
+#include
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/table_p.h b/src/nut/table_p.h
index b7fbcfe..ef10672 100644
--- a/src/nut/table_p.h
+++ b/src/nut/table_p.h
@@ -1,11 +1,11 @@
#ifndef TABLEPRIVATE_H
#define TABLEPRIVATE_H
-#include "defines.h"
-
#include
#include
+#include
+
NUT_BEGIN_NAMESPACE
class TableModel;
diff --git a/src/nut/tablemodel.h b/src/nut/tablemodel.h
index 3e3df3b..255e9c6 100644
--- a/src/nut/tablemodel.h
+++ b/src/nut/tablemodel.h
@@ -23,7 +23,8 @@
#include
#include
-#include "defines.h"
+
+#include
class QJsonObject;
diff --git a/src/nut/tableset.h b/src/nut/tableset.h
index 7287a88..6fb9c7c 100644
--- a/src/nut/tableset.h
+++ b/src/nut/tableset.h
@@ -29,11 +29,11 @@
#include
-#include "abstracttableset.h"
-#include "table.h"
-#include "bulkinserter.h"
-#include "databasemodel.h"
-#include "abstracttablesetdata.h"
+#include
+#include
+#include
+#include
+#include
NUT_BEGIN_NAMESPACE
diff --git a/src/nut/types/dbgeography.h b/src/nut/types/dbgeography.h
index 575426e..18b1770 100644
--- a/src/nut/types/dbgeography.h
+++ b/src/nut/types/dbgeography.h
@@ -21,11 +21,12 @@
#ifndef DBGEOGRAPHY_H
#define DBGEOGRAPHY_H
-#include "defines.h"
#include
#include
#include
+#include
+
NUT_BEGIN_NAMESPACE
class NUT_EXPORT DbGeography
diff --git a/tests/auto/tst_basic/tst_basic.h b/tests/auto/tst_basic/tst_basic.h
index 74c3128..9955d4c 100644
--- a/tests/auto/tst_basic/tst_basic.h
+++ b/tests/auto/tst_basic/tst_basic.h
@@ -5,6 +5,7 @@
#include
#include "weblogdatabase.h"
+
class Post;
class User;
class BasicTest : public QObject