QxOrm 1.4.9
C++ Object Relational Mapping library
Loading...
Searching...
No Matches

qx::QxDaoAsync : helper class to execute SQL queries in another thread (asynchronous way) using qx::IxPersistable interface More...

#include <QxDaoAsync.h>

Inheritance diagram for qx::QxDaoAsync:

Signals

void queryStarted (qx::dao::detail::QxDaoAsyncParams_ptr pDaoParams)
 
void queryFinished (const QSqlError &daoError, qx::dao::detail::QxDaoAsyncParams_ptr pDaoParams)
 

Public Member Functions

 QxDaoAsync ()
 
virtual ~QxDaoAsync ()
 
bool asyncCount (const QString &className, const qx::QxSqlQuery &query=qx::QxSqlQuery(), QSqlDatabase *pDatabase=NULL)
 
bool asyncFetchById (IxPersistable_ptr pToFetch, const QVariant &id=QVariant(), const QStringList &columns=QStringList(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 
bool asyncFetchAll (const QString &className, const QStringList &columns=QStringList(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 
bool asyncFetchByQuery (const QString &className, const qx::QxSqlQuery &query, const QStringList &columns=QStringList(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 
bool asyncInsert (IxPersistable_ptr pToInsert, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 
bool asyncUpdate (IxPersistable_ptr pToUpdate, const qx::QxSqlQuery &query=qx::QxSqlQuery(), const QStringList &columns=QStringList(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 
bool asyncSave (IxPersistable_ptr pToSave, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 
bool asyncDeleteById (IxPersistable_ptr pToDelete, const QVariant &id=QVariant(), QSqlDatabase *pDatabase=NULL)
 
bool asyncDeleteAll (const QString &className, QSqlDatabase *pDatabase=NULL)
 
bool asyncDeleteByQuery (const QString &className, const qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)
 
bool asyncDestroyById (IxPersistable_ptr pToDestroy, const QVariant &id=QVariant(), QSqlDatabase *pDatabase=NULL)
 
bool asyncDestroyAll (const QString &className, QSqlDatabase *pDatabase=NULL)
 
bool asyncDestroyByQuery (const QString &className, const qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)
 
bool asyncExecuteQuery (const QString &className, qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)
 
bool asyncCallQuery (qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)
 
bool isQueryRunning () const
 

Protected Member Functions

virtual void run ()
 
void startQuery ()
 

Protected Attributes

QMutex m_mutex
 Mutex => qx::QxDaoAsync is thread-safe.
 
qx::dao::detail::QxDaoAsyncParams_ptr m_pDaoParams
 Parameters to execute query.
 

Private Slots

void onQueryFinished (const QSqlError &daoError, qx::dao::detail::QxDaoAsyncParams_ptr pDaoParams)
 

Detailed Description

qx::QxDaoAsync : helper class to execute SQL queries in another thread (asynchronous way) using qx::IxPersistable interface

To use qx::QxDaoAsync helper class : 1- be careful to work only with classes implementing qx::IxPersistable interface ; 2- create an instance of qx::QxDaoAsync type (for example, a property of a QWidget derived class) ; 3- connect a SLOT to the qx::QxDaoAsync::queryFinished() SIGNAL (for example, a SLOT of a QWidget derived class) ; 4- run a query using one of qx::QxDaoAsync::asyncXXXX() methods.

For example, with a MyWidget class :

class MyWidget : public QWidget
{
Q_OBJECT
//...
qx::QxDaoAsync m_daoAsync;
//...
Q_SLOTS:
void onQueryFinished(const QSqlError & daoError, qx::dao::detail::QxDaoAsyncParams_ptr pDaoParams);
//...
};
qx::QxDaoAsync : helper class to execute SQL queries in another thread (asynchronous way) using qx::I...
Definition QxDaoAsync.h:171
std::shared_ptr< QxDaoAsyncParams > QxDaoAsyncParams_ptr
Definition QxDaoAsync.h:93

And here is the implementation of MyWidget class :

MyWidget::MyWidget() : QObject()
{
//...
QObject::connect((& m_daoAsync), SIGNAL(queryFinished(const QSqlError &, qx::dao::detail::QxDaoAsyncParams_ptr)), this, SLOT(onQueryFinished(const QSqlError &, qx::dao::detail::QxDaoAsyncParams_ptr)));
//...
}
void MyWidget::onQueryFinished(const QSqlError & daoError, qx::dao::detail::QxDaoAsyncParams_ptr pDaoParams)
{
if (! pDaoParams) { return; }
qx::QxSqlQuery query = pDaoParams->query;
if (! daoError.isValid()) { ; }
// If the async query is associated to a simple object, just use 'pDaoParams->pInstance' method
qx::IxPersistable_ptr ptr = pDaoParams->pInstance;
// If the async query is associated to a list of objects, just use 'pDaoParams->pListOfInstances' method
qx::IxPersistableCollection_ptr lst = pDaoParams->pListOfInstances;
//...
}
qx::QxSqlQuery : define a user SQL query added to default SQL query builded by QxOrm library,...
Definition QxSqlQuery.h:245
QString query()
std::shared_ptr< qx::IxPersistableCollection > IxPersistableCollection_ptr
std::shared_ptr< qx::IxPersistable > IxPersistable_ptr

Definition at line 170 of file QxDaoAsync.h.

Constructor & Destructor Documentation

◆ QxDaoAsync()

qx::QxDaoAsync::QxDaoAsync ( )

◆ ~QxDaoAsync()

virtual qx::QxDaoAsync::~QxDaoAsync ( )
virtual

Member Function Documentation

◆ asyncCallQuery()

bool qx::QxDaoAsync::asyncCallQuery ( qx::QxSqlQuery & query,
QSqlDatabase * pDatabase = NULL )

◆ asyncCount()

bool qx::QxDaoAsync::asyncCount ( const QString & className,
const qx::QxSqlQuery & query = qx::QxSqlQuery(),
QSqlDatabase * pDatabase = NULL )

◆ asyncDeleteAll()

bool qx::QxDaoAsync::asyncDeleteAll ( const QString & className,
QSqlDatabase * pDatabase = NULL )

◆ asyncDeleteById()

bool qx::QxDaoAsync::asyncDeleteById ( IxPersistable_ptr pToDelete,
const QVariant & id = QVariant(),
QSqlDatabase * pDatabase = NULL )

◆ asyncDeleteByQuery()

bool qx::QxDaoAsync::asyncDeleteByQuery ( const QString & className,
const qx::QxSqlQuery & query,
QSqlDatabase * pDatabase = NULL )

◆ asyncDestroyAll()

bool qx::QxDaoAsync::asyncDestroyAll ( const QString & className,
QSqlDatabase * pDatabase = NULL )

◆ asyncDestroyById()

bool qx::QxDaoAsync::asyncDestroyById ( IxPersistable_ptr pToDestroy,
const QVariant & id = QVariant(),
QSqlDatabase * pDatabase = NULL )

◆ asyncDestroyByQuery()

bool qx::QxDaoAsync::asyncDestroyByQuery ( const QString & className,
const qx::QxSqlQuery & query,
QSqlDatabase * pDatabase = NULL )

◆ asyncExecuteQuery()

bool qx::QxDaoAsync::asyncExecuteQuery ( const QString & className,
qx::QxSqlQuery & query,
QSqlDatabase * pDatabase = NULL )

◆ asyncFetchAll()

bool qx::QxDaoAsync::asyncFetchAll ( const QString & className,
const QStringList & columns = QStringList(),
const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL )

◆ asyncFetchById()

bool qx::QxDaoAsync::asyncFetchById ( IxPersistable_ptr pToFetch,
const QVariant & id = QVariant(),
const QStringList & columns = QStringList(),
const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL )

◆ asyncFetchByQuery()

bool qx::QxDaoAsync::asyncFetchByQuery ( const QString & className,
const qx::QxSqlQuery & query,
const QStringList & columns = QStringList(),
const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL )

◆ asyncInsert()

bool qx::QxDaoAsync::asyncInsert ( IxPersistable_ptr pToInsert,
const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL )

◆ asyncSave()

bool qx::QxDaoAsync::asyncSave ( IxPersistable_ptr pToSave,
const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL )

◆ asyncUpdate()

bool qx::QxDaoAsync::asyncUpdate ( IxPersistable_ptr pToUpdate,
const qx::QxSqlQuery & query = qx::QxSqlQuery(),
const QStringList & columns = QStringList(),
const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL )

◆ isQueryRunning()

bool qx::QxDaoAsync::isQueryRunning ( ) const
inline

Definition at line 201 of file QxDaoAsync.h.

◆ onQueryFinished

void qx::QxDaoAsync::onQueryFinished ( const QSqlError & daoError,
qx::dao::detail::QxDaoAsyncParams_ptr pDaoParams )
privateslot

◆ queryFinished

void qx::QxDaoAsync::queryFinished ( const QSqlError & daoError,
qx::dao::detail::QxDaoAsyncParams_ptr pDaoParams )
signal

◆ queryStarted

void qx::QxDaoAsync::queryStarted ( qx::dao::detail::QxDaoAsyncParams_ptr pDaoParams)
signal

◆ run()

virtual void qx::QxDaoAsync::run ( )
protectedvirtual

◆ startQuery()

void qx::QxDaoAsync::startQuery ( )
protected

Member Data Documentation

◆ m_mutex

QMutex qx::QxDaoAsync::m_mutex
protected

Mutex => qx::QxDaoAsync is thread-safe.

Definition at line 177 of file QxDaoAsync.h.

◆ m_pDaoParams

qx::dao::detail::QxDaoAsyncParams_ptr qx::QxDaoAsync::m_pDaoParams
protected

Parameters to execute query.

Definition at line 178 of file QxDaoAsync.h.


The documentation for this class was generated from the following file: