some polish
This commit is contained in:
parent
cd07c580f6
commit
465aee8998
|
|
@ -38,7 +38,7 @@ class ChangeLogTable : public Table
|
||||||
NUT_DECLARE_FIELD(QString, version, version, setVersion)
|
NUT_DECLARE_FIELD(QString, version, version, setVersion)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ChangeLogTable(QObject *parentTableSet = Q_NULLPTR);
|
explicit ChangeLogTable(QObject *parentTableSet = Q_NULLPTR);
|
||||||
};
|
};
|
||||||
|
|
||||||
NUT_END_NAMESPACE
|
NUT_END_NAMESPACE
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,9 @@ NUT_BEGIN_NAMESPACE
|
||||||
qulonglong DatabasePrivate::lastId = 0;
|
qulonglong DatabasePrivate::lastId = 0;
|
||||||
QMap<QString, DatabaseModel> DatabasePrivate::allTableMaps;
|
QMap<QString, DatabaseModel> DatabasePrivate::allTableMaps;
|
||||||
|
|
||||||
DatabasePrivate::DatabasePrivate(Database *parent) : q_ptr(parent), isDatabaseNew(false)
|
DatabasePrivate::DatabasePrivate(Database *parent) : q_ptr(parent),
|
||||||
|
port(0), sqlGenertor(0), changeLogs(0),
|
||||||
|
isDatabaseNew(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,9 +43,9 @@ class NUT_EXPORT Database : public QObject
|
||||||
Q_DECLARE_PRIVATE(Database)
|
Q_DECLARE_PRIVATE(Database)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Database(QObject *parent = 0);
|
explicit Database(QObject *parent = 0);
|
||||||
Database(const Database &other);
|
explicit Database(const Database &other);
|
||||||
Database(const QSqlDatabase &other);
|
explicit Database(const QSqlDatabase &other);
|
||||||
~Database();
|
~Database();
|
||||||
|
|
||||||
bool open();
|
bool open();
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ class DatabasePrivate
|
||||||
Q_DECLARE_PUBLIC(Database)
|
Q_DECLARE_PUBLIC(Database)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DatabasePrivate(Database *parent);
|
explicit DatabasePrivate(Database *parent);
|
||||||
|
|
||||||
bool open(bool updateDatabase);
|
bool open(bool updateDatabase);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,11 @@ DatabaseModel::DatabaseModel(const QJsonObject &json) :
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DatabaseModel::DatabaseModel(DatabaseModel &model)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
TableModel *DatabaseModel::tableByName(QString tableName) const
|
TableModel *DatabaseModel::tableByName(QString tableName) const
|
||||||
{
|
{
|
||||||
for(int i = 0; i < size(); i++){
|
for(int i = 0; i < size(); i++){
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ public:
|
||||||
DatabaseModel(const QString &name = QString::null);
|
DatabaseModel(const QString &name = QString::null);
|
||||||
DatabaseModel(const DatabaseModel &other);
|
DatabaseModel(const DatabaseModel &other);
|
||||||
DatabaseModel(const QJsonObject &json);
|
DatabaseModel(const QJsonObject &json);
|
||||||
|
DatabaseModel(DatabaseModel &model);
|
||||||
|
|
||||||
TableModel *tableByName(QString tableName) const;
|
TableModel *tableByName(QString tableName) const;
|
||||||
TableModel *tableByClassName(QString className) const;
|
TableModel *tableByClassName(QString className) const;
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE
|
||||||
class MySqlGenerator : public SqlGeneratorBase
|
class MySqlGenerator : public SqlGeneratorBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MySqlGenerator(Database *parent = 0);
|
explicit MySqlGenerator(Database *parent = 0);
|
||||||
|
|
||||||
QString fieldType(FieldModel *field);
|
QString fieldType(FieldModel *field);
|
||||||
QString escapeValue(const QVariant &v) const;
|
QString escapeValue(const QVariant &v) const;
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE
|
||||||
class PostgreSqlGenerator : public SqlGeneratorBase
|
class PostgreSqlGenerator : public SqlGeneratorBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PostgreSqlGenerator(Database *parent);
|
explicit PostgreSqlGenerator(Database *parent);
|
||||||
|
|
||||||
QString fieldType(FieldModel *field);
|
QString fieldType(FieldModel *field);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -959,7 +959,7 @@ QString SqlGeneratorBase::createConditionalPhrase(const PhraseData *d) const
|
||||||
else if (op == PhraseData::AddMonths)
|
else if (op == PhraseData::AddMonths)
|
||||||
ret = QString("DATEADD(month, %1, %2)")
|
ret = QString("DATEADD(month, %1, %2)")
|
||||||
.arg(d->operand.toString()).arg(createConditionalPhrase(d->left));
|
.arg(d->operand.toString()).arg(createConditionalPhrase(d->left));
|
||||||
else if (op == PhraseData::AddYears)
|
else if (op == PhraseData::AddDays)
|
||||||
ret = QString("DATEADD(day, %1, %2)")
|
ret = QString("DATEADD(day, %1, %2)")
|
||||||
.arg(d->operand.toString()).arg(createConditionalPhrase(d->left));
|
.arg(d->operand.toString()).arg(createConditionalPhrase(d->left));
|
||||||
else if (op == PhraseData::AddHours)
|
else if (op == PhraseData::AddHours)
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ public:
|
||||||
SignleField
|
SignleField
|
||||||
};
|
};
|
||||||
|
|
||||||
SqlGeneratorBase(Database *parent);
|
explicit SqlGeneratorBase(Database *parent);
|
||||||
virtual ~SqlGeneratorBase();
|
virtual ~SqlGeneratorBase();
|
||||||
|
|
||||||
virtual QString masterDatabaseName(QString databaseName);
|
virtual QString masterDatabaseName(QString databaseName);
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE
|
||||||
class SqliteGenerator : public SqlGeneratorBase
|
class SqliteGenerator : public SqlGeneratorBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SqliteGenerator(Database *parent = 0);
|
explicit SqliteGenerator(Database *parent = 0);
|
||||||
|
|
||||||
QString fieldType(FieldModel *field);
|
QString fieldType(FieldModel *field);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -126,7 +126,7 @@ QString SqlServerGenerator::escapeValue(const QVariant &v) const
|
||||||
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 (v.type() == QVariant::Point) {
|
} else if (v.type() == QVariant::PointF) {
|
||||||
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());
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE
|
||||||
class SqlServerGenerator : public SqlGeneratorBase
|
class SqlServerGenerator : public SqlGeneratorBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SqlServerGenerator(Database *parent = 0);
|
explicit SqlServerGenerator(Database *parent = 0);
|
||||||
|
|
||||||
QString masterDatabaseName(QString databaseName);
|
QString masterDatabaseName(QString databaseName);
|
||||||
|
|
||||||
|
|
|
||||||
102
src/phrase.cpp
102
src/phrase.cpp
|
|
@ -45,23 +45,20 @@ PhraseData::PhraseData(PhraseData *l, PhraseData::Condition o,
|
||||||
|
|
||||||
PhraseData::PhraseData(PhraseData *l, PhraseData::Condition o, QVariant r)
|
PhraseData::PhraseData(PhraseData *l, PhraseData::Condition o, QVariant r)
|
||||||
: className(0), fieldName(0),
|
: className(0), fieldName(0),
|
||||||
type(WithVariant), operatorCond(o), left(new PhraseData(l)), operand(r), isNot(false)
|
type(WithVariant), operatorCond(o), left(new PhraseData(l)), right(0), operand(r), isNot(false)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
PhraseData::PhraseData(const PhraseData *other)
|
PhraseData::PhraseData(const PhraseData &other) :
|
||||||
{
|
left(other.left), right(other.right), operand(other.operand),
|
||||||
left = other->left;
|
operatorCond(other.operatorCond), className(other.className),
|
||||||
right = other->right;
|
fieldName(other.fieldName), type(other.type), isNot(other.isNot)
|
||||||
operand = other->operand;
|
{ }
|
||||||
operatorCond = other->operatorCond;
|
|
||||||
className = other->className;
|
PhraseData::PhraseData(const PhraseData *other) :
|
||||||
fieldName = other->fieldName;
|
left(other->left), right(other->right), operand(other->operand),
|
||||||
type = other->type;
|
operatorCond(other->operatorCond), className(other->className),
|
||||||
isNot = other->isNot;
|
fieldName(other->fieldName), type(other->type), isNot(other->isNot)
|
||||||
if (type != Field) {
|
{ }
|
||||||
qDebug() << "Bug";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString PhraseData::toString() const
|
QString PhraseData::toString() const
|
||||||
{
|
{
|
||||||
|
|
@ -169,7 +166,7 @@ PhraseList::PhraseList() : isValid(false)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PhraseList::PhraseList(const PhraseList &other)
|
PhraseList::PhraseList(const PhraseList &other) : isValid(true)
|
||||||
{
|
{
|
||||||
data = qMove(other.data);
|
data = qMove(other.data);
|
||||||
}
|
}
|
||||||
|
|
@ -211,7 +208,10 @@ PhraseList PhraseList::operator |(PhraseList &other) {
|
||||||
return PhraseList(this, &other);
|
return PhraseList(this, &other);
|
||||||
}
|
}
|
||||||
|
|
||||||
AssignmentPhrase::AssignmentPhrase(AbstractFieldPhrase *l, QVariant r)
|
AssignmentPhrase::AssignmentPhrase(PhraseData *d) : data(d)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
AssignmentPhrase::AssignmentPhrase(AbstractFieldPhrase *l, const QVariant r)
|
||||||
{
|
{
|
||||||
data = new PhraseData(l->data, PhraseData::Equal, r);
|
data = new PhraseData(l->data, PhraseData::Equal, r);
|
||||||
// l->data = 0;
|
// l->data = 0;
|
||||||
|
|
@ -223,6 +223,17 @@ AssignmentPhrase::AssignmentPhrase(AbstractFieldPhrase *l, const AssignmentPhras
|
||||||
// l->data = 0;
|
// l->data = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AssignmentPhrase::AssignmentPhrase(AssignmentPhrase *ph, const QVariant &v)
|
||||||
|
{
|
||||||
|
data = new PhraseData(ph->data, PhraseData::Equal, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
//AssignmentPhrase::AssignmentPhrase(AssignmentPhrase &other)
|
||||||
|
//{
|
||||||
|
// data = other.data;
|
||||||
|
// other.data = 0;
|
||||||
|
//}
|
||||||
|
|
||||||
AssignmentPhrase::~AssignmentPhrase()
|
AssignmentPhrase::~AssignmentPhrase()
|
||||||
{
|
{
|
||||||
if (data)
|
if (data)
|
||||||
|
|
@ -235,10 +246,10 @@ AssignmentPhrase::~AssignmentPhrase()
|
||||||
// qFatal("SS");
|
// qFatal("SS");
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//AssignmentPhraseList AssignmentPhrase::operator &(const AssignmentPhrase &other)
|
AssignmentPhraseList AssignmentPhrase::operator &(const AssignmentPhrase &other)
|
||||||
//{
|
{
|
||||||
// return AssignmentPhraseList(this, &other);
|
return AssignmentPhraseList(this, &other);
|
||||||
//}
|
}
|
||||||
|
|
||||||
AssignmentPhraseList::AssignmentPhraseList()
|
AssignmentPhraseList::AssignmentPhraseList()
|
||||||
{
|
{
|
||||||
|
|
@ -256,6 +267,12 @@ AssignmentPhraseList::AssignmentPhraseList(AssignmentPhraseList *l, const Assign
|
||||||
data.append(r->data);
|
data.append(r->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AssignmentPhraseList::AssignmentPhraseList(AssignmentPhrase *l, const AssignmentPhrase *r)
|
||||||
|
{
|
||||||
|
data.append(l->data);
|
||||||
|
data.append(r->data);
|
||||||
|
}
|
||||||
|
|
||||||
AssignmentPhraseList::AssignmentPhraseList(const AssignmentPhrase &r, const AssignmentPhrase &l)
|
AssignmentPhraseList::AssignmentPhraseList(const AssignmentPhrase &r, const AssignmentPhrase &l)
|
||||||
{
|
{
|
||||||
data.append(l.data);
|
data.append(l.data);
|
||||||
|
|
@ -269,7 +286,8 @@ AssignmentPhraseList AssignmentPhraseList::operator &(const AssignmentPhrase &ph
|
||||||
|
|
||||||
AssignmentPhraseList::~AssignmentPhraseList()
|
AssignmentPhraseList::~AssignmentPhraseList()
|
||||||
{
|
{
|
||||||
qDeleteAll(data);
|
// qDeleteAll(data);
|
||||||
|
// data.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
ConditionalPhrase::ConditionalPhrase() : data(0)
|
ConditionalPhrase::ConditionalPhrase() : data(0)
|
||||||
|
|
@ -355,7 +373,7 @@ ConditionalPhrase::~ConditionalPhrase()
|
||||||
delete data;
|
delete data;
|
||||||
}
|
}
|
||||||
|
|
||||||
ConditionalPhrase ConditionalPhrase::operator =(const ConditionalPhrase &other)
|
ConditionalPhrase &ConditionalPhrase::operator =(const ConditionalPhrase &other)
|
||||||
{
|
{
|
||||||
this->data = new PhraseData(other.data);
|
this->data = new PhraseData(other.data);
|
||||||
return *this;
|
return *this;
|
||||||
|
|
@ -390,27 +408,27 @@ ConditionalPhrase ConditionalPhrase::operator !()
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
AssignmentPhraseList operator &(const AssignmentPhrase &l, const AssignmentPhrase &r)
|
//AssignmentPhraseList operator &(const AssignmentPhrase &l, const AssignmentPhrase &r)
|
||||||
{
|
//{
|
||||||
return AssignmentPhraseList(l, r);
|
// return AssignmentPhraseList(l, r);
|
||||||
}
|
//}
|
||||||
|
|
||||||
AssignmentPhraseList operator &(const AssignmentPhrase &l, AssignmentPhrase &&r)
|
//AssignmentPhraseList operator &(const AssignmentPhrase &l, AssignmentPhrase &&r)
|
||||||
{
|
//{
|
||||||
r.data = 0;
|
// r.data = 0;
|
||||||
return AssignmentPhraseList(l, r);
|
// return AssignmentPhraseList(l, r);
|
||||||
}
|
//}
|
||||||
|
|
||||||
AssignmentPhraseList operator &(AssignmentPhrase &&l, const AssignmentPhrase &r)
|
//AssignmentPhraseList operator &(AssignmentPhrase &&l, const AssignmentPhrase &r)
|
||||||
{
|
//{
|
||||||
l.data = 0;
|
// l.data = 0;
|
||||||
return AssignmentPhraseList(l, r);
|
// return AssignmentPhraseList(l, r);
|
||||||
}
|
//}
|
||||||
|
|
||||||
AssignmentPhraseList operator &(AssignmentPhrase &&l, AssignmentPhrase &&r)
|
//AssignmentPhraseList operator &(AssignmentPhrase &&l, AssignmentPhrase &&r)
|
||||||
{
|
//{
|
||||||
r.data = l.data = 0;
|
// r.data = l.data = 0;
|
||||||
return AssignmentPhraseList(l, r);
|
// return AssignmentPhraseList(l, r);
|
||||||
}
|
//}
|
||||||
|
|
||||||
NUT_END_NAMESPACE
|
NUT_END_NAMESPACE
|
||||||
|
|
|
||||||
31
src/phrase.h
31
src/phrase.h
|
|
@ -103,8 +103,8 @@ public:
|
||||||
PhraseData(PhraseData *l, Condition o);
|
PhraseData(PhraseData *l, Condition o);
|
||||||
PhraseData(PhraseData *l, Condition o, const PhraseData *r);
|
PhraseData(PhraseData *l, Condition o, const PhraseData *r);
|
||||||
PhraseData(PhraseData *l, Condition o, QVariant r);
|
PhraseData(PhraseData *l, Condition o, QVariant r);
|
||||||
|
explicit PhraseData(const PhraseData &other);
|
||||||
PhraseData(const PhraseData *other);
|
explicit PhraseData(const PhraseData *other);
|
||||||
|
|
||||||
QString toString() const;
|
QString toString() const;
|
||||||
|
|
||||||
|
|
@ -115,7 +115,7 @@ class AssignmentPhraseList
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QList<PhraseData*> data;
|
QList<PhraseData*> data;
|
||||||
AssignmentPhraseList();
|
explicit AssignmentPhraseList();
|
||||||
AssignmentPhraseList(const AssignmentPhrase &l);
|
AssignmentPhraseList(const AssignmentPhrase &l);
|
||||||
AssignmentPhraseList(AssignmentPhraseList *l, const AssignmentPhrase *r);
|
AssignmentPhraseList(AssignmentPhraseList *l, const AssignmentPhrase *r);
|
||||||
AssignmentPhraseList(AssignmentPhrase *l, const AssignmentPhrase *r);
|
AssignmentPhraseList(AssignmentPhrase *l, const AssignmentPhrase *r);
|
||||||
|
|
@ -130,25 +130,28 @@ class AssignmentPhrase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PhraseData *data;
|
PhraseData *data;
|
||||||
AssignmentPhrase(AbstractFieldPhrase *l, QVariant r);
|
explicit AssignmentPhrase(PhraseData *d);
|
||||||
AssignmentPhrase(AbstractFieldPhrase *l, const AssignmentPhrase *r);
|
explicit AssignmentPhrase(AbstractFieldPhrase *l, const QVariant r);
|
||||||
|
explicit AssignmentPhrase(AbstractFieldPhrase *l, const AssignmentPhrase *r);
|
||||||
|
explicit AssignmentPhrase(AssignmentPhrase *ph, const QVariant &v);
|
||||||
|
// explicit AssignmentPhrase(AssignmentPhrase &other);
|
||||||
~AssignmentPhrase();
|
~AssignmentPhrase();
|
||||||
// AssignmentPhrase(AssignmentPhrase *l, const AssignmentPhrase *r);
|
// AssignmentPhrase(AssignmentPhrase *l, const AssignmentPhrase *r);
|
||||||
|
|
||||||
// AssignmentPhraseList operator &(const AssignmentPhrase &other);
|
AssignmentPhraseList operator &(const AssignmentPhrase &other);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
AssignmentPhraseList operator &(const AssignmentPhrase &l, const AssignmentPhrase &r);
|
//AssignmentPhraseList operator &(const AssignmentPhrase &l, const AssignmentPhrase &r);
|
||||||
AssignmentPhraseList operator &(const AssignmentPhrase &l, AssignmentPhrase &&r);
|
//AssignmentPhraseList operator &(const AssignmentPhrase &l, AssignmentPhrase &&r);
|
||||||
AssignmentPhraseList operator &(AssignmentPhrase &&l, const AssignmentPhrase &r);
|
//AssignmentPhraseList operator &(AssignmentPhrase &&l, const AssignmentPhrase &r);
|
||||||
AssignmentPhraseList operator &(AssignmentPhrase &&l, AssignmentPhrase &&r);
|
//AssignmentPhraseList operator &(AssignmentPhrase &&l, AssignmentPhrase &&r);
|
||||||
|
|
||||||
class PhraseList{
|
class PhraseList{
|
||||||
public:
|
public:
|
||||||
bool isValid;
|
bool isValid;
|
||||||
QList<const PhraseData*> data;
|
QList<const PhraseData*> data;
|
||||||
PhraseList();
|
explicit PhraseList();
|
||||||
PhraseList(const PhraseList &other);
|
PhraseList(const PhraseList &other);
|
||||||
PhraseList(const AbstractFieldPhrase &other);
|
PhraseList(const AbstractFieldPhrase &other);
|
||||||
PhraseList(const AbstractFieldPhrase *left, const AbstractFieldPhrase &right);
|
PhraseList(const AbstractFieldPhrase *left, const AbstractFieldPhrase &right);
|
||||||
|
|
@ -181,7 +184,7 @@ public:
|
||||||
ConditionalPhrase(ConditionalPhrase *l, PhraseData::Condition cond, ConditionalPhrase &r);
|
ConditionalPhrase(ConditionalPhrase *l, PhraseData::Condition cond, ConditionalPhrase &r);
|
||||||
virtual ~ConditionalPhrase();
|
virtual ~ConditionalPhrase();
|
||||||
|
|
||||||
ConditionalPhrase operator =(const ConditionalPhrase &other);
|
ConditionalPhrase &operator =(const ConditionalPhrase &other);
|
||||||
ConditionalPhrase operator ==(const QVariant &other);
|
ConditionalPhrase operator ==(const QVariant &other);
|
||||||
ConditionalPhrase operator ==(const AbstractFieldPhrase &other);
|
ConditionalPhrase operator ==(const AbstractFieldPhrase &other);
|
||||||
ConditionalPhrase operator &&(const ConditionalPhrase &other);
|
ConditionalPhrase operator &&(const ConditionalPhrase &other);
|
||||||
|
|
@ -267,8 +270,8 @@ public:
|
||||||
return ConditionalPhrase(this, PhraseData::Like, term);
|
return ConditionalPhrase(this, PhraseData::Like, term);
|
||||||
}
|
}
|
||||||
|
|
||||||
AssignmentPhrase operator =(const QVariant &other) {
|
AssignmentPhrase operator =(const QVariant &v) {
|
||||||
return AssignmentPhrase(this, other);
|
return AssignmentPhrase(this, v);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
NUT_BEGIN_NAMESPACE
|
NUT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
QueryPrivate::QueryPrivate(QueryBase *parent) : q_ptr(parent),
|
QueryPrivate::QueryPrivate(QueryBase *parent) : q_ptr(parent),
|
||||||
skip(-1), take(-1)
|
database(0), tableSet(0), skip(-1), take(-1)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ template <class T>
|
||||||
bool m_autoDelete;
|
bool m_autoDelete;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Query(Database *database, TableSetBase *tableSet, bool autoDelete);
|
explicit Query(Database *database, TableSetBase *tableSet, bool autoDelete);
|
||||||
~Query();
|
~Query();
|
||||||
|
|
||||||
//ddl
|
//ddl
|
||||||
|
|
@ -520,7 +520,7 @@ Q_OUTOFLINE_TEMPLATE int Query<T>::update(const AssignmentPhraseList &ph)
|
||||||
ph,
|
ph,
|
||||||
d->wherePhrase);
|
d->wherePhrase);
|
||||||
QSqlQuery q = d->database->exec(d->sql);
|
QSqlQuery q = d->database->exec(d->sql);
|
||||||
|
qDebug() << d->sql;
|
||||||
if (m_autoDelete)
|
if (m_autoDelete)
|
||||||
deleteLater();
|
deleteLater();
|
||||||
return q.numRowsAffected();
|
return q.numRowsAffected();
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ class QueryPrivate{
|
||||||
Q_DECLARE_PUBLIC(QueryBase)
|
Q_DECLARE_PUBLIC(QueryBase)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QueryPrivate(QueryBase *parent);
|
explicit QueryPrivate(QueryBase *parent);
|
||||||
~QueryPrivate();
|
~QueryPrivate();
|
||||||
|
|
||||||
QString sql;
|
QString sql;
|
||||||
|
|
|
||||||
|
|
@ -85,4 +85,9 @@ QVariant SqlModel::data(const QModelIndex &index, int role) const
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SqlModelPrivate::SqlModelPrivate()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
NUT_END_NAMESPACE
|
NUT_END_NAMESPACE
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ class SqlModel : public QAbstractTableModel
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SqlModel(Database *database, TableSetBase *tableSet, QObject *parent = Q_NULLPTR);
|
explicit SqlModel(Database *database, TableSetBase *tableSet, QObject *parent = Q_NULLPTR);
|
||||||
|
|
||||||
int rowCount(const QModelIndex &parent) const;
|
int rowCount(const QModelIndex &parent) const;
|
||||||
int columnCount(const QModelIndex &parent) const;
|
int columnCount(const QModelIndex &parent) const;
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,8 @@ class SqlModelPrivate {
|
||||||
SqlModel *q_ptr;
|
SqlModel *q_ptr;
|
||||||
Q_DECLARE_PUBLIC(SqlModel)
|
Q_DECLARE_PUBLIC(SqlModel)
|
||||||
public:
|
public:
|
||||||
|
explicit SqlModelPrivate();
|
||||||
|
|
||||||
QString tableName;
|
QString tableName;
|
||||||
|
|
||||||
QList<Table*> rows;
|
QList<Table*> rows;
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ NUT_BEGIN_NAMESPACE
|
||||||
* This should be fixed to v1.2
|
* This should be fixed to v1.2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Table::Table(QObject *parent) : QObject(parent), myModel(0)
|
Table::Table(QObject *parent) : QObject(parent), myModel(0), _parentTableSet(0)
|
||||||
{
|
{
|
||||||
setStatus(NewCreated);
|
setStatus(NewCreated);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -408,6 +408,7 @@ FieldModel::FieldModel(const QJsonObject &json)
|
||||||
isAutoIncrement = json.value(__nut_AUTO_INCREMENT).toBool();
|
isAutoIncrement = json.value(__nut_AUTO_INCREMENT).toBool();
|
||||||
isPrimaryKey = json.value(__nut_PRIMARY_KEY).toBool();
|
isPrimaryKey = json.value(__nut_PRIMARY_KEY).toBool();
|
||||||
defaultValue = json.value(__nut_DEFAULT_VALUE).toString();
|
defaultValue = json.value(__nut_DEFAULT_VALUE).toString();
|
||||||
|
isUnique = json.value(__nut_UNIQUE).toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject FieldModel::toJson() const
|
QJsonObject FieldModel::toJson() const
|
||||||
|
|
@ -429,6 +430,7 @@ RelationModel::RelationModel(const QJsonObject &obj)
|
||||||
localProperty = obj.value("localProperty").toString();
|
localProperty = obj.value("localProperty").toString();
|
||||||
masterClassName = obj.value("masterClassName").toString();
|
masterClassName = obj.value("masterClassName").toString();
|
||||||
foreignColumn = obj.value("foreignColumn").toString();
|
foreignColumn = obj.value("foreignColumn").toString();
|
||||||
|
slaveTable = masterTable = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject RelationModel::toJson() const
|
QJsonObject RelationModel::toJson() const
|
||||||
|
|
|
||||||
|
|
@ -31,13 +31,13 @@ NUT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
class TableModel;
|
class TableModel;
|
||||||
struct FieldModel{
|
struct FieldModel{
|
||||||
FieldModel() : name(QString::null), length(0), defaultValue(QString::null),
|
explicit FieldModel() : name(QString::null), length(0), defaultValue(QString::null),
|
||||||
notNull(false), isPrimaryKey(false), isAutoIncrement(false), isUnique(false)
|
notNull(false), isPrimaryKey(false), isAutoIncrement(false), isUnique(false)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FieldModel(const QJsonObject &json);
|
explicit FieldModel(const QJsonObject &json);
|
||||||
|
|
||||||
QString name;
|
QString name;
|
||||||
//TODO: QMetaType::Type??
|
//TODO: QMetaType::Type??
|
||||||
|
|
@ -73,7 +73,7 @@ struct RelationModel{
|
||||||
RelationModel() : localColumn(""), localProperty(""), slaveTable(0),
|
RelationModel() : localColumn(""), localProperty(""), slaveTable(0),
|
||||||
foreignColumn(""), masterTable(0), masterClassName("")
|
foreignColumn(""), masterTable(0), masterClassName("")
|
||||||
{}
|
{}
|
||||||
RelationModel(const QJsonObject &obj);
|
explicit RelationModel(const QJsonObject &obj);
|
||||||
|
|
||||||
//slave
|
//slave
|
||||||
QString localColumn;
|
QString localColumn;
|
||||||
|
|
@ -92,9 +92,8 @@ bool operator !=(const RelationModel &l, const RelationModel &r);
|
||||||
class TableModel
|
class TableModel
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
explicit TableModel(int typeId, QString tableName = QString::null);
|
||||||
TableModel(int typeId, QString tableName = QString::null);
|
explicit TableModel(QJsonObject json, QString tableName);
|
||||||
TableModel(QJsonObject json, QString tableName);
|
|
||||||
|
|
||||||
QJsonObject toJson() const;
|
QJsonObject toJson() const;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,8 +39,8 @@ template<class T>
|
||||||
class NUT_EXPORT TableSet : public TableSetBase
|
class NUT_EXPORT TableSet : public TableSetBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TableSet(Database *parent);
|
explicit TableSet(Database *parent);
|
||||||
TableSet(Table *parent);
|
explicit TableSet(Table *parent);
|
||||||
|
|
||||||
void append(T *t);
|
void append(T *t);
|
||||||
void append(QList<T *> t);
|
void append(QList<T *> t);
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,8 @@ class TableSetBase : public QObject
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TableSetBase(Database *parent);
|
explicit TableSetBase(Database *parent);
|
||||||
TableSetBase(Table *parent);
|
explicit TableSetBase(Table *parent);
|
||||||
|
|
||||||
virtual int save(Database *db, bool cleanUp = false);
|
virtual int save(Database *db, bool cleanUp = false);
|
||||||
void clearChilds();
|
void clearChilds();
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,8 @@ class NUT_EXPORT DbGeography
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit DbGeography();
|
explicit DbGeography();
|
||||||
DbGeography(const DbGeography &other);
|
explicit DbGeography(const DbGeography &other);
|
||||||
DbGeography(const QVariant &value);
|
explicit DbGeography(const QVariant &value);
|
||||||
|
|
||||||
qreal longitude() const;
|
qreal longitude() const;
|
||||||
qreal latitude() const;
|
qreal latitude() const;
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,7 @@ void MainTest::createUser()
|
||||||
|
|
||||||
void MainTest::createPost()
|
void MainTest::createPost()
|
||||||
{
|
{
|
||||||
|
TIC();
|
||||||
Post *newPost = new Post;
|
Post *newPost = new Post;
|
||||||
newPost->setTitle("post title");
|
newPost->setTitle("post title");
|
||||||
newPost->setSaveDate(QDateTime::currentDateTime());
|
newPost->setSaveDate(QDateTime::currentDateTime());
|
||||||
|
|
@ -93,6 +94,7 @@ void MainTest::createPost()
|
||||||
postId = newPost->id();
|
postId = newPost->id();
|
||||||
|
|
||||||
QTEST_ASSERT(newPost->id() != 0);
|
QTEST_ASSERT(newPost->id() != 0);
|
||||||
|
TOC();
|
||||||
qDebug() << "New post inserted with id:" << newPost->id();
|
qDebug() << "New post inserted with id:" << newPost->id();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -119,12 +121,24 @@ void MainTest::createPost2()
|
||||||
qDebug() << "New post2 inserted with id:" << newPost->id();
|
qDebug() << "New post2 inserted with id:" << newPost->id();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainTest::updatePostOnTheFly()
|
||||||
|
{
|
||||||
|
auto c = db.postTable()->query()
|
||||||
|
->where(Post::idField() == postId)
|
||||||
|
->update(Post::titleField() = "New title");
|
||||||
|
|
||||||
|
QTEST_ASSERT(c == 1);
|
||||||
|
}
|
||||||
|
|
||||||
void MainTest::selectPublicts()
|
void MainTest::selectPublicts()
|
||||||
{
|
{
|
||||||
auto q = db.postTable()->query()
|
auto q = db.postTable()->query()
|
||||||
->where(Post::isPublicField())
|
->where(Post::isPublicField())
|
||||||
->toList();
|
->toList();
|
||||||
|
|
||||||
|
auto q2 = db.postTable()->query()
|
||||||
|
->where(!Post::isPublicField())
|
||||||
|
->toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainTest::selectPosts()
|
void MainTest::selectPosts()
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ private slots:
|
||||||
void createUser();
|
void createUser();
|
||||||
void createPost();
|
void createPost();
|
||||||
void createPost2();
|
void createPost2();
|
||||||
|
void updatePostOnTheFly();
|
||||||
void selectPublicts();
|
void selectPublicts();
|
||||||
void join();
|
void join();
|
||||||
void selectPosts();
|
void selectPosts();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue