32#ifndef _IX_SQL_ELEMENT_H_
33#define _IX_SQL_ELEMENT_H_
46#ifdef _QX_ENABLE_BOOST_SERIALIZATION
47#include <boost/serialization/serialization.hpp>
48#include <boost/serialization/split_free.hpp>
49#include <boost/serialization/nvp.hpp>
52#include <QtCore/qdatastream.h>
55#include <QtCore/qjsonvalue.h>
58#include <QtSql/qsqlquery.h>
85template <>
struct QxConvert_ToJson<
qx::dao::detail::IxSqlElement >;
86template <> struct QxConvert_FromJson< qx::dao::detail::IxSqlElement >;
118 _sql_in, _sql_is_between, _sql_is_null, _sql_limit, _sql_sort, _sql_embed_query };
146#ifdef _QX_ENABLE_BOOST_SERIALIZATION
147 template <
class Archive>
150 QString sExtraSettings = getExtraSettings();
151 ar << boost::serialization::make_nvp(
"index", m_iIndex);
152 ar << boost::serialization::make_nvp(
"list_columns", m_lstColumns);
153 ar << boost::serialization::make_nvp(
"list_keys", m_lstKeys);
154 ar << boost::serialization::make_nvp(
"list_values", m_lstValues);
155 ar << boost::serialization::make_nvp(
"extra_settings", sExtraSettings);
159#ifdef _QX_ENABLE_BOOST_SERIALIZATION
160 template <
class Archive>
163 QString sExtraSettings;
164 ar >> boost::serialization::make_nvp(
"index", m_iIndex);
165 ar >> boost::serialization::make_nvp(
"list_columns", m_lstColumns);
166 ar >> boost::serialization::make_nvp(
"list_keys", m_lstKeys);
167 ar >> boost::serialization::make_nvp(
"list_values", m_lstValues);
168 ar >> boost::serialization::make_nvp(
"extra_settings", sExtraSettings);
169 setExtraSettings(sExtraSettings);
QX_DLL_EXPORT QDataStream & operator>>(QDataStream &stream, qx::dao::detail::IxSqlElement &t) QX_USED
QX_DLL_EXPORT QDataStream & operator<<(QDataStream &stream, const qx::dao::detail::IxSqlElement &t) QX_USED
Common interface for all SQL generators to build SQL query specific for each database.
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...
qx_bool : boolean type with code and description message when an error occured
qx::QxCollection<Key, Value> : QxOrm thread-safe container (keep insertion order + quick access by in...
qx::dao::detail::IxSqlElement : common interface for all SQL elements to build SQL query
void setColumns(const QStringList &columns)
void setValue(const QVariant &val)
void setColumn(const QString &column)
void qxSave(Archive &ar) const
virtual void resolve(QSqlQuery &query, qx::QxCollection< QString, QVariantList > *pLstExecBatch=NULL) const =0
QStringList m_lstColumns
List of columns associated to SQL element.
virtual void clone(IxSqlElement *other)
int m_iIndex
Index of SQL element to build unique string.
QStringList m_lstKeys
List of keys associated to SQL element.
void setValues(const QVariantList &values)
IxSqlGenerator * m_pSqlGenerator
SQL generator to build SQL query specific for each database.
virtual void postProcess(QString &sql) const =0
virtual QString getExtraSettings() const =0
virtual IxSqlElement::type_class getTypeClass() const =0
virtual QString toString() const =0
QList< QVariant > m_lstValues
List of values associated to SQL element.
virtual void setExtraSettings(const QString &s)=0
qx::dao::detail::IxSqlGenerator : common interface for all SQL generators to build SQL query specific...
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 IxSqlElement_ptr create_sql_element(IxSqlElement::type_class e) QX_USED
Root namespace for all QxOrm library features.