Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 24c5480c

Von Christian Ehringfeld vor mehr als 9 Jahren hinzugefügt

  • ID 24c5480c79dfbbe30c36d75c8751b8b284cf59da
  • Vorgänger b0bf458e
  • Nachfolger 24425325

...

Unterschiede anzeigen:

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