few tidy
This commit is contained in:
parent
b79f4c88bc
commit
dfef256598
|
|
@ -178,73 +178,69 @@ NUT_BEGIN_NAMESPACE
|
||||||
inline bool nutClassInfo(const QMetaClassInfo &classInfo,
|
inline bool nutClassInfo(const QMetaClassInfo &classInfo,
|
||||||
QString &type, QString &name, QVariant &value)
|
QString &type, QString &name, QVariant &value)
|
||||||
{
|
{
|
||||||
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX)) {
|
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX))
|
||||||
return false;
|
return false;
|
||||||
} else {
|
|
||||||
QStringList parts = QString(classInfo.value()).split("\n");
|
|
||||||
if (parts.count() != 3)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
type = parts[0];
|
QStringList parts = QString(classInfo.value()).split("\n");
|
||||||
name = parts[1];
|
if (parts.count() != 3)
|
||||||
value = qVariantFromValue(parts[2]);
|
return false;
|
||||||
return true;
|
|
||||||
}
|
type = parts[0];
|
||||||
|
name = parts[1];
|
||||||
|
value = qVariantFromValue(parts[2]);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool nutClassInfoString(const QMetaClassInfo &classInfo,
|
inline bool nutClassInfoString(const QMetaClassInfo &classInfo,
|
||||||
QString &type, QString &name, QString &value)
|
QString &type, QString &name, QString &value)
|
||||||
{
|
{
|
||||||
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX)) {
|
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX))
|
||||||
return false;
|
return false;
|
||||||
} else {
|
|
||||||
QStringList parts = QString(classInfo.value()).split("\n");
|
|
||||||
if (parts.count() != 3)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
type = parts[0];
|
QStringList parts = QString(classInfo.value()).split("\n");
|
||||||
name = parts[1];
|
if (parts.count() != 3)
|
||||||
value = parts[2];
|
return false;
|
||||||
return true;
|
|
||||||
}
|
type = parts[0];
|
||||||
|
name = parts[1];
|
||||||
|
value = parts[2];
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool nutClassInfoBool(const QMetaClassInfo &classInfo,
|
inline bool nutClassInfoBool(const QMetaClassInfo &classInfo,
|
||||||
QString &type, QString &name, bool &value)
|
QString &type, QString &name, bool &value)
|
||||||
{
|
{
|
||||||
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX)) {
|
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX))
|
||||||
return false;
|
return false;
|
||||||
} else {
|
|
||||||
QStringList parts = QString(classInfo.value()).split("\n");
|
|
||||||
if (parts.count() != 3)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
QString buffer = parts[2].toLower();
|
QStringList parts = QString(classInfo.value()).split("\n");
|
||||||
if (buffer != "true" && buffer != "false")
|
if (parts.count() != 3)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
type = parts[0];
|
QString buffer = parts[2].toLower();
|
||||||
name = parts[1];
|
if (buffer != "true" && buffer != "false")
|
||||||
value = (buffer == "true");
|
return false;
|
||||||
return true;
|
|
||||||
}
|
type = parts[0];
|
||||||
|
name = parts[1];
|
||||||
|
value = (buffer == "true");
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool nutClassInfoInt(const QMetaClassInfo &classInfo,
|
inline bool nutClassInfoInt(const QMetaClassInfo &classInfo,
|
||||||
QString &type, QString &name, bool &value)
|
QString &type, QString &name, bool &value)
|
||||||
{
|
{
|
||||||
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX)) {
|
if (!QString(classInfo.name()).startsWith(__nut_NAME_PERFIX))
|
||||||
return false;
|
return false;
|
||||||
} else {
|
|
||||||
QStringList parts = QString(classInfo.value()).split("\n");
|
QStringList parts = QString(classInfo.value()).split("\n");
|
||||||
if (parts.count() != 3)
|
if (parts.count() != 3)
|
||||||
return false;
|
return false;
|
||||||
bool ok;
|
bool ok;
|
||||||
type = parts[0];
|
type = parts[0];
|
||||||
name = parts[1];
|
name = parts[1];
|
||||||
value = parts[2].toInt(&ok);
|
value = parts[2].toInt(&ok);
|
||||||
return ok;
|
return ok;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NUT_SHARED_POINTER
|
#ifdef NUT_SHARED_POINTER
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,7 @@ QString MySqlGenerator::escapeValue(const QVariant &v) const
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// default:
|
// default:
|
||||||
return SqlGeneratorBase::escapeValue(v);
|
return SqlGeneratorBase::escapeValue(v);
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -306,19 +306,19 @@ QString MySqlGenerator::createConditionalPhrase(const PhraseData *d) const
|
||||||
if (op == PhraseData::AddYears)
|
if (op == PhraseData::AddYears)
|
||||||
return QString("DATE_ADD(%2, INTERVAL %1 YEAR)")
|
return QString("DATE_ADD(%2, INTERVAL %1 YEAR)")
|
||||||
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
||||||
else if (op == PhraseData::AddMonths)
|
if (op == PhraseData::AddMonths)
|
||||||
return QString("DATE_ADD(%2, INTERVAL %1 MONTH)")
|
return QString("DATE_ADD(%2, INTERVAL %1 MONTH)")
|
||||||
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
||||||
else if (op == PhraseData::AddDays)
|
if (op == PhraseData::AddDays)
|
||||||
return QString("DATE_ADD(%2, INTERVAL %1 DAY)")
|
return QString("DATE_ADD(%2, INTERVAL %1 DAY)")
|
||||||
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
||||||
else if (op == PhraseData::AddHours)
|
if (op == PhraseData::AddHours)
|
||||||
return QString("DATE_ADD(%2, INTERVAL %1 HOUR)")
|
return QString("DATE_ADD(%2, INTERVAL %1 HOUR)")
|
||||||
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
||||||
else if (op == PhraseData::AddMinutes)
|
if (op == PhraseData::AddMinutes)
|
||||||
return QString("DATE_ADD(%2, INTERVAL %1 MINUTE)")
|
return QString("DATE_ADD(%2, INTERVAL %1 MINUTE)")
|
||||||
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
||||||
else if (op == PhraseData::AddSeconds)
|
if (op == PhraseData::AddSeconds)
|
||||||
return QString("DATE_ADD(%2, INTERVAL %1 SECOND)")
|
return QString("DATE_ADD(%2, INTERVAL %1 SECOND)")
|
||||||
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE
|
||||||
class MySqlGenerator : public SqlGeneratorBase
|
class MySqlGenerator : public SqlGeneratorBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit MySqlGenerator(Database *parent = 0);
|
explicit MySqlGenerator(Database *parent = nullptr);
|
||||||
|
|
||||||
QString fieldType(FieldModel *field) override;
|
QString fieldType(FieldModel *field) override;
|
||||||
QString escapeValue(const QVariant &v) const override;
|
QString escapeValue(const QVariant &v) const override;
|
||||||
|
|
|
||||||
|
|
@ -344,22 +344,21 @@ QString PostgreSqlGenerator::createConditionalPhrase(const PhraseData *d) const
|
||||||
if (op == PhraseData::AddYears)
|
if (op == PhraseData::AddYears)
|
||||||
return QString("DATEADD(year, %1, %2)")
|
return QString("DATEADD(year, %1, %2)")
|
||||||
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
||||||
else if (op == PhraseData::AddMonths)
|
if (op == PhraseData::AddMonths)
|
||||||
return QString("DATEADD(month, %1, %2)")
|
return QString("DATEADD(month, %1, %2)")
|
||||||
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
||||||
else if (op == PhraseData::AddDays)
|
if (op == PhraseData::AddDays)
|
||||||
return QString("DATEADD(day, %1, %2)")
|
return QString("DATEADD(day, %1, %2)")
|
||||||
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
||||||
else if (op == PhraseData::AddHours)
|
if (op == PhraseData::AddHours)
|
||||||
return QString("DATEADD(hour, %1, %2)")
|
return QString("DATEADD(hour, %1, %2)")
|
||||||
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
||||||
else if (op == PhraseData::AddMinutes)
|
if (op == PhraseData::AddMinutes)
|
||||||
return QString("DATEADD(minute, %1, %2)")
|
return QString("DATEADD(minute, %1, %2)")
|
||||||
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
||||||
else if (op == PhraseData::AddSeconds)
|
if (op == PhraseData::AddSeconds)
|
||||||
return QString("DATEADD(second, %1, %2)")
|
return QString("DATEADD(second, %1, %2)")
|
||||||
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
.arg(d->operand.toString(), createConditionalPhrase(d->left));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return SqlGeneratorBase::createConditionalPhrase(d);
|
return SqlGeneratorBase::createConditionalPhrase(d);
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE
|
||||||
class PostgreSqlGenerator : public SqlGeneratorBase
|
class PostgreSqlGenerator : public SqlGeneratorBase
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
bool readInsideParentese(QString &ref, QString &out);
|
bool readInsideParentese(QString &text, QString &out);
|
||||||
bool isPostGisType(const QVariant::Type &t) const;
|
bool isPostGisType(const QVariant::Type &t) const;
|
||||||
public:
|
public:
|
||||||
explicit PostgreSqlGenerator(Database *parent = nullptr);
|
explicit PostgreSqlGenerator(Database *parent = nullptr);
|
||||||
|
|
|
||||||
|
|
@ -160,7 +160,7 @@ protected:
|
||||||
QString fromTableText(const QString &tableName, QString &joinClassName, QString &orderBy) const;
|
QString fromTableText(const QString &tableName, QString &joinClassName, QString &orderBy) const;
|
||||||
// QString createWhere(QList<WherePhrase> &wheres);
|
// QString createWhere(QList<WherePhrase> &wheres);
|
||||||
|
|
||||||
void replaceTableNames(QString &command);
|
virtual void replaceTableNames(QString &command);
|
||||||
void removeTableNames(QString &command);
|
void removeTableNames(QString &command);
|
||||||
QString dateTimePartName(const PhraseData::Condition &op) const;
|
QString dateTimePartName(const PhraseData::Condition &op) const;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -167,11 +167,12 @@ QString SqlServerGenerator::escapeValue(const QVariant &v) const
|
||||||
|
|
||||||
if (mid == QMetaType::QString || mid == QMetaType::QChar)
|
if (mid == QMetaType::QString || mid == QMetaType::QChar)
|
||||||
return "N'" + v.toString() + "'";
|
return "N'" + v.toString() + "'";
|
||||||
else if (mid == QMetaType::QPoint) {
|
if (mid == QMetaType::QPoint) {
|
||||||
QPoint pt = v.toPoint();
|
QPoint pt = v.toPoint();
|
||||||
return QString("geography::POINT(%1, %2, 4326)").arg(pt.x()).arg(
|
return QString("geography::POINT(%1, %2, 4326)").arg(pt.x()).arg(
|
||||||
pt.y());
|
pt.y());
|
||||||
} else if (mid == QMetaType::QPointF) {
|
}
|
||||||
|
if (mid == QMetaType::QPointF) {
|
||||||
QPointF pt = v.toPointF();
|
QPointF pt = v.toPointF();
|
||||||
return QString("geography::POINT(%1, %2, 4326)").arg(pt.x()).arg(
|
return QString("geography::POINT(%1, %2, 4326)").arg(pt.x()).arg(
|
||||||
pt.y());
|
pt.y());
|
||||||
|
|
|
||||||
|
|
@ -31,15 +31,15 @@ class SqlServerGenerator : public SqlGeneratorBase
|
||||||
public:
|
public:
|
||||||
explicit SqlServerGenerator(Database *parent = nullptr);
|
explicit SqlServerGenerator(Database *parent = nullptr);
|
||||||
|
|
||||||
QString masterDatabaseName(QString databaseName);
|
QString masterDatabaseName(QString databaseName) override;
|
||||||
|
|
||||||
QString fieldType(FieldModel *field);
|
QString fieldType(FieldModel *field) override;
|
||||||
QString diff(FieldModel *oldField, FieldModel *newField);
|
QString diff(FieldModel *oldField, FieldModel *newField) override;
|
||||||
|
|
||||||
QString escapeValue(const QVariant &v) const;
|
QString escapeValue(const QVariant &v) const override;
|
||||||
void appendSkipTake(QString &sql, int skip, int take);
|
void appendSkipTake(QString &sql, int skip, int take) override;
|
||||||
|
|
||||||
void replaceTableNames(QString &command);
|
void replaceTableNames(QString &command) override;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,11 @@ QueryPrivate::QueryPrivate(QueryBase *parent) : q_ptr(parent),
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QueryPrivate::~QueryPrivate()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \class Query
|
* \class Query
|
||||||
* \brief This class hold a query. A query can be used for getting database rows, editing or deleting without row fetching.
|
* \brief This class hold a query. A query can be used for getting database rows, editing or deleting without row fetching.
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ class QueryPrivate : public QSharedData {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit QueryPrivate(QueryBase *parent);
|
explicit QueryPrivate(QueryBase *parent);
|
||||||
~QueryPrivate() = default;
|
~QueryPrivate();
|
||||||
|
|
||||||
QString sql;
|
QString sql;
|
||||||
QString className;
|
QString className;
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ protected:
|
||||||
QExplicitlySharedDataPointer<QueryPrivate> d;
|
QExplicitlySharedDataPointer<QueryPrivate> d;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit QueryBase(QObject *parent = 0);
|
explicit QueryBase(QObject *parent = nullptr);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// void addTableToSet(TableSetBase *set, Table *table);
|
// void addTableToSet(TableSetBase *set, Table *table);
|
||||||
|
|
|
||||||
|
|
@ -31,8 +31,7 @@ NUT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
class TableModel;
|
class TableModel;
|
||||||
struct FieldModel{
|
struct FieldModel{
|
||||||
explicit FieldModel() : name(QString()), length(0), defaultValue(QString()),
|
explicit FieldModel() : name(QString()), defaultValue(QString())
|
||||||
notNull(false), isPrimaryKey(false), isAutoIncrement(false), isUnique(false)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -42,12 +41,12 @@ struct FieldModel{
|
||||||
QString name;
|
QString name;
|
||||||
QMetaType::Type type;
|
QMetaType::Type type;
|
||||||
QString typeName;
|
QString typeName;
|
||||||
int length;
|
int length{0};
|
||||||
QString defaultValue;
|
QString defaultValue;
|
||||||
bool notNull;
|
bool notNull{false};
|
||||||
bool isPrimaryKey;
|
bool isPrimaryKey{false};
|
||||||
bool isAutoIncrement;
|
bool isAutoIncrement{false};
|
||||||
bool isUnique;
|
bool isUnique{false};
|
||||||
QString displayName;
|
QString displayName;
|
||||||
|
|
||||||
bool operator ==(const FieldModel &f) const{
|
bool operator ==(const FieldModel &f) const{
|
||||||
|
|
@ -70,18 +69,17 @@ struct FieldModel{
|
||||||
|
|
||||||
struct RelationModel{
|
struct RelationModel{
|
||||||
RelationModel() : localColumn(QString()), localProperty(QString()),
|
RelationModel() : localColumn(QString()), localProperty(QString()),
|
||||||
slaveTable(nullptr), foreignColumn(QString()), masterTable(nullptr),
|
slaveTable(nullptr), foreignColumn(QString()), masterClassName(QString())
|
||||||
masterClassName(QString())
|
|
||||||
{}
|
{}
|
||||||
explicit RelationModel(const QJsonObject &obj);
|
explicit RelationModel(const QJsonObject &obj);
|
||||||
|
|
||||||
//slave
|
//slave
|
||||||
QString localColumn;
|
QString localColumn;
|
||||||
QString localProperty;
|
QString localProperty;
|
||||||
TableModel *slaveTable;
|
TableModel *slaveTable{nullptr};
|
||||||
//master
|
//master
|
||||||
QString foreignColumn;
|
QString foreignColumn;
|
||||||
TableModel *masterTable;
|
TableModel *masterTable{nullptr};
|
||||||
|
|
||||||
QString masterClassName;
|
QString masterClassName;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue