Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 696666eb

Von Christian Ehringfeld vor fast 9 Jahren hinzugefügt

  • ID 696666eb5250a1620967fbcfb9f4e4dc9b3d34fb
  • Vorgänger b0e92bc6
  • Nachfolger f5087482

small improvements

Unterschiede anzeigen:

example/main.cpp
using namespace CuteEntityManager;
int main(int argc, char *argv[]) {
// Q_UNUSED(argc) Q_UNUSED(argv)
CuteEntityManager::EntityManager *e = new CuteEntityManager::EntityManager("QSQLITE",
QDir::currentPath() + "/db.sqlite");
// QSharedPointer<Artikel> a = QSharedPointer<Artikel>(new Artikel(20.0, "Müsli"));
// auto ep = a.dynamicCast<CuteEntityManager::Entity>();
// qDebug() << e;
// qDebug() << "Tabelle artikel erstellt:" << e->createTable(ep);
// e->create(ep);
CuteEntityManager::EntityManager *e = new
CuteEntityManager::EntityManager("QSQLITE",
QDir::currentPath() + "/db.sqlite");
QSharedPointer<Artikel> a = QSharedPointer<Artikel>(new Artikel(20.0,
"Müsli"));
auto ep = a.dynamicCast<CuteEntityManager::Entity>();
qDebug() << e;
qDebug() << "Tabelle artikel erstellt:" << e->createTable(ep);
e->create(ep);
// QSharedPointer<CuteEntityManager::Entity> p = QSharedPointer<CuteEntityManager::Entity>(new Person("Max", "Mustermann", Person::MALE, "", "", "",
// QDate::currentDate()));
src/entitymanager.cpp
}
bool EntityManager::create(QSharedPointer<Entity> &entity,
const bool persistRelations) {
const bool persistRelations, const bool checkDuplicate) {
bool rc = false;
if (this->checkTable(entity) && this->count(entity) == 0) {
if (this->checkTable(entity) && !(checkDuplicate && this->count(entity) == 0)) {
QSqlQuery q = this->schema.data()->getQueryBuilder().data()->create(entity);
rc = this->db->transaction(q);
if (rc) {
src/entitymanager.h
bool ignoreID = false);
bool create(QList<QSharedPointer<Entity>> entities,
const bool persistRelations = true);
bool create(QSharedPointer<Entity> &entity, const bool persistRelations = true);
bool create(QSharedPointer<Entity> &entity, const bool persistRelations = true,
const bool checkDuplicate = false);
bool save(QSharedPointer<Entity> &entity, const bool persistRelations = true);
qint64 findId(QSharedPointer<Entity> &entity);
bool merge(QSharedPointer<Entity> &entity, bool withRelations = true);
src/schema.cpp
#include "database.h"
using namespace CuteEntityManager;
Schema::Schema(QSharedPointer<Database> database) {
Schema::Schema(QSharedPointer<Database> database, QSharedPointer<QueryBuilder> builder)
{
this->database = database;
this->abstractTypeMap = QSharedPointer<QHash<QString, QString>>
(new QHash<QString, QString>());
this->queryBuilder = QSharedPointer<QueryBuilder>();
this->queryBuilder = builder;
this->typeMap = QSharedPointer<QHash<QString, QString>>(new
QHash<QString, QString>());
this->initAbstractDatabaseTypes();
......
}
void Schema::initAbstractDatabaseTypes() {
this->abstractTypeMap.create();
this->abstractTypeMap = QSharedPointer<QHash<QString, QString>>::create();
this->abstractTypeMap.data()->insert("bool", TYPE_SMALLINT);
this->abstractTypeMap.data()->insert("short", TYPE_SMALLINT);
this->abstractTypeMap.data()->insert("int", TYPE_INTEGER);
src/schema.h
class Database;
class Schema {
public:
Schema(QSharedPointer<Database> database);
Schema(QSharedPointer<Database> database, QSharedPointer<QueryBuilder> builder);
virtual ~Schema();
//http://doc.qt.io/qt-5/sql-types.html
const QString TYPE_PK = "pk";
......
virtual void findConstraints(const QSharedPointer<TableSchema> &ts) = 0;
virtual bool findColumns(const QSharedPointer<TableSchema> &ts) = 0;
virtual QSharedPointer<TableSchema> loadTableSchema(QString name) = 0;
void initAbstractDatabaseTypes();
virtual void initAbstractDatabaseTypes();
QSharedPointer<Database> database;
QSharedPointer<QHash<QString, QString>> typeMap;
QSharedPointer<QHash<QString, QString>> abstractTypeMap;
src/schema/sqliteschema.cpp
using namespace CuteEntityManager;
SqliteSchema::SqliteSchema(QSharedPointer<Database> database) : Schema(
database) {
this->queryBuilder = QSharedPointer<QueryBuilder>(new SqliteQueryBuilder(
QSharedPointer<Schema>
(this), database));
database, QSharedPointer<QueryBuilder>(new SqliteQueryBuilder(
QSharedPointer<Schema>
(this), database))) {
}
SqliteSchema::~SqliteSchema() {

Auch abrufbar als: Unified diff