You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.5 KiB

3 days ago
#ifndef REPOSITORY_H
#define REPOSITORY_H
#include <QSharedPointer>
#include <QxOrm.h>
template<typename T>
class Repository
{
public:
/**
* @brief create
* @param ptr
* @return
*/
static bool create(QSharedPointer<T> ptr)
{
qx::QxSqlQuery query("ORDER BY id DESC LIMIT 1");
T entity;
qx::dao::fetch_by_query(query, entity);
ptr->id = entity.id + 1;
QSqlError err = qx::dao::insert(ptr);
return !err.isValid();
}
/**
* @brief update
* @param ptr
* @return
*/
static bool update(QSharedPointer<T> ptr)
{
QSqlError err = qx::dao::update(ptr);
return !err.isValid();
}
/**
* @brief deleteById id
* @param id id
* @return
*/
static bool deleteById(long id)
{
QSharedPointer<T> ptr;
ptr.reset(new T());
ptr->id = id;
QSqlError err = qx::dao::delete_by_id(ptr);
return !err.isValid();
}
/**
* @brief findById id
* @param id id
* @return
*/
static QSharedPointer<T> findById(long id)
{
QSharedPointer<T> ptr;
ptr.reset(new T());
ptr->id = id;
2 days ago
QSqlError err = qx::dao::fetch_by_id(ptr);
if (err.isValid()) {
ptr.reset(new T());
}
3 days ago
return ptr;
};
};
#endif // REPOSITORY_H