Revision 24c5480c
Von Christian Ehringfeld vor mehr als 10 Jahren hinzugefügt
| EntityManager.pro | ||
|---|---|---|
|     src/schema/mysqlschema.h \
 | ||
|     src/databasemigration.h \
 | ||
|     src/querybuilder.h \
 | ||
|     src/schema/sqlitequerybuilder.h
 | ||
|     src/schema/sqlitequerybuilder.h \
 | ||
|     src/relation.h
 | ||
|  | ||
| SOURCES += \
 | ||
| src/entity.cpp \
 | ||
| ... | ... | |
|     src/schema/mysqlschema.cpp \
 | ||
|     src/databasemigration.cpp \
 | ||
|     src/querybuilder.cpp \
 | ||
|     src/schema/sqlitequerybuilder.cpp
 | ||
|     src/schema/sqlitequerybuilder.cpp \
 | ||
|     src/relation.cpp
 | ||
|  | ||
| unix {
 | ||
|     target.path = /usr/lib
 | ||
| src/entity.cpp | ||
|---|---|---|
|     return QString(this->metaObject()->className());
 | ||
| }
 | ||
|  | ||
| QList<Relation> Entity::getRelations() {
 | ||
|     return QList<Relation>();
 | ||
| }
 | ||
|  | ||
| QStringList Entity::getTransientAttributes() {
 | ||
|     return QStringList();
 | ||
| }
 | ||
| qint64 Entity::getId() const
 | ||
|  | ||
| QStringList Entity::getBLOBColumns() {
 | ||
|     return QStringList();
 | ||
| }
 | ||
|  | ||
| QString Entity::getPrimaryKey() {
 | ||
|     return "id";
 | ||
| }
 | ||
| qint32 Entity::getId() const
 | ||
| {
 | ||
|     return id;
 | ||
| }
 | ||
|  | ||
| void Entity::setId(const qint64 &value)
 | ||
| void Entity::setId(const qint32 &value)
 | ||
| {
 | ||
|     id = value;
 | ||
| }
 | ||
|  | ||
| src/entity.h | ||
|---|---|---|
| #include <QDebug>
 | ||
| #include <QObject>
 | ||
| #include "enums/databasetype.h"
 | ||
| #include "relation.h"
 | ||
| #include <QStringList>
 | ||
| namespace CuteEntityManager {
 | ||
|  | ||
| class Entity : public QObject {
 | ||
|     Q_OBJECT
 | ||
|     Q_PROPERTY(qint64 firstName READ getId WRITE setId NOTIFY idChanged)
 | ||
|     Q_PROPERTY(qint64 id READ getId WRITE setId NOTIFY idChanged)
 | ||
|  | ||
|   signals:
 | ||
|     void idChanged();
 | ||
| ... | ... | |
|     virtual QString toString();
 | ||
|     virtual ~Entity();
 | ||
|     virtual QString getTablename();
 | ||
|     virtual QList<Relation> getRelations();
 | ||
|     /**
 | ||
|      * You should return the names of properties which should not persisted e.g. Properties which are only exposed to qml
 | ||
|      * @brief getTransientAttributes
 | ||
|      * @return
 | ||
|      */
 | ||
|     virtual QStringList getTransientAttributes();
 | ||
|     //  virtual QMap<QString, QString> getManyToManyRelations() = 0;   //Key = Table, Value = joined Table Column
 | ||
|     virtual qint64 getId() const;
 | ||
|     virtual void setId(const qint64 &value);
 | ||
|     virtual QStringList getBLOBColumns();
 | ||
|     //return value must be the exact name defined in Q_PROPERTY
 | ||
|     virtual QString getPrimaryKey();
 | ||
|  | ||
| protected:
 | ||
|     qint64 id;
 | ||
|     qint32 getId() const;
 | ||
|     void setId(const qint32 &value);
 | ||
|  | ||
|   protected:
 | ||
|     qint32 id;
 | ||
| };
 | ||
| }
 | ||
| //Q_DECLARE_METATYPE(CuteEntityManager::Entity)
 | ||
| //Q_DECLARE_METATYPE(CuteEntityManager::Entity*)
 | ||
| #endif // ENTITY_H
 | ||
