32#ifndef _QX_SQL_QUERY_H_
33#define _QX_SQL_QUERY_H_
46#ifdef Q_COMPILER_INITIALIZER_LISTS
47#include <initializer_list>
50#ifdef _QX_ENABLE_BOOST_SERIALIZATION
51#include <boost/serialization/serialization.hpp>
52#include <boost/serialization/split_free.hpp>
53#include <boost/serialization/nvp.hpp>
56#include <QtCore/qdatastream.h>
59#include <QtCore/qjsonvalue.h>
60#include <QtCore/qjsonobject.h>
61#include <QtCore/qjsonarray.h>
62#include <QtCore/qjsondocument.h>
65#include <QtSql/qsqlquery.h>
83#ifdef _QX_ENABLE_BOOST_SERIALIZATION
87template <
class Archive>
inline void qx_save(Archive & ar,
const qx::QxSqlQuery & t,
const unsigned int file_version);
101template <>
struct QxConvert_ToJson<
qx::QxSqlQuery >;
102template <> struct QxConvert_FromJson< qx::QxSqlQuery >;
247#ifdef _QX_ENABLE_BOOST_SERIALIZATION
298#ifdef Q_COMPILER_INITIALIZER_LISTS
299 QxSqlQuery(std::initializer_list<QPair<QString, QJsonValue> > json);
300 QxSqlQuery(std::initializer_list<QPair<QString, QJsonValue> > json, std::initializer_list<QPair<QString, QJsonValue> > opts);
301 QxSqlQuery(
const QString &
type, std::initializer_list<QPair<QString, QJsonValue> > json);
302 QxSqlQuery(
const QString &
type, std::initializer_list<QPair<QString, QJsonValue> > json, std::initializer_list<QPair<QString, QJsonValue> > opts);
319 QString
getJoinQuery(
const QString & relationKey,
const QString & relationAlias);
323 QxSqlQuery &
bind(
const QVariant & vValue, QSql::ParamType paramType = QSql::In);
324 QxSqlQuery &
bind(
const QString & sKey,
const QVariant & vValue, QSql::ParamType paramType = QSql::In);
332 QVariant
getSqlResultAt(
long row,
const QString & column,
bool caseSensitive =
false)
const;
367 virtual
QxSqlQuery &
orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4);
368 virtual
QxSqlQuery &
orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5);
369 virtual
QxSqlQuery &
orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6);
370 virtual
QxSqlQuery &
orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7);
371 virtual
QxSqlQuery &
orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8);
372 virtual
QxSqlQuery &
orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8, const QString & col9);
378 virtual
QxSqlQuery &
orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4);
379 virtual
QxSqlQuery &
orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5);
380 virtual
QxSqlQuery &
orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6);
381 virtual
QxSqlQuery &
orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7);
382 virtual
QxSqlQuery &
orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8);
383 virtual
QxSqlQuery &
orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8, const QString & col9);
389 virtual
QxSqlQuery &
groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4);
390 virtual
QxSqlQuery &
groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5);
391 virtual
QxSqlQuery &
groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6);
392 virtual
QxSqlQuery &
groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7);
393 virtual
QxSqlQuery &
groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8);
394 virtual
QxSqlQuery &
groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8, const QString & col9);
415 virtual
QxSqlQuery &
in(const QVariant & val1, const QVariant & val2, const QVariant & val3);
416 virtual
QxSqlQuery &
in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4);
417 virtual
QxSqlQuery &
in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5);
418 virtual
QxSqlQuery &
in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6);
419 virtual
QxSqlQuery &
in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7);
420 virtual
QxSqlQuery &
in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7, const QVariant & val8);
421 virtual
QxSqlQuery &
in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7, const QVariant & val8, const QVariant & val9);
426 virtual
QxSqlQuery &
notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3);
427 virtual
QxSqlQuery &
notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4);
428 virtual
QxSqlQuery &
notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5);
429 virtual
QxSqlQuery &
notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6);
430 virtual
QxSqlQuery &
notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7);
431 virtual
QxSqlQuery &
notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7, const QVariant & val8);
432 virtual
QxSqlQuery &
notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7, const QVariant & val8, const QVariant & val9);
512#ifdef _QX_ENABLE_BOOST_SERIALIZATION
516#define QX_SQL_QUERY_DERIVED_IMPL_COVARIANT_RETURN_TYPE_HPP(className) \
519virtual className & distinct(); \
521virtual className & where(const QString & column); \
522virtual className & where_OpenParenthesis(const QString & column); \
523virtual className & and_(const QString & column); \
524virtual className & and_OpenParenthesis(const QString & column); \
525virtual className & or_(const QString & column); \
526virtual className & or_OpenParenthesis(const QString & column); \
528virtual className & openParenthesis(); \
529virtual className & closeParenthesis(); \
531virtual className & orderAsc(const QStringList & columns); \
532virtual className & orderAsc(const QString & col1); \
533virtual className & orderAsc(const QString & col1, const QString & col2); \
534virtual className & orderAsc(const QString & col1, const QString & col2, const QString & col3); \
535virtual className & orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4); \
536virtual className & orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5); \
537virtual className & orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6); \
538virtual className & orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7); \
539virtual className & orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8); \
540virtual className & orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8, const QString & col9); \
542virtual className & orderDesc(const QStringList & columns); \
543virtual className & orderDesc(const QString & col1); \
544virtual className & orderDesc(const QString & col1, const QString & col2); \
545virtual className & orderDesc(const QString & col1, const QString & col2, const QString & col3); \
546virtual className & orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4); \
547virtual className & orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5); \
548virtual className & orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6); \
549virtual className & orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7); \
550virtual className & orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8); \
551virtual className & orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8, const QString & col9); \
553virtual className & groupBy(const QStringList & columns); \
554virtual className & groupBy(const QString & col1); \
555virtual className & groupBy(const QString & col1, const QString & col2); \
556virtual className & groupBy(const QString & col1, const QString & col2, const QString & col3); \
557virtual className & groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4); \
558virtual className & groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5); \
559virtual className & groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6); \
560virtual className & groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7); \
561virtual className & groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8); \
562virtual className & groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8, const QString & col9); \
564virtual className & limit(int rowsCount, int startRow = 0, bool withTies = false); \
566virtual className & like(const QString & val); \
567virtual className & notLike(const QString & val); \
568virtual className & startsWith(const QString & val); \
569virtual className & endsWith(const QString & val); \
570virtual className & containsString(const QString & val); \
572virtual className & isEqualTo(const QVariant & val); \
573virtual className & isNotEqualTo(const QVariant & val); \
574virtual className & isGreaterThan(const QVariant & val); \
575virtual className & isGreaterThanOrEqualTo(const QVariant & val); \
576virtual className & isLessThan(const QVariant & val); \
577virtual className & isLessThanOrEqualTo(const QVariant & val); \
578virtual className & customOperator(const QString & sCustomOperator, const QVariant & val); \
580virtual className & in(const QVariantList & values); \
581virtual className & in(const QVariant & val1); \
582virtual className & in(const QVariant & val1, const QVariant & val2); \
583virtual className & in(const QVariant & val1, const QVariant & val2, const QVariant & val3); \
584virtual className & in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4); \
585virtual className & in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5); \
586virtual className & in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6); \
587virtual className & in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7); \
588virtual className & in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7, const QVariant & val8); \
589virtual className & in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7, const QVariant & val8, const QVariant & val9); \
591virtual className & notIn(const QVariantList & values); \
592virtual className & notIn(const QVariant & val1); \
593virtual className & notIn(const QVariant & val1, const QVariant & val2); \
594virtual className & notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3); \
595virtual className & notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4); \
596virtual className & notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5); \
597virtual className & notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6); \
598virtual className & notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7); \
599virtual className & notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7, const QVariant & val8); \
600virtual className & notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7, const QVariant & val8, const QVariant & val9); \
602virtual className & in_Select(const QxSqlQuery & query); \
603virtual className & notIn_Select(const QxSqlQuery & query); \
604virtual className & isEqualTo_Select(const QxSqlQuery & query); \
605virtual className & isNotEqualTo_Select(const QxSqlQuery & query); \
607virtual className & isNull(); \
608virtual className & isNotNull(); \
610virtual className & isBetween(const QVariant & val1, const QVariant & val2); \
611virtual className & isNotBetween(const QVariant & val1, const QVariant & val2); \
613virtual className & freeText(const QString & text, const QVariantList & values = QVariantList()); \
615virtual className & addJoinQuery(const QString & relationKeyOrAlias, const QxSqlQuery & joinQuery);
617#define QX_SQL_QUERY_DERIVED_IMPL_COVARIANT_RETURN_TYPE_CPP(className) \
619className & className::distinct() { return static_cast<className &>(qx::QxSqlQuery::distinct()); } \
621className & className::where(const QString & column) { return static_cast<className &>(qx::QxSqlQuery::where(column)); } \
622className & className::where_OpenParenthesis(const QString & column) { return static_cast<className &>(qx::QxSqlQuery::where_OpenParenthesis(column)); } \
623className & className::and_(const QString & column) { return static_cast<className &>(qx::QxSqlQuery::and_(column)); } \
624className & className::and_OpenParenthesis(const QString & column) { return static_cast<className &>(qx::QxSqlQuery::and_OpenParenthesis(column)); } \
625className & className::or_(const QString & column) { return static_cast<className &>(qx::QxSqlQuery::or_(column)); } \
626className & className::or_OpenParenthesis(const QString & column) { return static_cast<className &>(qx::QxSqlQuery::or_OpenParenthesis(column)); } \
628className & className::openParenthesis() { return static_cast<className &>(qx::QxSqlQuery::openParenthesis()); } \
629className & className::closeParenthesis() { return static_cast<className &>(qx::QxSqlQuery::closeParenthesis()); } \
631className & className::orderAsc(const QStringList & columns) { return static_cast<className &>(qx::QxSqlQuery::orderAsc(columns)); } \
632className & className::orderAsc(const QString & col1) { return static_cast<className &>(qx::QxSqlQuery::orderAsc(col1)); } \
633className & className::orderAsc(const QString & col1, const QString & col2) { return static_cast<className &>(qx::QxSqlQuery::orderAsc(col1, col2)); } \
634className & className::orderAsc(const QString & col1, const QString & col2, const QString & col3) { return static_cast<className &>(qx::QxSqlQuery::orderAsc(col1, col2, col3)); } \
635className & className::orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4) { return static_cast<className &>(qx::QxSqlQuery::orderAsc(col1, col2, col3, col4)); } \
636className & className::orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5) { return static_cast<className &>(qx::QxSqlQuery::orderAsc(col1, col2, col3, col4, col5)); } \
637className & className::orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6) { return static_cast<className &>(qx::QxSqlQuery::orderAsc(col1, col2, col3, col4, col5, col6)); } \
638className & className::orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7) { return static_cast<className &>(qx::QxSqlQuery::orderAsc(col1, col2, col3, col4, col5, col6, col7)); } \
639className & className::orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8) { return static_cast<className &>(qx::QxSqlQuery::orderAsc(col1, col2, col3, col4, col5, col6, col7, col8)); } \
640className & className::orderAsc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8, const QString & col9) { return static_cast<className &>(qx::QxSqlQuery::orderAsc(col1, col2, col3, col4, col5, col6, col7, col8, col9)); } \
642className & className::orderDesc(const QStringList & columns) { return static_cast<className &>(qx::QxSqlQuery::orderDesc(columns)); } \
643className & className::orderDesc(const QString & col1) { return static_cast<className &>(qx::QxSqlQuery::orderDesc(col1)); } \
644className & className::orderDesc(const QString & col1, const QString & col2) { return static_cast<className &>(qx::QxSqlQuery::orderDesc(col1, col2)); } \
645className & className::orderDesc(const QString & col1, const QString & col2, const QString & col3) { return static_cast<className &>(qx::QxSqlQuery::orderDesc(col1, col2, col3)); } \
646className & className::orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4) { return static_cast<className &>(qx::QxSqlQuery::orderDesc(col1, col2, col3, col4)); } \
647className & className::orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5) { return static_cast<className &>(qx::QxSqlQuery::orderDesc(col1, col2, col3, col4, col5)); } \
648className & className::orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6) { return static_cast<className &>(qx::QxSqlQuery::orderDesc(col1, col2, col3, col4, col5, col6)); } \
649className & className::orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7) { return static_cast<className &>(qx::QxSqlQuery::orderDesc(col1, col2, col3, col4, col5, col6, col7)); } \
650className & className::orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8) { return static_cast<className &>(qx::QxSqlQuery::orderDesc(col1, col2, col3, col4, col5, col6, col7, col8)); } \
651className & className::orderDesc(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8, const QString & col9) { return static_cast<className &>(qx::QxSqlQuery::orderDesc(col1, col2, col3, col4, col5, col6, col7, col8, col9)); } \
653className & className::groupBy(const QStringList & columns) { return static_cast<className &>(qx::QxSqlQuery::groupBy(columns)); } \
654className & className::groupBy(const QString & col1) { return static_cast<className &>(qx::QxSqlQuery::groupBy(col1)); } \
655className & className::groupBy(const QString & col1, const QString & col2) { return static_cast<className &>(qx::QxSqlQuery::groupBy(col1, col2)); } \
656className & className::groupBy(const QString & col1, const QString & col2, const QString & col3) { return static_cast<className &>(qx::QxSqlQuery::groupBy(col1, col2, col3)); } \
657className & className::groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4) { return static_cast<className &>(qx::QxSqlQuery::groupBy(col1, col2, col3, col4)); } \
658className & className::groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5) { return static_cast<className &>(qx::QxSqlQuery::groupBy(col1, col2, col3, col4, col5)); } \
659className & className::groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6) { return static_cast<className &>(qx::QxSqlQuery::groupBy(col1, col2, col3, col4, col5, col6)); } \
660className & className::groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7) { return static_cast<className &>(qx::QxSqlQuery::groupBy(col1, col2, col3, col4, col5, col6, col7)); } \
661className & className::groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8) { return static_cast<className &>(qx::QxSqlQuery::groupBy(col1, col2, col3, col4, col5, col6, col7, col8)); } \
662className & className::groupBy(const QString & col1, const QString & col2, const QString & col3, const QString & col4, const QString & col5, const QString & col6, const QString & col7, const QString & col8, const QString & col9) { return static_cast<className &>(qx::QxSqlQuery::groupBy(col1, col2, col3, col4, col5, col6, col7, col8, col9)); } \
664className & className::limit(int rowsCount, int startRow, bool withTies) { return static_cast<className &>(qx::QxSqlQuery::limit(rowsCount, startRow, withTies)); } \
666className & className::like(const QString & val) { return static_cast<className &>(qx::QxSqlQuery::like(val)); } \
667className & className::notLike(const QString & val) { return static_cast<className &>(qx::QxSqlQuery::notLike(val)); } \
668className & className::startsWith(const QString & val) { return static_cast<className &>(qx::QxSqlQuery::startsWith(val)); } \
669className & className::endsWith(const QString & val) { return static_cast<className &>(qx::QxSqlQuery::endsWith(val)); } \
670className & className::containsString(const QString & val) { return static_cast<className &>(qx::QxSqlQuery::containsString(val)); } \
672className & className::isEqualTo(const QVariant & val) { return static_cast<className &>(qx::QxSqlQuery::isEqualTo(val)); } \
673className & className::isNotEqualTo(const QVariant & val) { return static_cast<className &>(qx::QxSqlQuery::isNotEqualTo(val)); } \
674className & className::isGreaterThan(const QVariant & val) { return static_cast<className &>(qx::QxSqlQuery::isGreaterThan(val)); } \
675className & className::isGreaterThanOrEqualTo(const QVariant & val) { return static_cast<className &>(qx::QxSqlQuery::isGreaterThanOrEqualTo(val)); } \
676className & className::isLessThan(const QVariant & val) { return static_cast<className &>(qx::QxSqlQuery::isLessThan(val)); } \
677className & className::isLessThanOrEqualTo(const QVariant & val) { return static_cast<className &>(qx::QxSqlQuery::isLessThanOrEqualTo(val)); } \
678className & className::customOperator(const QString & sCustomOperator, const QVariant & val) { return static_cast<className &>(qx::QxSqlQuery::customOperator(sCustomOperator, val)); } \
680className & className::in(const QVariantList & values) { return static_cast<className &>(qx::QxSqlQuery::in(values)); } \
681className & className::in(const QVariant & val1) { return static_cast<className &>(qx::QxSqlQuery::in(val1)); } \
682className & className::in(const QVariant & val1, const QVariant & val2) { return static_cast<className &>(qx::QxSqlQuery::in(val1, val2)); } \
683className & className::in(const QVariant & val1, const QVariant & val2, const QVariant & val3) { return static_cast<className &>(qx::QxSqlQuery::in(val1, val2, val3)); } \
684className & className::in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4) { return static_cast<className &>(qx::QxSqlQuery::in(val1, val2, val3, val4)); } \
685className & className::in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5) { return static_cast<className &>(qx::QxSqlQuery::in(val1, val2, val3, val4, val5)); } \
686className & className::in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6) { return static_cast<className &>(qx::QxSqlQuery::in(val1, val2, val3, val4, val5, val6)); } \
687className & className::in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7) { return static_cast<className &>(qx::QxSqlQuery::in(val1, val2, val3, val4, val5, val6, val7)); } \
688className & className::in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7, const QVariant & val8) { return static_cast<className &>(qx::QxSqlQuery::in(val1, val2, val3, val4, val5, val6, val7, val8)); } \
689className & className::in(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7, const QVariant & val8, const QVariant & val9) { return static_cast<className &>(qx::QxSqlQuery::in(val1, val2, val3, val4, val5, val6, val7, val8, val9)); } \
691className & className::notIn(const QVariantList & values) { return static_cast<className &>(qx::QxSqlQuery::notIn(values)); } \
692className & className::notIn(const QVariant & val1) { return static_cast<className &>(qx::QxSqlQuery::notIn(val1)); } \
693className & className::notIn(const QVariant & val1, const QVariant & val2) { return static_cast<className &>(qx::QxSqlQuery::notIn(val1, val2)); } \
694className & className::notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3) { return static_cast<className &>(qx::QxSqlQuery::notIn(val1, val2, val3)); } \
695className & className::notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4) { return static_cast<className &>(qx::QxSqlQuery::notIn(val1, val2, val3, val4)); } \
696className & className::notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5) { return static_cast<className &>(qx::QxSqlQuery::notIn(val1, val2, val3, val4, val5)); } \
697className & className::notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6) { return static_cast<className &>(qx::QxSqlQuery::notIn(val1, val2, val3, val4, val5, val6)); } \
698className & className::notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7) { return static_cast<className &>(qx::QxSqlQuery::notIn(val1, val2, val3, val4, val5, val6, val7)); } \
699className & className::notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7, const QVariant & val8) { return static_cast<className &>(qx::QxSqlQuery::notIn(val1, val2, val3, val4, val5, val6, val7, val8)); } \
700className & className::notIn(const QVariant & val1, const QVariant & val2, const QVariant & val3, const QVariant & val4, const QVariant & val5, const QVariant & val6, const QVariant & val7, const QVariant & val8, const QVariant & val9) { return static_cast<className &>(qx::QxSqlQuery::notIn(val1, val2, val3, val4, val5, val6, val7, val8, val9)); } \
702className & className::in_Select(const QxSqlQuery & query) { return static_cast<className &>(qx::QxSqlQuery::in_Select(query)); } \
703className & className::notIn_Select(const QxSqlQuery & query) { return static_cast<className &>(qx::QxSqlQuery::notIn_Select(query)); } \
704className & className::isEqualTo_Select(const QxSqlQuery & query) { return static_cast<className &>(qx::QxSqlQuery::isEqualTo_Select(query)); } \
705className & className::isNotEqualTo_Select(const QxSqlQuery & query) { return static_cast<className &>(qx::QxSqlQuery::isNotEqualTo_Select(query)); } \
707className & className::isNull() { return static_cast<className &>(qx::QxSqlQuery::isNull()); } \
708className & className::isNotNull() { return static_cast<className &>(qx::QxSqlQuery::isNotNull()); } \
710className & className::isBetween(const QVariant & val1, const QVariant & val2) { return static_cast<className &>(qx::QxSqlQuery::isBetween(val1, val2)); } \
711className & className::isNotBetween(const QVariant & val1, const QVariant & val2) { return static_cast<className &>(qx::QxSqlQuery::isNotBetween(val1, val2)); } \
713className & className::freeText(const QString & text, const QVariantList & values) { return static_cast<className &>(qx::QxSqlQuery::freeText(text, values)); } \
715className & className::addJoinQuery(const QString & relationKeyOrAlias, const QxSqlQuery & joinQuery) { return static_cast<className &>(qx::QxSqlQuery::addJoinQuery(relationKeyOrAlias, joinQuery)); }
QxOrm thread-safe container (keep insertion order + quick access by index + quick access by key)
qx::cvt : namespace to provide global functions to convert any kind of objects to/from QString and QV...
#define QX_SERIALIZE_FAST_COMPIL_SAVE_LOAD_HPP(dllImportExport, className)
QX_DLL_EXPORT QDataStream & operator>>(QDataStream &stream, qx::QxSqlQuery &t) QX_USED
QX_DLL_EXPORT QDataStream & operator<<(QDataStream &stream, const qx::QxSqlQuery &t) QX_USED
Register a version number per class.
#define QX_CLASS_VERSION(C, V)
qx::QxCollection<Key, Value> : QxOrm thread-safe container (keep insertion order + quick access by in...
qx::QxSqlQuery : define a user SQL query added to default SQL query builded by QxOrm library,...
QxSqlQuery(const QString &type, const QString &query)
std::tuple< QVariant, QSql::ParamType > type_bind_value
QxSqlQuery(const QStringList &query)
QStringList m_sQuery
Query SQL with place-holder.
QHash< QString, std::shared_ptr< QxSqlQuery > > m_lstJoinQueryUser
List of SQL queries defined by user to add inside relationships joins (LEFT OUTER JOIN,...
long getSqlResultRowCount() const
void setResponse(const QVariant &v)
QxCollection< QString, type_bind_value > m_lstValue
Bind value in this array.
QVariant getSqlResultAt(long row, const QString &column, bool caseSensitive=false) const
virtual QxSqlQuery & distinct()
virtual QxSqlQuery & isBetween(const QVariant &val1, const QVariant &val2)
QxSqlQuery & addSqlIn(const QVariantList &values, qx::dao::detail::QxSqlIn::type type)
type_fct_on_before_sql_prepare m_fctOnBeforeSqlPrepare
Custom callback function to modify SQL query before preparing in database.
virtual QxSqlQuery & notIn(const QVariantList &values)
QList< std::shared_ptr< QxSqlQuery > > m_lstJoinQueryToResolve
List of SQL queries to resolve (in the right order) to add inside relationships joins (LEFT OUTER JOI...
QVariant m_vResponse
Can be used to store some responses (from MongoDB database for example in JSON format)
QxSqlQuery & addSqlCompare(const QVariant &val, qx::dao::detail::QxSqlCompare::type type, const QString &sCustomOperator=QString())
virtual QxSqlQuery & orderAsc(const QStringList &columns)
virtual QxSqlQuery & and_OpenParenthesis(const QString &column)
virtual QxSqlQuery & like(const QString &val)
virtual QxSqlQuery & where(const QString &column)
void resolveOutput(QSqlQuery &query, bool bFetchSqlResult)
virtual QxSqlQuery & where_OpenParenthesis(const QString &column)
virtual QxSqlQuery & or_OpenParenthesis(const QString &column)
std::function< void(QString &)> type_fct_on_before_sql_prepare
QVector< QVariant > getSqlResultAt(long row) const
QxSqlQuery(const QString &type, const QStringList &query)
virtual QxSqlQuery & isNotNull()
virtual QxSqlQuery & isLessThan(const QVariant &val)
virtual QxSqlQuery & in_Select(const QxSqlQuery &query)
QString queryAt(int idx) const
virtual QxSqlQuery & isNull()
virtual QxSqlQuery & isNotEqualTo(const QVariant &val)
virtual QxSqlQuery & orderDesc(const QStringList &columns)
QxSqlQuery & addSqlSort(const QStringList &columns, qx::dao::detail::QxSqlSort::type type)
QxSqlQuery & addSqlIsNull(qx::dao::detail::QxSqlIsNull::type type)
QVector< QString > getSqlResultAllColumns() const
void onBeforeSqlPrepare(QString &sql)
virtual QxSqlQuery & closeParenthesis()
QxSqlQuery & addSqlExpression(const QString &column, qx::dao::detail::QxSqlExpression::type type)
virtual QxSqlQuery & or_(const QString &column)
virtual QxSqlQuery & isGreaterThanOrEqualTo(const QVariant &val)
void queryAt(int idx, const QString &query)
QxSqlQuery & addEmbedQuery(const QxSqlQuery &query, qx::dao::detail::QxSqlEmbedQuery::type type, bool requirePreviousElement)
virtual QxSqlQuery & startsWith(const QString &val)
virtual QxSqlQuery & openParenthesis()
int m_iSqlElementIndex
Current index of SQL element.
virtual QxSqlQuery & notIn_Select(const QxSqlQuery &query)
virtual QxSqlQuery & addJoinQuery(const QString &relationKeyOrAlias, const QxSqlQuery &joinQuery)
QVariant boundValue(int iPosition) const
virtual QxSqlQuery & isEqualTo_Select(const QxSqlQuery &query)
QString m_sType
Query type (for example : 'aggregate' or 'cursor' for MongoDB database)
virtual QxSqlQuery & isNotBetween(const QVariant &val1, const QVariant &val2)
bool m_bDistinct
Replace SELECT by SELECT DISTINCT in SQL query.
void postProcess(QString &sql) const
QxSqlQuery & setFctOnBeforeSqlPrepare(type_fct_on_before_sql_prepare fct)
virtual QxSqlQuery & isNotEqualTo_Select(const QxSqlQuery &query)
void setType(const QString &s)
QVariant response() const
QxSqlQuery & addSqlIsBetween(const QVariant &val1, const QVariant &val2, qx::dao::detail::QxSqlIsBetween::type type)
std::shared_ptr< QxSqlResult > m_pSqlResult
All results returning by SQL query or stored procedure (after calling qx::dao::call_query function)
virtual QxSqlQuery & isLessThanOrEqualTo(const QVariant &val)
QxSqlQuery & addFreeText(const QString &text, const QVariantList &values)
virtual QxSqlQuery & isEqualTo(const QVariant &val)
QxSqlQuery & bind(const QVariant &vValue, QSql::ParamType paramType=QSql::In)
virtual QxSqlQuery & notLike(const QString &val)
QxSqlQuery(const QString &query, const QVariantList &values=QVariantList())
virtual QxSqlQuery & isGreaterThan(const QVariant &val)
int m_iParenthesisCount
Current parenthesis count.
virtual QxSqlQuery & and_(const QString &column)
virtual QxSqlQuery & in(const QVariantList &values)
QxSqlQuery & query(const QString &sQuery)
virtual QxSqlQuery & customOperator(const QString &sCustomOperator, const QVariant &val)
void verifyQuery() const QX_USED
QxSqlQuery(const char *query, const QVariantList &values=QVariantList())
virtual QxSqlQuery & freeText(const QString &text, const QVariantList &values=QVariantList())
void fetchSqlResult(QSqlQuery &query)
QxSqlQuery & bind(const QString &sKey, const QVariant &vValue, QSql::ParamType paramType=QSql::In)
virtual QxSqlQuery & limit(int rowsCount, int startRow=0, bool withTies=false)
qx::dao::detail::IxSqlElement_ptr m_pSqlElementTemp
Temporary SQL element.
QString getJoinQuery(const QString &relationKey, const QString &relationAlias)
QVariant getSqlResultAt(long row, long column) const
QVariant boundValue(const QString &sKey) const
virtual QxSqlQuery & endsWith(const QString &val)
void resolve(QSqlQuery &query, qx::QxCollection< QString, QVariantList > *pLstExecBatch=NULL) const
QList< qx::dao::detail::IxSqlElement_ptr > m_lstSqlElement
List of all SQL elements to build SQL query.
QString getJoinQueryHash()
virtual QxSqlQuery & containsString(const QString &val)
virtual QxSqlQuery & groupBy(const QStringList &columns)
long getSqlResultColumnCount() const
static void dumpBoundValues(const QSqlQuery &query)
qx::trait::get_class_name<T>::get() : return class name of type T under const char * format,...
#define QX_REGISTER_CLASS_NAME(className)
QX_DLL_EXPORT QSqlError call_query(qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)
qx::dao::call_query function can be used to call a custom SQL query or a stored procedure
QX_DLL_EXPORT QSqlError call_query_without_prepare(qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)
qx::dao::call_query_without_prepare function can be used to call a custom SQL query or a stored proce...
void qx_save(Archive &ar, const qx::QxSqlQuery &t, const unsigned int file_version)
void qx_load(Archive &ar, qx::QxSqlQuery &t, const unsigned int file_version)
QX_DLL_EXPORT QJsonValue QxConvert_ToJson_Helper(const qx::dao::detail::IxSqlElement &t, const QString &format) QX_USED
QX_DLL_EXPORT qx_bool QxConvert_FromJson_Helper(const QJsonValue &j, qx::dao::detail::IxSqlElement &t, const QString &format) QX_USED
std::shared_ptr< IxSqlElement > IxSqlElement_ptr
QX_DLL_EXPORT QSqlError call_query_helper(qx::QxSqlQuery &query, QSqlDatabase *pDatabase, bool bPrepare)
Database communication used by persistence engine (ORM - Object Relational Mapping)
Root namespace for all QxOrm library features.
QHash< QString, int > positionByKey
QVector< QVector< QVariant > > values
QHash< QString, int > positionByKeyUpper