commit 0e3a3d7fd6c50bc6a7077f16a734f496bc36fd1b
Author: Christian Ehringfeld <c.ehringfeld@t-online.de>
Date:   Sat Jun 27 17:13:02 2015 +0200

    refactoring

diff --git a/src/querybuilder.cpp b/src/querybuilder.cpp
index 45f1d5d..9beaf26 100644
--- a/src/querybuilder.cpp
+++ b/src/querybuilder.cpp
@@ -629,29 +629,28 @@ QSqlQuery QueryBuilder::count(const QString &tableName) const {
     return q;
 }
 
-//@TODO Looks like create() - Refactor code
 QList<QSqlQuery> QueryBuilder::merge(const QSharedPointer<Entity> &entity)
 const {
+    return this->createOrMerge(entity, false);
+}
+
+
+QList<QSqlQuery> QueryBuilder::createOrMerge(const QSharedPointer<Entity>
+        &entity, bool insert) const {
     auto attrs = this->inheritedAttributes(entity);
     auto queries = QList<QSqlQuery>();
     for (int var = 0; var < attrs.size(); ++var) {
         auto attr = attrs.at(var);
         auto attrHash = attr.getAttributes();
-        queries.append(this->update(attr.getName(), attrHash, attr.getPk()));
+        queries.append(insert ? this->insert(attr.getName(), attrHash,
+                                             attr.getPk()) : this->update(attr.getName(), attrHash, attr.getPk()));
     }
     return queries;
 }
 
 QList<QSqlQuery> QueryBuilder::create(const QSharedPointer<Entity> &entity)
 const {
-    auto attrs = this->inheritedAttributes(entity);
-    auto queries = QList<QSqlQuery>();
-    for (int var = 0; var < attrs.size(); ++var) {
-        auto attr = attrs.at(var);
-        auto attrHash = attr.getAttributes();
-        queries.append(this->insert(attr.getName(), attrHash, attr.getPk()));
-    }
-    return queries;
+    return this->createOrMerge(entity, true);
 }
 
 QSqlQuery QueryBuilder::insert(const QString &tableName,
@@ -1024,4 +1023,3 @@ QString QueryBuilder::ClassAttributes::getPk() const {
 void QueryBuilder::ClassAttributes::setPk(const QString &value) {
     pk = value;
 }
-
diff --git a/src/querybuilder.h b/src/querybuilder.h
index 8ca7f08..3750b91 100644
--- a/src/querybuilder.h
+++ b/src/querybuilder.h
@@ -164,6 +164,7 @@ class QueryBuilder {
                      const QString &primaryKey = "id") const;
     QSqlQuery update(const QString &tableName, QHash<QString, QVariant> &attributes,
                      const QString &primaryKey = "id") const;
+    QList<QSqlQuery> createOrMerge(const QSharedPointer<Entity> &entity, bool insert) const;
     virtual void createRelationFK(QStringList &queries,
                                   const QSharedPointer<Entity> &entity, const Relation &relation,
                                   const QMetaProperty &metaProperty, const QString &update,