| src/entitymanager.h | ||
|---|---|---|
| namespace CuteEntityManager {
 | ||
|  | ||
| class EntityManager {
 | ||
|   signals:
 | ||
|     void actionFinished(qint64 id);
 | ||
|  | ||
|   private:
 | ||
|     static QStringList connectionNames;
 | ||
|     QSharedPointer<Schema> schema;
 | ||
| src/relation.cpp | ||
|---|---|---|
| #include "relation.h"
 | ||
| using namespace CuteEntityManager;
 | ||
|  | ||
| Relation::Relation() {
 | ||
| }
 | ||
|  | ||
| Relation::Relation(QString propertyName, RelationType type, bool optional) {
 | ||
|     this->propertyName = propertyName;
 | ||
|     this->type = type;
 | ||
|     this->optional = optional;
 | ||
| }
 | ||
|  | ||
| Relation::~Relation() {
 | ||
| }
 | ||
|  | ||
| RelationType Relation::getType() const {
 | ||
|     return type;
 | ||
| }
 | ||
|  | ||
| void Relation::setType(const RelationType &value) {
 | ||
|     type = value;
 | ||
| }
 | ||
|  | ||
| QString Relation::getPropertyName() const {
 | ||
|     return propertyName;
 | ||
| }
 | ||
|  | ||
| void Relation::setPropertyName(const QString &value) {
 | ||
|     propertyName = value;
 | ||
| }
 | ||
| bool Relation::getOptional() const {
 | ||
|     return optional;
 | ||
| }
 | ||
|  | ||
| void Relation::setOptional(bool value) {
 | ||
|     optional = value;
 | ||
| }
 | ||
| src/relation.h | ||
|---|---|---|
| #ifndef RELATION_H
 | ||
| #define RELATION_H
 | ||
| #include <QString>
 | ||
| namespace CuteEntityManager {
 | ||
| enum RelationType {
 | ||
|     ONE_TO_ONE,
 | ||
|     ONE_TO_MANY,
 | ||
|     MANY_TO_MANY,
 | ||
|     MANY_TO_ONE
 | ||
| };
 | ||
|  | ||
| class Relation {
 | ||
|   public:
 | ||
|     Relation();
 | ||
|     Relation(QString propertyName, RelationType type, bool optional = true);
 | ||
|     ~Relation();
 | ||
|     RelationType getType() const;
 | ||
|     void setType(const RelationType &value);
 | ||
|  | ||
|     QString getPropertyName() const;
 | ||
|     void setPropertyName(const QString &value);
 | ||
|  | ||
|     bool getOptional() const;
 | ||
|     void setOptional(bool value);
 | ||
|  | ||
|   protected:
 | ||
|     QString propertyName;
 | ||
|     RelationType type;
 | ||
|     bool optional;
 | ||
|  | ||
| };
 | ||
| }
 | ||
|  | ||
| #endif // RELATION_H
 | ||
| src/schema.cpp | ||
|---|---|---|
|     typeMap.insert("unsigned long long", TYPE_INTEGER);
 | ||
|     typeMap.insert("char",TYPE_CHAR);
 | ||
|     typeMap.insert("std::string", TYPE_TEXT);
 | ||
|     typeMap.insert("std::wstring", TYPE_TEXT);
 | ||
|     typeMap.insert("QString", TYPE_TEXT);
 | ||
|     typeMap.insert("QVariant", TYPE_TEXT);
 | ||
|     typeMap.insert("QUuid", TYPE_TEXT);
 | ||
| src/schema.h | ||
|---|---|---|
|   public:
 | ||
|     Schema(QSharedPointer<Database> database);
 | ||
|     virtual ~Schema();
 | ||
|     //http://doc.qt.io/qt-5/sql-types.html
 | ||
|     const QString TYPE_PK = "pk";
 | ||
|     const QString TYPE_BIGPK = "bigpk";
 | ||
|     const QString TYPE_STRING = "string";
 | ||
| src/schema/mysqlschema.cpp | ||
|---|---|---|
|  | ||
| //QHash<QString, QString> *MysqlSchema::getTypeMap() {
 | ||
| //    if (this->typeMap.data()->empty()) {
 | ||
| ////        this->typeMap->data()->insert(TYPE_SMALLINT, 'tinyint');
 | ||
| ////        this->typeMap->data()->insert(TYPE_SMALLINT, 'bit');
 | ||
| ////        this->typeMap->data()->insert(TYPE_BOOLEAN, 'boolean');
 | ||
| ////        this->typeMap->data()->insert(TYPE_BOOLEAN, 'bool');
 | ||
| ////        this->typeMap->data()->insert(TYPE_SMALLINT, 'smallint');
 | ||
| ////        this->typeMap->data()->insert(TYPE_INTEGER, 'mediumint');
 | ||
| ////        this->typeMap->data()->insert(TYPE_INTEGER, 'int');
 | ||
| ////        this->typeMap->data()->insert(TYPE_INTEGER, 'integer');
 | ||
| ////        this->typeMap->data()->insert(TYPE_BIGINT, 'bigint');
 | ||
| ////        this->typeMap->data()->insert(TYPE_FLOAT, 'float');
 | ||
| ////        this->typeMap->data()->insert(TYPE_DOUBLE, 'double');
 | ||
| ////        this->typeMap->data()->insert(TYPE_FLOAT, 'real');
 | ||
| ////        this->typeMap->data()->insert(TYPE_DECIMAL, 'decimal');
 | ||
| ////        this->typeMap->data()->insert(TYPE_DECIMAL, 'numeric');
 | ||
| ////        this->typeMap->data()->insert(TYPE_TEXT, 'tinytext');
 | ||
| ////        this->typeMap->data()->insert(TYPE_TEXT, 'mediumtext');
 | ||
| ////        this->typeMap->data()->insert(TYPE_TEXT, 'longtext');
 | ||
| ////        this->typeMap->data()->insert(TYPE_TEXT, 'text');
 | ||
| ////        this->typeMap->data()->insert(TYPE_STRING, 'varchar');
 | ||
| ////        this->typeMap->data()->insert(TYPE_STRING, 'string');
 | ||
| ////        this->typeMap->data()->insert(TYPE_STRING, 'char');
 | ||
| ////        this->typeMap->data()->insert(TYPE_BINARY, 'blob');
 | ||
| ////        this->typeMap->data()->insert(TYPE_DATETIME, 'datetime');
 | ||
| ////        this->typeMap->data()->insert(TYPE_DATE, 'year');
 | ||
| ////        this->typeMap->data()->insert(TYPE_DATE, 'date');
 | ||
| ////        this->typeMap->data()->insert(TYPE_TIME, 'time');
 | ||
| ////        this->typeMap->data()->insert(TYPE_TIMESTAMP, 'timestamp');
 | ||
| ////        this->typeMap->data()->insert(TYPE_STRING, 'enum');
 | ||
| //        this->typeMap.data()->insert(TYPE_SMALLINT, "tinyint");
 | ||
| //        this->typeMap.data()->insert(TYPE_BOOLEAN, "boolean");
 | ||
| //        this->typeMap.data()->insert(TYPE_SMALLINT, "smallint");
 | ||
| //        this->typeMap.data()->insert(TYPE_INTEGER, "int");
 | ||
| //        this->typeMap.data()->insert(TYPE_BIGINT, "bigint");
 | ||
| //        this->typeMap.data()->insert(TYPE_FLOAT, "float");
 | ||
| //        this->typeMap.data()->insert(TYPE_DOUBLE, "double");
 | ||
| //        this->typeMap.data()->insert(TYPE_FLOAT, "real");
 | ||
| //        this->typeMap.data()->insert(TYPE_DECIMAL, "decimal");
 | ||
| //        this->typeMap.data()->insert(TYPE_TEXT, "text");
 | ||
| //        this->typeMap.data()->insert(TYPE_STRING, "varchar");
 | ||
| //        this->typeMap.data()->insert(TYPE_CHAR, "char");
 | ||
| //        this->typeMap.data()->insert(TYPE_BINARY, "blob");
 | ||
| //        this->typeMap.data()->insert(TYPE_DATETIME, "datetime");
 | ||
| //        this->typeMap.data()->insert(TYPE_DATE, "date");
 | ||
| //        this->typeMap.data()->insert(TYPE_TIME, "time");
 | ||
| //        this->typeMap.data()->insert(TYPE_TIMESTAMP, "timestamp");
 | ||
| //    }
 | ||
| //    return this->typeMap.data();
 | ||
| //}
 | ||
Auch abrufbar als: Unified diff
...