some polish

This commit is contained in:
Hamed Masafi 2019-01-09 19:19:50 +03:30
parent 2b4526fbfe
commit 0af41ed396
13 changed files with 62 additions and 43 deletions

View File

@ -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

View File

@ -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()<<q->metaObject()->className();
if (!nutClassInfoString(q->metaObject()->classInfo(i),
type, name, value)) {
qDebug() << "No valid table in" << q->metaObject()->classInfo(i).value();

View File

@ -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();

View File

@ -86,7 +86,7 @@ TableModel *DatabaseModel::tableByClassName(QString className) const
return s;
}
return 0;
return nullptr;
}
bool DatabaseModel::operator ==(const DatabaseModel &other) const

View File

@ -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<type>)& name ## Field(){ \
static NUT_WRAP_NAMESPACE(FieldPhrase<type>)& name ## Field(){ \
static NUT_WRAP_NAMESPACE(FieldPhrase<type>) f = \
NUT_WRAP_NAMESPACE(FieldPhrase<type>) \
(staticMetaObject.className(), #name); \

View File

@ -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 "<FAIL>";
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 = "<FAIL>";
}
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<PhraseData::Condition>((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 = "<FAIL phrase>";
}
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");
}
}

View File

@ -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);

View File

@ -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<type> : 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, \

View File

@ -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)

View File

@ -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<FieldModel *> 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

View File

@ -94,7 +94,7 @@ Q_OUTOFLINE_TEMPLATE int TableSet<T>::length() const
template<class T>
Q_OUTOFLINE_TEMPLATE T *TableSet<T >::at(int i) const
{
return (T*)_tablesList.at(i);
return reinterpret_cast<T*>(_tablesList.at(i));
}
template<class T>

2
src/tuple.cpp Normal file
View File

@ -0,0 +1,2 @@
#include "tuple.h"

18
src/tuple.h Normal file
View File

@ -0,0 +1,18 @@
#ifndef TUPLE_H
#define TUPLE_H
#include <QObject>
//class AbstractTuple
//{
// Q_GADGET
//};
//template <typename T>
//class Tuple
//{
//public:
// T _1;
//};
#endif // TUPLE_H