Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision c9f21778

Von Christian Ehringfeld vor mehr als 8 Jahren hinzugefügt

  • ID c9f217782e289331ba37da5aa32043f4a00e31f7
  • Vorgänger 9e44a59b
  • Nachfolger 12a65aab

fixes

Unterschiede anzeigen:

src/entitymanager.h
static QStringList getConnectionNames();
QSharedPointer<QueryBuilder> getQueryBuilder() const;
template<class T> QList<QSharedPointer<T>> find(Query &q) {
template<class T> QList<QSharedPointer<T>> find(Query &q,
const bool joinBaseClasses = false, const bool resolveRelations = true) {
QSharedPointer<Entity> ptr = QSharedPointer<Entity>
(EntityInstanceFactory::createInstance<T *>());
if (ptr) {
if (q.getFrom().isEmpty()) {
q.setFrom(QStringList(ptr->getTablename()));
}
if (joinBaseClasses) {
q.appendJoins(this->schema->getQueryBuilder()->joinBaseClasses(ptr));
}
QSqlQuery query = this->queryInterpreter->build(q);
auto maps = this->convertQueryResult(query);
auto converted = this->convert(maps, EntityHelper::getClassname(ptr.data()));
auto converted = this->convert(maps, EntityHelper::getClassname(ptr.data()),
resolveRelations);
return this->convertList<T>(converted);
}
return QList<QSharedPointer<T>>();
}
template<class T> QList<QSharedPointer<T>> findAll() {
template<class T> QList<QSharedPointer<T>> findAll(const bool resolveRelations =
true) {
QSharedPointer<Entity> ptr = QSharedPointer<Entity>
(EntityInstanceFactory::createInstance<T *>());
if (ptr) {
auto maps = this->findAll(ptr);
auto converted = this->convert(maps, EntityHelper::getClassname(ptr.data()));
auto converted = this->convert(maps, EntityHelper::getClassname(ptr.data()),
resolveRelations);
return this->convertList<T>(converted);
}
return QList<QSharedPointer<T>>();
......
return this->findById(id, ptr).objectCast<T>();
}
template<class T> QSharedPointer<T> findEntityByAttributes(
template<class T>
QSharedPointer<T> findEntityByAttributes(
const QHash<QString, QVariant>
&attributes) {
auto list = this->findAllEntitiesByAttributes<T>(attributes, 1, 0);
&attributes, const bool joinBaseClasses = false,
const bool resolveRelations = true) {
auto list = this->findAllEntitiesByAttributes<T>(attributes, 1, 0,
joinBaseClasses, resolveRelations);
if (list.isEmpty()) {
return QSharedPointer<T>();
}
......
template<class T> QList<QSharedPointer<T>> findAllEntitiesByAttributes(
const QHash<QString, QVariant> &attributes =
QHash<QString, QString>(), quint64 limit = 0, quint64 offset = 0) {
QHash<QString, QString>(), quint64 limit = 0, quint64 offset = 0,
bool joinBaseClasses = false, const bool resolveRelations = true) {
QSharedPointer<Entity> e = QSharedPointer<Entity>
(EntityInstanceFactory::createInstance<T *>());
(EntityInstanceFactory::createInstance<T *>());
if (e) {
Query query = Query(QStringList(e->getTablename()));
if (joinBaseClasses) {
query.appendJoins(this->schema->getQueryBuilder()->joinBaseClasses(e));
}
query.appendWhere(this->schema->getQueryBuilder()->where(attributes));
query.setLimit(limit);
query.setOffset(offset);
QSqlQuery q = this->queryInterpreter->build(query);
auto results = this->convertQueryResult(q);
auto list = this->convert(results, EntityHelper::getClassname(e.data()));
auto list = this->convert(results, EntityHelper::getClassname(e.data()),
resolveRelations);
return this->convertList<T>(list);
}
return QList<QSharedPointer<T>>();
......
void setNullOneToManyRelation(QVariant &var, const Relation &r);
void setNullEntityPropertyRelation(QVariant &var, const Relation &r);
QSharedPointer<Entity> convert(const QHash<QString, QVariant> &map,
const char *classname, const bool refresh = false);
const char *classname, const bool refresh = false,
const bool resolveRelations = true);
QList<QSharedPointer<Entity>> convert(QList<QHash<QString, QVariant> > maps,
const char *classname, const bool refresh = false);
const char *classname, const bool refresh = false,
const bool resolveRelations = true);
void missingManyToManyTable(const QString &tblName,
const QSharedPointer<Entity> &e, const Relation &r);
bool isRelationPropertyValid(const QMetaProperty &prop, const Relation &r,

Auch abrufbar als: Unified diff