added toModel(QSqlQueryModel*) to Nut::Query [skip ci]

This commit is contained in:
Hamed Masafi 2019-03-09 18:59:24 +03:30
parent 0e61d62ab6
commit 37a2e8f5fc
2 changed files with 69 additions and 5 deletions

View File

@ -5,6 +5,7 @@
#include <QDebug>
#include "defines.h"
#include "phrases/phraselist.h"
#include "phrases/fieldphrase.h"
NUT_BEGIN_NAMESPACE
@ -30,6 +31,63 @@ public:
int apply();
};
//#define HEAD(x, ...) x
//#define TAIL(x, ...) __VA_ARGS__
//#define ENCLOSE(...) ( __VA_ARGS__ )
//#define REM_ENCLOSE_(...) __VA_ARGS__
//#define REM_ENCLOSE(...) REM_ENCLOSE_ __VA_ARGS__
//#define IF_ENCLOSED_1(true, ...) true
//#define IF_ENCLOSED_0(true, ...) __VA_ARGS__
//#define IF_ENCLOSED(...) CAT(IF_ENCLOSED_, IF_ENCLOSED(__VA_ARGS__))
//// This function will optionally remove brackets around its arguments
//// if there are any. Otherwise it will return normally
//#define OPT_REM_ENCLOSE(...) \
// IF_ENCLOSED (__VA_ARGS__) ( REM_ENCLOSE(__VA_ARGS__), __VA_ARGS__ )
//#define TEST_LAST EXISTS(1)
//#define IS_LIST_EMPTY(...) \
// TRY_EXTRACT_EXISTS( \
// DEFER(HEAD) (__VA_ARGS__ EXISTS(1))\
// , 0)
//#define IS_LIST_NOT_EMPTY(...) NOT(IS_LIST_EMPTY(__VA_ARGS__))
//#define FOR_EACH(fVisitor, ...) \
// fVisitor( OPT_REM_ENCLOSE(HEAD(__VA_ARGS__)) ) \
// FOR_EACH(fVisitor, TAIL(__VA_ARGS__))
//#define NUT_FOREACH(F, ...) \
// F(HEAD(__VA_ARGS__)); \
// NUT_FOREACH(F, TAIL(__VA_ARGS__))
//template <typename... ETC>
//class Bulk
//{
//public:
// void f(int){}
// Bulk()
// {
// int a, b, c, d;
// NUT_FOREACH(f, a, c, d)
// }
//};
//template <typename T1, typename... ETC>
//class Bulk<T1, ETC...>
//{
//public:
// Bulk(FieldPhrase<T1>)
// {}
//};
//template <typename T1, typename T2, typename... ETC>
//class Bulk<T1, T2, ETC...>
//{
//public:
// Bulk(FieldPhrase<T1>, FieldPhrase<T2>)
// {}
//};
NUT_END_NAMESPACE
#endif // BULKINSERTER_H

View File

@ -83,7 +83,7 @@ public:
QVariant min(const FieldPhrase<int> &f);
QVariant average(const FieldPhrase<int> &f);
QVariant insert(AssignmentPhraseList p);
QVariant insert(const AssignmentPhraseList &p);
//data mailpulation
int update(const AssignmentPhraseList &ph);
@ -91,6 +91,7 @@ public:
int remove();
QSqlQueryModel *toModel();
void toModel(QSqlQueryModel *model);
//debug purpose
QString sqlCommand() const;
@ -410,7 +411,7 @@ Q_OUTOFLINE_TEMPLATE QVariant Query<T>::average(const FieldPhrase<int> &f)
}
template<class T>
Q_OUTOFLINE_TEMPLATE QVariant Query<T>::insert(AssignmentPhraseList p)
Q_OUTOFLINE_TEMPLATE QVariant Query<T>::insert(const AssignmentPhraseList &p)
{
Q_D(Query);
d->sql = d->database->sqlGenertor()
@ -541,6 +542,14 @@ Q_OUTOFLINE_TEMPLATE int Query<T>::remove()
template <class T>
Q_OUTOFLINE_TEMPLATE QSqlQueryModel *Query<T>::toModel()
{
QSqlQueryModel *model = new QSqlQueryModel;
toModel(model);
return model;
}
template <class T>
Q_OUTOFLINE_TEMPLATE void Query<T>::toModel(QSqlQueryModel *model)
{
Q_D(Query);
@ -551,7 +560,6 @@ Q_OUTOFLINE_TEMPLATE QSqlQueryModel *Query<T>::toModel()
d->skip, d->take);
DatabaseModel dbModel = d->database->model();
QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery(d->sql, d->database->database());
int fieldIndex = 0;
@ -573,8 +581,6 @@ Q_OUTOFLINE_TEMPLATE QSqlQueryModel *Query<T>::toModel()
f->displayName);
}
}
return model;
}
template <class T>