| QxOrm 1.4.8 C++ Object Relational Mapping library

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Directories

- File List
- File Members

IxSqlGenerator.h
Go to the documentation of this file.

    00001 /****************************************************************************
    00002 **
    00003 ** https://www.qxorm.com/
    00004 ** Copyright (C) 2013 Lionel Marty (contact@qxorm.com)
    00005 **
    00006 ** This file is part of the QxOrm library
    00007 **
    00008 ** This software is provided 'as-is', without any express or implied
    00009 ** warranty. In no event will the authors be held liable for any
    00010 ** damages arising from the use of this software
    00011 **
    00012 ** Commercial Usage
    00013 ** Licensees holding valid commercial QxOrm licenses may use this file in
    00014 ** accordance with the commercial license agreement provided with the
    00015 ** Software or, alternatively, in accordance with the terms contained in
    00016 ** a written agreement between you and Lionel Marty
    00017 **
    00018 ** GNU General Public License Usage
    00019 ** Alternatively, this file may be used under the terms of the GNU
    00020 ** General Public License version 3.0 as published by the Free Software
    00021 ** Foundation and appearing in the file 'license.gpl3.txt' included in the
    00022 ** packaging of this file. Please review the following information to
    00023 ** ensure the GNU General Public License version 3.0 requirements will be
    00024 ** met : http://www.gnu.org/copyleft/gpl.html
    00025 **
    00026 ** If you are unsure which license is appropriate for your use, or
    00027 ** if you have questions regarding the use of this file, please contact :
    00028 ** contact@qxorm.com
    00029 **
    00030 ****************************************************************************/
    00031
    00032 #ifndef _IX_SQL_GENERATOR_H_
    00033 #define _IX_SQL_GENERATOR_H_
    00034
    00035 #ifdef _MSC_VER
    00036 #pragma once
    00037 #endif
    00038
    00046 #include <QtSql/qsqlquery.h>
    00047
    00048 namespace qx {
    00049 namespace dao {
    00050 namespace detail {
    00051
    00052 class IxDao_Helper;
    00053 class IxSqlElement;
    00054 class QxSqlCompare;
    00055 class QxSqlElementTemp;
    00056 class QxSqlEmbedQuery;
    00057 class QxSqlExpression;
    00058 class QxSqlFreeText;
    00059 class QxSqlIn;
    00060 class QxSqlIsBetween;
    00061 class QxSqlIsNull;
    00062 class QxSqlLimit;
    00063 class QxSqlSort;
    00064
    00069 class QX_DLL_EXPORT IxSqlGenerator
    00070 {
    00071
    00072 public:
    00073
    00074    IxSqlGenerator();
    00075    virtual ~IxSqlGenerator();
    00076
    00077    virtual void init() = 0;
    00078    virtual QString getAutoIncrement() const = 0;
    00079    virtual QString getWildCard() const = 0;
    00080    virtual QString getTableAliasSep() const = 0;
    00081    virtual QString getLimit(const QxSqlLimit * pLimit) const = 0;
    00082    virtual void resolveLimit(QSqlQuery & query, const QxSqlLimit * pLimit) const = 0;
    00083    virtual void postProcess(QString & sql, const QxSqlLimit * pLimit) const = 0;
    00084    virtual void onBeforeInsert(IxDao_Helper * pDaoHelper, void * pOwner) const = 0;
    00085    virtual void onAfterInsert(IxDao_Helper * pDaoHelper, void * pOwner) const = 0;
    00086    virtual void onBeforeUpdate(IxDao_Helper * pDaoHelper, void * pOwner) const = 0;
    00087    virtual void onAfterUpdate(IxDao_Helper * pDaoHelper, void * pOwner) const = 0;
    00088    virtual void onBeforeDelete(IxDao_Helper * pDaoHelper, void * pOwner) const = 0;
    00089    virtual void onAfterDelete(IxDao_Helper * pDaoHelper, void * pOwner) const = 0;
    00090    virtual void checkSqlInsert(IxDao_Helper * pDaoHelper, QString & sql) const = 0;
    00091    virtual void onBeforeSqlPrepare(IxDao_Helper * pDaoHelper, QString & sql) const = 0;
    00092    virtual void formatSqlQuery(IxDao_Helper * pDaoHelper, QString & sql) const = 0;
    00093
    00094 };
    00095
    00096 typedef std::shared_ptr<IxSqlGenerator> IxSqlGenerator_ptr;
    00097
    00098 } // namespace detail
    00099 } // namespace dao
    00100 } // namespace qx
    00101
    00102 #endif // _IX_SQL_GENERATOR_H_