QxOrm 1.4.9
C++ Object Relational Mapping library
Loading...
Searching...
No Matches
QxSqlRelationLinked.h
Go to the documentation of this file.
1/****************************************************************************
2**
3** https://www.qxorm.com/
4** Copyright (C) 2013 Lionel Marty (contact@qxorm.com)
5**
6** This file is part of the QxOrm library
7**
8** This software is provided 'as-is', without any express or implied
9** warranty. In no event will the authors be held liable for any
10** damages arising from the use of this software
11**
12** Commercial Usage
13** Licensees holding valid commercial QxOrm licenses may use this file in
14** accordance with the commercial license agreement provided with the
15** Software or, alternatively, in accordance with the terms contained in
16** a written agreement between you and Lionel Marty
17**
18** GNU General Public License Usage
19** Alternatively, this file may be used under the terms of the GNU
20** General Public License version 3.0 as published by the Free Software
21** Foundation and appearing in the file 'license.gpl3.txt' included in the
22** packaging of this file. Please review the following information to
23** ensure the GNU General Public License version 3.0 requirements will be
24** met : http://www.gnu.org/copyleft/gpl.html
25**
26** If you are unsure which license is appropriate for your use, or
27** if you have questions regarding the use of this file, please contact :
28** contact@qxorm.com
29**
30****************************************************************************/
31
32#ifndef _QX_SQL_RELATION_LINKED_H_
33#define _QX_SQL_RELATION_LINKED_H_
34
35#ifdef _MSC_VER
36#pragma once
37#endif
38
46#include <QtSql/qsqlerror.h>
47
48#include <QxCommon/QxBool.h>
49
50#include <QxDao/IxSqlRelation.h>
51
53
54namespace qx {
55namespace dao {
56namespace detail {
57
58class IxDao_Helper;
59
60} // namespace detail
61} // namespace dao
62} // namespace qx
63
64namespace qx {
65
66class IxClass;
67
95{
96
97public:
98
99 typedef std::shared_ptr<QxSqlRelationLinked> type_ptr;
100 typedef std::tuple<qx::dao::sql_join::join_type, IxSqlRelation *, QPair<QSet<QString>, long>, QString, bool> type_relation;
102 typedef QHash<QString, type_ptr> type_lst_relation_linked;
103
104private:
105
106 struct QxSqlRelationLinkedImpl;
107 std::unique_ptr<QxSqlRelationLinkedImpl> m_pImpl;
108
109public:
110
114
115 static type_ptr getHierarchy(IxClass * pClass, const QStringList & sRelationX, qx_bool & bOk, qx::dao::detail::IxDao_Helper * pDaoHelper = NULL);
116
125
128 long getRelationCount() const;
129 bool existRelation(const QString & sKey) const;
132
133 bool isRoot() const;
134 bool checkRootColumns(const QString & s) const;
138 QString getRootCustomAlias() const;
139
140protected:
141
143
144};
145
146typedef std::shared_ptr<QxSqlRelationLinked> QxSqlRelationLinked_ptr;
147
148} // namespace qx
149
150#endif // _QX_SQL_RELATION_LINKED_H_
Common interface for all relationships defined between 2 classes (or between 2 tables in database)
qx_bool : QxOrm library boolean type with code and description message when an error occured
QxOrm thread-safe container (keep insertion order + quick access by index + quick access by key)
#define QX_DLL_EXPORT
Definition QxMacro.h:182
qx::IxClass : common interface for all classes registered into QxOrm context
Definition IxClass.h:69
qx_bool : boolean type with code and description message when an error occured
Definition QxBool.h:71
qx::QxCollection<Key, Value> : QxOrm thread-safe container (keep insertion order + quick access by in...
qx::QxSqlRelationLinked : hierarchy of relationships to build SQL query
long getRootColumnsCount() const
bool checkRootColumns(const QString &s) const
std::unique_ptr< QxSqlRelationLinkedImpl > m_pImpl
Private implementation idiom.
void hierarchyJoin(QxSqlRelationParams &params)
void setRootColumnsOffset(long l)
void hierarchySelect(QxSqlRelationParams &params)
type_lst_relation_linked getRelationLinkedX() const
std::shared_ptr< QxSqlRelationLinked > type_ptr
void hierarchyWhereSoftDelete(QxSqlRelationParams &params)
bool isValidDaoHelper(QxSqlRelationParams &params) const
void hierarchyFrom(QxSqlRelationParams &params)
QSqlError hierarchyOnBeforeSave(QxSqlRelationParams &params)
void updateOffset(QxSqlRelationParams &params)
static type_ptr getHierarchy(IxClass *pClass, const QStringList &sRelationX, qx_bool &bOk, qx::dao::detail::IxDao_Helper *pDaoHelper=NULL)
QSqlError hierarchyOnAfterSave(QxSqlRelationParams &params)
bool getCartesianProduct() const
qx::QxCollection< QString, type_relation > type_lst_relation
bool existRelation(const QString &sKey) const
QxSqlRelationLinked(bool bRoot)
virtual ~QxSqlRelationLinked()
type_lst_relation getRelationX() const
long getAllRelationCount() const
QString getRootCustomAlias() const
QHash< QString, type_ptr > type_lst_relation_linked
long getRelationCount() const
void hierarchyResolveOutput(QxSqlRelationParams &params)
long getRootColumnsOffset() const
std::tuple< qx::dao::sql_join::join_type, IxSqlRelation *, QPair< QSet< QString >, long >, QString, bool > type_relation
qx::QxSqlRelationParams : define list of parameters to transfer to relationships to manage SQL querie...
qx::dao::detail::IxDao_Helper : helper class to communicate with database
Root namespace for all QxOrm library features.
std::shared_ptr< QxSqlRelationLinked > QxSqlRelationLinked_ptr