commit d84c91e7b4dd1cf9f3566236d9f0b6388534bab2
Author: Christian Ehringfeld <c.ehringfeld@t-online.de>
Date:   Thu May 7 16:35:17 2015 +0200

    some stuff

diff --git a/EntityManager.pro b/EntityManager.pro
index a801134..de72c87 100644
--- a/EntityManager.pro
+++ b/EntityManager.pro
@@ -27,7 +27,9 @@ src/entity.h \
     src/querybuilder.h \
     src/schema/sqlitequerybuilder.h \
     src/relation.h \
-    src/entityinstancefactory.h
+    src/entityinstancefactory.h \
+    src/condition.h \
+    src/cache.h
 
 SOURCES += \
 src/entity.cpp \
@@ -42,7 +44,9 @@ src/entity.cpp \
     src/querybuilder.cpp \
     src/schema/sqlitequerybuilder.cpp \
     src/relation.cpp \
-    src/entityinstancefactory.cpp
+    src/entityinstancefactory.cpp \
+    src/condition.cpp \
+    src/cache.cpp
 
 unix {
     target.path = /usr/lib
diff --git a/src/cache.cpp b/src/cache.cpp
new file mode 100644
index 0000000..abad713
--- /dev/null
+++ b/src/cache.cpp
@@ -0,0 +1,6 @@
+#include "cache.h"
+using namespace CuteEntityManager;
+Cache::Cache() {
+
+}
+
diff --git a/src/cache.h b/src/cache.h
new file mode 100644
index 0000000..1c2a890
--- /dev/null
+++ b/src/cache.h
@@ -0,0 +1,11 @@
+#ifndef CACHE_H
+#define CACHE_H
+
+namespace CuteEntityManager {
+class Cache {
+  public:
+    Cache();
+};
+}
+
+#endif // CACHE_H
diff --git a/src/condition.cpp b/src/condition.cpp
new file mode 100644
index 0000000..1257e6e
--- /dev/null
+++ b/src/condition.cpp
@@ -0,0 +1,6 @@
+#include "condition.h"
+using namespace CuteEntityManager;
+Condition::Condition() {
+
+}
+
diff --git a/src/condition.h b/src/condition.h
new file mode 100644
index 0000000..b75c9f9
--- /dev/null
+++ b/src/condition.h
@@ -0,0 +1,11 @@
+#ifndef CONDITION_H
+#define CONDITION_H
+
+namespace CuteEntityManager {
+class Condition {
+  public:
+    Condition();
+};
+}
+
+#endif // CONDITION_H
diff --git a/src/entitymanager.cpp b/src/entitymanager.cpp
index b603fb8..9d81878 100644
--- a/src/entitymanager.cpp
+++ b/src/entitymanager.cpp
@@ -38,17 +38,25 @@ bool EntityManager::startup(QString version, QStringList toInitialize) {
     DatabaseMigration *dbm = new DatabaseMigration();
     QSharedPointer<Entity> ptrDbm = QSharedPointer<Entity>(dbm);
     QHash<QString, QVariant> map = QHash<QString, QVariant>();
+    bool ok = true;
     map.insert("version", version);
     if (this->findAllByAttributes(map, dbm->getTablename()).isEmpty()) {
         for (int var = 0; var < toInitialize.size(); ++var) {
-            QString c = toInitialize.at(var);
-            this->createTable(QSharedPointer<Entity>(EntityInstanceFactory::createInstance(c)));
+            if (ok) {
+                QString c = toInitialize.at(var);
+                ok = this->createTable(QSharedPointer<Entity>(EntityInstanceFactory::createInstance(c)));
+            } else {
+                break;
+            }
+        }
+        if (ok) {
+            dbm->setVersion(version);
+            dbm->setApplyTime(QDateTime::currentDateTime());
+            this->create(ptrDbm);
         }
-        dbm->setVersion(version);
-        dbm->setApplyTime(QDateTime::currentDateTime());
-        this->create(ptrDbm);
     }
     delete dbm;
+    return ok;
 }
 
 EntityManager::EntityManager(const QString &databaseType, QString databasename , QString hostname, QString username,
@@ -138,6 +146,10 @@ QList<QSharedPointer<Entity> > EntityManager::findEntityByAttributes(const QShar
     return this->convert(maps, entity.data()->getClassname());
 }
 
+bool EntityManager::create(QList<QSharedPointer<Entity> > entities) {
+
+}
+
 /**
  * @TODO insert Relations
  * @brief EntityManager::create
diff --git a/src/entitymanager.h b/src/entitymanager.h
index 5e971fa..8b1be9c 100644
--- a/src/entitymanager.h
+++ b/src/entitymanager.h
@@ -81,16 +81,32 @@ class EntityManager {
         e->setId(id);
         return this->findEntity(ptr);
     }
+    template<class T> QSharedPointer<Entity> findEntityByAttributes(QHash<QString, QString> attributes) {
+            auto list = this->findAllEntitiesByAttributes<T>(attributes,1,0);
+            if(list.isEmpty()) {
+                return QSharedPointer<Entity>();
+            }
+            return list.at(0);
+    }
+
+    template<class T> QList<QSharedPointer<Entity>> findAllEntitiesByAttributes(QHash<QString, QString> attributes = QHash<QString, QString>(),quint32 limit = 0, quint32 offset = 0) {
+
+    }
 
+    bool create(QList<QSharedPointer<Entity>> entities);
     bool create(QSharedPointer<Entity> &entity);
     bool save(QSharedPointer<Entity> &entity);
     qint64 findId(QSharedPointer<Entity> &entity);
     bool merge(QSharedPointer<Entity> &entity, bool withRelations = true);
+    template<class T> bool remove(QList<qint64> ids) {
+
+    }
     bool remove(QSharedPointer<Entity> &entity);
     bool removeAll(QString tblname);
     bool createTable(const QSharedPointer<Entity> &entity);
     qint8 count(const QSharedPointer<Entity> &entity, bool ignoreID = true);
     qint8 count(const QString &tableName);
+    //template<class T> count(QHash<QString, QString> condition = QHash<QString, QString>());
     QSharedPointer<Database> getDb() const;
     void setDb(const QSharedPointer<Database> &value);
     QSharedPointer<Schema> getSchema() const;
