This commit is contained in:
Hamed Masafi 2019-07-20 11:07:08 +04:30
parent b79f4c88bc
commit dfef256598
12 changed files with 79 additions and 80 deletions

View File

@ -178,73 +178,69 @@ NUT_BEGIN_NAMESPACE
inline bool nutClassInfo(const QMetaClassInfo &classInfo,
QString &type, QString &name, QVariant &value)
{
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX)) {
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX))
return false;
} else {
QStringList parts = QString(classInfo.value()).split("\n");
if (parts.count() != 3)
return false;
type = parts[0];
name = parts[1];
value = qVariantFromValue(parts[2]);
return true;
}
QStringList parts = QString(classInfo.value()).split("\n");
if (parts.count() != 3)
return false;
type = parts[0];
name = parts[1];
value = qVariantFromValue(parts[2]);
return true;
}
inline bool nutClassInfoString(const QMetaClassInfo &classInfo,
QString &type, QString &name, QString &value)
{
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX)) {
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX))
return false;
} else {
QStringList parts = QString(classInfo.value()).split("\n");
if (parts.count() != 3)
return false;
type = parts[0];
name = parts[1];
value = parts[2];
return true;
}
QStringList parts = QString(classInfo.value()).split("\n");
if (parts.count() != 3)
return false;
type = parts[0];
name = parts[1];
value = parts[2];
return true;
}
inline bool nutClassInfoBool(const QMetaClassInfo &classInfo,
QString &type, QString &name, bool &value)
{
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX)) {
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX))
return false;
} else {
QStringList parts = QString(classInfo.value()).split("\n");
if (parts.count() != 3)
return false;
QString buffer = parts[2].toLower();
if (buffer != "true" && buffer != "false")
return false;
QStringList parts = QString(classInfo.value()).split("\n");
if (parts.count() != 3)
return false;
type = parts[0];
name = parts[1];
value = (buffer == "true");
return true;
}
QString buffer = parts[2].toLower();
if (buffer != "true" && buffer != "false")
return false;
type = parts[0];
name = parts[1];
value = (buffer == "true");
return true;
}
inline bool nutClassInfoInt(const QMetaClassInfo &classInfo,
QString &type, QString &name, bool &value)
{
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX)) {
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX))
return false;
} else {
QStringList parts = QString(classInfo.value()).split("\n");
if (parts.count() != 3)
return false;
bool ok;
type = parts[0];
name = parts[1];
value = parts[2].toInt(&ok);
return ok;
}
QStringList parts = QString(classInfo.value()).split("\n");
if (parts.count() != 3)
return false;
bool ok;
type = parts[0];
name = parts[1];
value = parts[2].toInt(&ok);
return ok;
}
#ifdef NUT_SHARED_POINTER

View File

