From 0af41ed396e91381f13f57f63b37b9de87b0bda2 Mon Sep 17 00:00:00 2001 From: Hamed Masafi Date: Wed, 9 Jan 2019 19:19:50 +0330 Subject: [PATCH] some polish --- nut.pri | 6 ++++-- src/database.cpp | 8 ++++---- src/database.h | 2 +- src/databasemodel.cpp | 2 +- src/defines.h | 2 +- src/generators/sqlgeneratorbase.cpp | 27 +++++---------------------- src/phrase.cpp | 5 +++++ src/phrase.h | 4 ++++ src/table.cpp | 9 ++++++--- src/tablemodel.cpp | 18 ++++++++++-------- src/tableset.h | 2 +- src/tuple.cpp | 2 ++ src/tuple.h | 18 ++++++++++++++++++ 13 files changed, 62 insertions(+), 43 deletions(-) create mode 100644 src/tuple.cpp create mode 100644 src/tuple.h diff --git a/nut.pri b/nut.pri index 15b253b..8c909dd 100644 --- a/nut.pri +++ b/nut.pri @@ -27,7 +27,8 @@ HEADERS += \ $$PWD/src/serializableobject.h \ $$PWD/src/sqlmodel.h \ $$PWD/src/sqlmodel_p.h \ - $$PWD/src/phrase.h + $$PWD/src/phrase.h \ + $$PWD/src/tuple.h SOURCES += \ $$PWD/src/generators/sqlgeneratorbase.cpp \ @@ -47,4 +48,5 @@ SOURCES += \ $$PWD/src/database.cpp \ $$PWD/src/serializableobject.cpp \ $$PWD/src/sqlmodel.cpp \ - $$PWD/src/phrase.cpp + $$PWD/src/phrase.cpp \ + $$PWD/src/tuple.cpp diff --git a/src/database.cpp b/src/database.cpp index cc69a2a..d847e99 100644 --- a/src/database.cpp +++ b/src/database.cpp @@ -116,10 +116,10 @@ bool DatabasePrivate::open(bool update) return false; } - if(update) +// if(update) return updateDatabase(); - else - return true; +// else +// return true; } bool DatabasePrivate::updateDatabase() @@ -202,7 +202,7 @@ bool DatabasePrivate::getCurrectScheema() QString type; QString name; QString value; - +qDebug()<metaObject()->className(); if (!nutClassInfoString(q->metaObject()->classInfo(i), type, name, value)) { qDebug() << "No valid table in" << q->metaObject()->classInfo(i).value(); diff --git a/src/database.h b/src/database.h index 1885be5..d85cc29 100644 --- a/src/database.h +++ b/src/database.h @@ -43,7 +43,7 @@ class NUT_EXPORT Database : public QObject Q_DECLARE_PRIVATE(Database) public: - explicit Database(QObject *parent = 0); + explicit Database(QObject *parent = nullptr); explicit Database(const Database &other); explicit Database(const QSqlDatabase &other); ~Database(); diff --git a/src/databasemodel.cpp b/src/databasemodel.cpp index 2a579f8..8957a2a 100644 --- a/src/databasemodel.cpp +++ b/src/databasemodel.cpp @@ -86,7 +86,7 @@ TableModel *DatabaseModel::tableByClassName(QString className) const return s; } - return 0; + return nullptr; } bool DatabaseModel::operator ==(const DatabaseModel &other) const diff --git a/src/defines.h b/src/defines.h index 348ff6e..90318e6 100644 --- a/src/defines.h +++ b/src/defines.h @@ -138,7 +138,7 @@ inline bool nutClassInfoInt(const QMetaClassInfo &classInfo, NUT_INFO(__nut_FIELD, name, 0) \ type m_##name; \ public: \ - static NUT_WRAP_NAMESPACE(FieldPhrase)& name ## Field(){ \ + static NUT_WRAP_NAMESPACE(FieldPhrase)& name ## Field(){ \ static NUT_WRAP_NAMESPACE(FieldPhrase) f = \ NUT_WRAP_NAMESPACE(FieldPhrase) \ (staticMetaObject.className(), #name); \ diff --git a/src/generators/sqlgeneratorbase.cpp b/src/generators/sqlgeneratorbase.cpp index 4a404af..2e0fee7 100644 --- a/src/generators/sqlgeneratorbase.cpp +++ b/src/generators/sqlgeneratorbase.cpp @@ -52,7 +52,7 @@ NUT_BEGIN_NAMESPACE * INNER JOIN dbo.Entities ON dbo.GiftCards.GiftCardID = dbo.Entities.GiftCardID */ SqlGeneratorBase::SqlGeneratorBase(Database *parent) - : QObject((QObject *)parent) + : QObject(parent) { if (parent) _database = parent; @@ -251,7 +251,7 @@ QString SqlGeneratorBase::diffRelation(TableModel *oldTable, TableModel *newTabl QStringList columnSql; foreach (QString fieldName, relations) { RelationModel *newRelation = newTable->foregionKeyByField(fieldName); - RelationModel *oldRelation = 0; + RelationModel *oldRelation = nullptr; if (oldTable) oldRelation = oldTable->foregionKeyByField(fieldName); @@ -457,26 +457,18 @@ QString SqlGeneratorBase::agregateText(const AgregateType &t, switch (t) { case Min: return "MIN(" + arg + ")"; - break; case Max: return "MAX(" + arg + ")"; - break; case Average: return "AVERAGE(" + arg + ")"; - break; case Count: return "COUNT(" + arg + ")"; - break; case SignleField: return arg; - break; - - default: - return QString(); } } @@ -795,7 +787,6 @@ QString SqlGeneratorBase::escapeValue(const QVariant &v) const switch (v.type()) { case QVariant::Bool: return v.toBool() ? "1" : "0"; - break; case QVariant::Int: case QVariant::UInt: @@ -803,11 +794,9 @@ QString SqlGeneratorBase::escapeValue(const QVariant &v) const case QVariant::LongLong: case QVariant::Double: return v.toString(); - break; case QVariant::Uuid: return "'" + v.toUuid().toString() + "'"; - break; case QVariant::Char: case QVariant::String: @@ -838,9 +827,10 @@ QString SqlGeneratorBase::escapeValue(const QVariant &v) const case QVariant::Invalid: qFatal("Invalud field value"); - return ""; default: + qDebug() << v.type(); + qWarning("No field escape rule for: %s", v.typeName()); Q_UNREACHABLE(); return QString(); } @@ -875,9 +865,6 @@ QString SqlGeneratorBase::phrase(const PhraseData *d) const case PhraseData::WithoutOperand: ret = phrase(d->left) + " " + operatorString(d->operatorCond); break; - - default: - ret = ""; } if (d->operatorCond == PhraseData::And || d->operatorCond == PhraseData::Or) @@ -968,7 +955,7 @@ QString SqlGeneratorBase::createConditionalPhrase(const PhraseData *d) const //apply not (!) if (d->isNot) { if (op < 20) - op = (PhraseData::Condition)((op + 10) % 20); + op = static_cast((op + 10) % 20); } switch (d->type) { case PhraseData::Field: @@ -1007,9 +994,6 @@ QString SqlGeneratorBase::createConditionalPhrase(const PhraseData *d) const case PhraseData::WithoutOperand: ret = createConditionalPhrase(d->left) + " " + operatorString(op); break; - - default: - ret = ""; } if (d->operatorCond == PhraseData::And || d->operatorCond == PhraseData::Or) @@ -1069,7 +1053,6 @@ void SqlGeneratorBase::createInsertPhrase(const AssignmentPhraseList &ph, QStrin case PhraseData::Field: case PhraseData::WithoutOperand: - default: qFatal("Invalid insert command"); } } diff --git a/src/phrase.cpp b/src/phrase.cpp index 65b2691..e841ffd 100644 --- a/src/phrase.cpp +++ b/src/phrase.cpp @@ -180,6 +180,11 @@ AssignmentPhrase AbstractFieldPhrase::operator =(const QVariant &other) return AssignmentPhrase(this, other); } +AssignmentPhrase AbstractFieldPhrase::operator =(const ConditionalPhrase &other) +{ + return AssignmentPhrase(new PhraseData(data, PhraseData::Equal, other.data)); +} + AssignmentPhrase AbstractFieldPhrase::operator <<(const QVariant &other) { return AssignmentPhrase(this, other); diff --git a/src/phrase.h b/src/phrase.h index c466d9d..87a1b62 100644 --- a/src/phrase.h +++ b/src/phrase.h @@ -281,6 +281,7 @@ public: AbstractFieldPhrase operator !(); AssignmentPhrase operator =(const QVariant &other); + AssignmentPhrase operator =(const ConditionalPhrase &other); AssignmentPhrase operator <<(const QVariant &other); }; @@ -335,6 +336,9 @@ class FieldPhrase : public AbstractFieldPhrase \ AssignmentPhrase operator =(const QVariant &other) { \ return AssignmentPhrase(this, other); \ } \ + AssignmentPhrase operator =(const ConditionalPhrase &other) { \ + return AssignmentPhrase(new PhraseData(data, PhraseData::Equal, other.data)); \ + } \ ConditionalPhrase between(const QVariant &min, const QVariant &max) \ { \ return ConditionalPhrase(this, PhraseData::Between, \ diff --git a/src/table.cpp b/src/table.cpp index afb4033..18d6dcc 100644 --- a/src/table.cpp +++ b/src/table.cpp @@ -39,7 +39,7 @@ NUT_BEGIN_NAMESPACE * This should be fixed to v1.2 */ -Table::Table(QObject *parent) : QObject(parent), myModel(0), _parentTableSet(0) +Table::Table(QObject *parent) : QObject(parent), myModel(nullptr), _parentTableSet(nullptr) { setStatus(NewCreated); } @@ -57,7 +57,10 @@ QString Table::primaryKey() const bool Table::isPrimaryKeyAutoIncrement() const { - return myModel->field(myModel->primaryKey())->isAutoIncrement; + FieldModel *pk = myModel->field(myModel->primaryKey()); + if (!pk) + return false; + return pk->isAutoIncrement; } @@ -72,7 +75,7 @@ void Table::propertyChanged(QString propName) myModel = TableModel::findByClassName(metaObject()->className()); if (!myModel) - qFatal ("model for this class not found"); + qFatal ("model for class '%s' not found", qPrintable(metaObject()->className())); foreach (FieldModel *f, myModel->fields()) if(f->isPrimaryKey && propName == f->name && f->isAutoIncrement) diff --git a/src/tablemodel.cpp b/src/tablemodel.cpp index 2908f26..81e891c 100644 --- a/src/tablemodel.cpp +++ b/src/tablemodel.cpp @@ -69,7 +69,7 @@ void TableModel::setTypeId(const int &typeId) FieldModel *TableModel::field(int n) const { if (n < 0 || n >= _fields.count()) - return 0; + return nullptr; return _fields.at(n); } @@ -80,7 +80,7 @@ FieldModel *TableModel::field(QString name) const if(f->name == name) return f; - return 0; + return nullptr; } QList TableModel::fields() const @@ -114,7 +114,7 @@ TableModel *TableModel::findByTypeId(int typeId) foreach (TableModel *model, _allModels) if(model->typeId() == typeId) return model; - return 0; + return nullptr; } /** @@ -125,11 +125,13 @@ TableModel *TableModel::findByTypeId(int typeId) */ TableModel *TableModel::findByClassName(QString className) { - foreach (TableModel *model, _allModels) + foreach (TableModel *model, _allModels){ + qDebug() << model->className(); if(model->className() == className) return model; + } - return 0; + return nullptr; } bool TableModel::operator ==(const TableModel &t) const{ @@ -377,7 +379,7 @@ RelationModel *TableModel::foregionKey(const QString &otherTable) const if(fk->masterClassName == otherTable) return fk; - return 0; + return nullptr; } RelationModel *TableModel::foregionKeyByField(const QString &fieldName) const @@ -386,7 +388,7 @@ RelationModel *TableModel::foregionKeyByField(const QString &fieldName) const if(fk->localColumn == fieldName) return fk; - return 0; + return nullptr; } QString TableModel::toString() const @@ -440,7 +442,7 @@ RelationModel::RelationModel(const QJsonObject &obj) localProperty = obj.value("localProperty").toString(); masterClassName = obj.value("masterClassName").toString(); foreignColumn = obj.value("foreignColumn").toString(); - slaveTable = masterTable = 0; + slaveTable = masterTable = nullptr; } QJsonObject RelationModel::toJson() const diff --git a/src/tableset.h b/src/tableset.h index a6bfd2c..772c8f3 100644 --- a/src/tableset.h +++ b/src/tableset.h @@ -94,7 +94,7 @@ Q_OUTOFLINE_TEMPLATE int TableSet::length() const template Q_OUTOFLINE_TEMPLATE T *TableSet::at(int i) const { - return (T*)_tablesList.at(i); + return reinterpret_cast(_tablesList.at(i)); } template diff --git a/src/tuple.cpp b/src/tuple.cpp new file mode 100644 index 0000000..c87288d --- /dev/null +++ b/src/tuple.cpp @@ -0,0 +1,2 @@ +#include "tuple.h" + diff --git a/src/tuple.h b/src/tuple.h new file mode 100644 index 0000000..e3131fa --- /dev/null +++ b/src/tuple.h @@ -0,0 +1,18 @@ +#ifndef TUPLE_H +#define TUPLE_H + +#include + +//class AbstractTuple +//{ +// Q_GADGET +//}; + +//template +//class Tuple +//{ +//public: +// T _1; +//}; + +#endif // TUPLE_H