some polish

This commit is contained in:
Hamed Masafi 2018-02-26 13:44:36 +03:30
parent cd07c580f6
commit 465aee8998
29 changed files with 139 additions and 87 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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