@ -178,7 +178,7 @@ QString MySqlGenerator::escapeValue(const QVariant &v) const
// }
// default:
return SqlGeneratorBase::escapeValue(v);
return SqlGeneratorBase::escapeValue(v);
// }
}
@ -306,19 +306,19 @@ QString MySqlGenerator::createConditionalPhrase(const PhraseData *d) const
if (op == PhraseData::AddYears)
return QString("DATE_ADD(%2, INTERVAL %1 YEAR)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddMonths)
if (op == PhraseData::AddMonths)
return QString("DATE_ADD(%2, INTERVAL %1 MONTH)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddDays)
if (op == PhraseData::AddDays)
return QString("DATE_ADD(%2, INTERVAL %1 DAY)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddHours)
if (op == PhraseData::AddHours)
return QString("DATE_ADD(%2, INTERVAL %1 HOUR)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddMinutes)
if (op == PhraseData::AddMinutes)
return QString("DATE_ADD(%2, INTERVAL %1 MINUTE)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddSeconds)
if (op == PhraseData::AddSeconds)
return QString("DATE_ADD(%2, INTERVAL %1 SECOND)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));

View File

@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE
class MySqlGenerator : public SqlGeneratorBase
{
public:
explicit MySqlGenerator(Database *parent = 0);
explicit MySqlGenerator(Database *parent = nullptr);
QString fieldType(FieldModel *field) override;
QString escapeValue(const QVariant &v) const override;

View File

@ -344,22 +344,21 @@ QString PostgreSqlGenerator::createConditionalPhrase(const PhraseData *d) const
if (op == PhraseData::AddYears)
return QString("DATEADD(year, %1, %2)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddMonths)
if (op == PhraseData::AddMonths)
return QString("DATEADD(month, %1, %2)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddDays)
if (op == PhraseData::AddDays)
return QString("DATEADD(day, %1, %2)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddHours)
if (op == PhraseData::AddHours)
return QString("DATEADD(hour, %1, %2)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddMinutes)
if (op == PhraseData::AddMinutes)
return QString("DATEADD(minute, %1, %2)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddSeconds)
if (op == PhraseData::AddSeconds)
return QString("DATEADD(second, %1, %2)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
}
return SqlGeneratorBase::createConditionalPhrase(d);

View File

@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE
class PostgreSqlGenerator : public SqlGeneratorBase
{
private:
bool readInsideParentese(QString &ref, QString &out);
bool readInsideParentese(QString &text, QString &out);
bool isPostGisType(const QVariant::Type &t) const;
public:
explicit PostgreSqlGenerator(Database *parent = nullptr);

View File

@ -160,7 +160,7 @@ protected:
QString fromTableText(const QString &tableName, QString &joinClassName, QString &orderBy) const;
// QString createWhere(QList<WherePhrase> &wheres);
void replaceTableNames(QString &command);
virtual void replaceTableNames(QString &command);
void removeTableNames(QString &command);
QString dateTimePartName(const PhraseData::Condition &op) const;
};

View File

@ -167,11 +167,12 @@ QString SqlServerGenerator::escapeValue(const QVariant &v) const
if (mid == QMetaType::QString || mid == QMetaType::QChar)
return "N'" + v.toString() + "'";
else if (mid == QMetaType::QPoint) {
if (mid == QMetaType::QPoint) {
QPoint pt = v.toPoint();
return QString("geography::POINT(%1, %2, 4326)").arg(pt.x()).arg(
pt.y());
} else if (mid == QMetaType::QPointF) {
}
if (mid == QMetaType::QPointF) {
QPointF pt = v.toPointF();
return QString("geography::POINT(%1, %2, 4326)").arg(pt.x()).arg(
pt.y());

View File

@ -31,15 +31,15 @@ class SqlServerGenerator : public SqlGeneratorBase
public:
explicit SqlServerGenerator(Database *parent = nullptr);
QString masterDatabaseName(QString databaseName);
QString masterDatabaseName(QString databaseName) override;
QString fieldType(FieldModel *field);
QString diff(FieldModel *oldField, FieldModel *newField);
QString fieldType(FieldModel *field) override;
QString diff(FieldModel *oldField, FieldModel *newField) override;
QString escapeValue(const QVariant &v) const;
void appendSkipTake(QString &sql, int skip, int take);
QString escapeValue(const QVariant &v) const override;
void appendSkipTake(QString &sql, int skip, int take) override;
void replaceTableNames(QString &command);
void replaceTableNames(QString &command) override;
};

View File

@ -28,6 +28,11 @@ QueryPrivate::QueryPrivate(QueryBase *parent) : q_ptr(parent),
}
QueryPrivate::~QueryPrivate()
{
}
/*!
* \class Query
* \brief This class hold a query. A query can be used for getting database rows, editing or deleting without row fetching.

View File

@ -39,7 +39,7 @@ class QueryPrivate : public QSharedData {
public:
explicit QueryPrivate(QueryBase *parent);
~QueryPrivate() = default;
~QueryPrivate();
QString sql;
QString className;

View File

@ -41,7 +41,7 @@ protected:
QExplicitlySharedDataPointer<QueryPrivate> d;
public:
explicit QueryBase(QObject *parent = 0);
explicit QueryBase(QObject *parent = nullptr);
protected:
// void addTableToSet(TableSetBase *set, Table *table);

View File

@ -31,8 +31,7 @@ NUT_BEGIN_NAMESPACE
class TableModel;
struct FieldModel{
explicit FieldModel() : name(QString()), length(0), defaultValue(QString()),
notNull(false), isPrimaryKey(false), isAutoIncrement(false), isUnique(false)
explicit FieldModel() : name(QString()), defaultValue(QString())
{
}
@ -42,12 +41,12 @@ struct FieldModel{
QString name;
QMetaType::Type type;
QString typeName;
int length;
int length{0};
QString defaultValue;
bool notNull;
bool isPrimaryKey;
bool isAutoIncrement;
bool isUnique;
bool notNull{false};
bool isPrimaryKey{false};
bool isAutoIncrement{false};
bool isUnique{false};
QString displayName;
bool operator ==(const FieldModel &f) const{
@ -70,18 +69,17 @@ struct FieldModel{
struct RelationModel{
RelationModel() : localColumn(QString()), localProperty(QString()),
slaveTable(nullptr), foreignColumn(QString()), masterTable(nullptr),
masterClassName(QString())
slaveTable(nullptr), foreignColumn(QString()), masterClassName(QString())
{}
explicit RelationModel(const QJsonObject &obj);
//slave
QString localColumn;
QString localProperty;
TableModel *slaveTable;
TableModel *slaveTable{nullptr};
//master
QString foreignColumn;
TableModel *masterTable;
TableModel *masterTable{nullptr};
QString masterClassName;