diff --git a/src/changelogtable.h b/src/changelogtable.h index 27c4f70..84475a5 100644 --- a/src/changelogtable.h +++ b/src/changelogtable.h @@ -38,7 +38,7 @@ class ChangeLogTable : public Table NUT_DECLARE_FIELD(QString, version, version, setVersion) public: - ChangeLogTable(QObject *parentTableSet = Q_NULLPTR); + explicit ChangeLogTable(QObject *parentTableSet = Q_NULLPTR); }; NUT_END_NAMESPACE diff --git a/src/database.cpp b/src/database.cpp index d8ac915..9d5983b 100644 --- a/src/database.cpp +++ b/src/database.cpp @@ -52,7 +52,9 @@ NUT_BEGIN_NAMESPACE qulonglong DatabasePrivate::lastId = 0; QMap 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) { } diff --git a/src/database.h b/src/database.h index 9dbc08e..1885be5 100644 --- a/src/database.h +++ b/src/database.h @@ -43,9 +43,9 @@ class NUT_EXPORT Database : public QObject Q_DECLARE_PRIVATE(Database) public: - Database(QObject *parent = 0); - Database(const Database &other); - Database(const QSqlDatabase &other); + explicit Database(QObject *parent = 0); + explicit Database(const Database &other); + explicit Database(const QSqlDatabase &other); ~Database(); bool open(); diff --git a/src/database_p.h b/src/database_p.h index 7c8709d..3299e4a 100644 --- a/src/database_p.h +++ b/src/database_p.h @@ -35,7 +35,7 @@ class DatabasePrivate Q_DECLARE_PUBLIC(Database) public: - DatabasePrivate(Database *parent); + explicit DatabasePrivate(Database *parent); bool open(bool updateDatabase); diff --git a/src/databasemodel.cpp b/src/databasemodel.cpp index e5adc6d..792cda1 100644 --- a/src/databasemodel.cpp +++ b/src/databasemodel.cpp @@ -57,6 +57,11 @@ DatabaseModel::DatabaseModel(const QJsonObject &json) : } } +DatabaseModel::DatabaseModel(DatabaseModel &model) +{ + +} + TableModel *DatabaseModel::tableByName(QString tableName) const { for(int i = 0; i < size(); i++){ diff --git a/src/databasemodel.h b/src/databasemodel.h index c4e25b8..e8342fd 100644 --- a/src/databasemodel.h +++ b/src/databasemodel.h @@ -43,6 +43,7 @@ public: DatabaseModel(const QString &name = QString::null); DatabaseModel(const DatabaseModel &other); DatabaseModel(const QJsonObject &json); + DatabaseModel(DatabaseModel &model); TableModel *tableByName(QString tableName) const; TableModel *tableByClassName(QString className) const; diff --git a/src/generators/mysqlgenerator.h b/src/generators/mysqlgenerator.h index d2224f4..c5916ba 100644 --- a/src/generators/mysqlgenerator.h +++ b/src/generators/mysqlgenerator.h @@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE class MySqlGenerator : public SqlGeneratorBase { public: - MySqlGenerator(Database *parent = 0); + explicit MySqlGenerator(Database *parent = 0); QString fieldType(FieldModel *field); QString escapeValue(const QVariant &v) const; diff --git a/src/generators/postgresqlgenerator.h b/src/generators/postgresqlgenerator.h index 903cca8..028cea4 100644 --- a/src/generators/postgresqlgenerator.h +++ b/src/generators/postgresqlgenerator.h @@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE class PostgreSqlGenerator : public SqlGeneratorBase { public: - PostgreSqlGenerator(Database *parent); + explicit PostgreSqlGenerator(Database *parent); QString fieldType(FieldModel *field); diff --git a/src/generators/sqlgeneratorbase.cpp b/src/generators/sqlgeneratorbase.cpp index 686c3d8..44efaec 100644 --- a/src/generators/sqlgeneratorbase.cpp +++ b/src/generators/sqlgeneratorbase.cpp @@ -959,7 +959,7 @@ QString SqlGeneratorBase::createConditionalPhrase(const PhraseData *d) const else if (op == PhraseData::AddMonths) ret = QString("DATEADD(month, %1, %2)") .arg(d->operand.toString()).arg(createConditionalPhrase(d->left)); - else if (op == PhraseData::AddYears) + else if (op == PhraseData::AddDays) ret = QString("DATEADD(day, %1, %2)") .arg(d->operand.toString()).arg(createConditionalPhrase(d->left)); else if (op == PhraseData::AddHours) diff --git a/src/generators/sqlgeneratorbase_p.h b/src/generators/sqlgeneratorbase_p.h index d8a2e8f..d0aa239 100644 --- a/src/generators/sqlgeneratorbase_p.h +++ b/src/generators/sqlgeneratorbase_p.h @@ -57,7 +57,7 @@ public: SignleField }; - SqlGeneratorBase(Database *parent); + explicit SqlGeneratorBase(Database *parent); virtual ~SqlGeneratorBase(); virtual QString masterDatabaseName(QString databaseName); diff --git a/src/generators/sqlitegenerator.h b/src/generators/sqlitegenerator.h index 1a28c32..5969cde 100644 --- a/src/generators/sqlitegenerator.h +++ b/src/generators/sqlitegenerator.h @@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE class SqliteGenerator : public SqlGeneratorBase { public: - SqliteGenerator(Database *parent = 0); + explicit SqliteGenerator(Database *parent = 0); QString fieldType(FieldModel *field); diff --git a/src/generators/sqlservergenerator.cpp b/src/generators/sqlservergenerator.cpp index 549312b..7d0e128 100644 --- a/src/generators/sqlservergenerator.cpp +++ b/src/generators/sqlservergenerator.cpp @@ -126,7 +126,7 @@ QString SqlServerGenerator::escapeValue(const QVariant &v) const QPoint pt = v.toPoint(); return QString("geography::POINT(%1, %2, 4326)").arg(pt.x()).arg( pt.y()); - } else if (v.type() == QVariant::Point) { + } else if (v.type() == QVariant::PointF) { QPointF pt = v.toPointF(); return QString("geography::POINT(%1, %2, 4326)").arg(pt.x()).arg( pt.y()); diff --git a/src/generators/sqlservergenerator.h b/src/generators/sqlservergenerator.h index 28f6dca..4ef2f7c 100644 --- a/src/generators/sqlservergenerator.h +++ b/src/generators/sqlservergenerator.h @@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE class SqlServerGenerator : public SqlGeneratorBase { public: - SqlServerGenerator(Database *parent = 0); + explicit SqlServerGenerator(Database *parent = 0); QString masterDatabaseName(QString databaseName); diff --git a/src/phrase.cpp b/src/phrase.cpp index 8a5800e..e70f01b 100644 --- a/src/phrase.cpp +++ b/src/phrase.cpp @@ -45,23 +45,20 @@ PhraseData::PhraseData(PhraseData *l, PhraseData::Condition o, PhraseData::PhraseData(PhraseData *l, PhraseData::Condition o, QVariant r) : 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) -{ - left = other->left; - right = other->right; - operand = other->operand; - operatorCond = other->operatorCond; - className = other->className; - fieldName = other->fieldName; - type = other->type; - isNot = other->isNot; - if (type != Field) { - qDebug() << "Bug"; - } -} +PhraseData::PhraseData(const PhraseData &other) : + left(other.left), right(other.right), operand(other.operand), + operatorCond(other.operatorCond), className(other.className), + fieldName(other.fieldName), type(other.type), isNot(other.isNot) +{ } + +PhraseData::PhraseData(const PhraseData *other) : + left(other->left), right(other->right), operand(other->operand), + operatorCond(other->operatorCond), className(other->className), + fieldName(other->fieldName), type(other->type), isNot(other->isNot) +{ } 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); } @@ -211,7 +208,10 @@ PhraseList PhraseList::operator |(PhraseList &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); // l->data = 0; @@ -223,6 +223,17 @@ AssignmentPhrase::AssignmentPhrase(AbstractFieldPhrase *l, const AssignmentPhras // 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() { if (data) @@ -235,10 +246,10 @@ AssignmentPhrase::~AssignmentPhrase() // qFatal("SS"); //} -//AssignmentPhraseList AssignmentPhrase::operator &(const AssignmentPhrase &other) -//{ -// return AssignmentPhraseList(this, &other); -//} +AssignmentPhraseList AssignmentPhrase::operator &(const AssignmentPhrase &other) +{ + return AssignmentPhraseList(this, &other); +} AssignmentPhraseList::AssignmentPhraseList() { @@ -256,6 +267,12 @@ AssignmentPhraseList::AssignmentPhraseList(AssignmentPhraseList *l, const Assign 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) { data.append(l.data); @@ -269,7 +286,8 @@ AssignmentPhraseList AssignmentPhraseList::operator &(const AssignmentPhrase &ph AssignmentPhraseList::~AssignmentPhraseList() { - qDeleteAll(data); +// qDeleteAll(data); +// data.clear(); } ConditionalPhrase::ConditionalPhrase() : data(0) @@ -355,7 +373,7 @@ ConditionalPhrase::~ConditionalPhrase() delete data; } -ConditionalPhrase ConditionalPhrase::operator =(const ConditionalPhrase &other) +ConditionalPhrase &ConditionalPhrase::operator =(const ConditionalPhrase &other) { this->data = new PhraseData(other.data); return *this; @@ -390,27 +408,27 @@ ConditionalPhrase ConditionalPhrase::operator !() return f; } -AssignmentPhraseList operator &(const AssignmentPhrase &l, const AssignmentPhrase &r) -{ - return AssignmentPhraseList(l, r); -} +//AssignmentPhraseList operator &(const AssignmentPhrase &l, const AssignmentPhrase &r) +//{ +// return AssignmentPhraseList(l, r); +//} -AssignmentPhraseList operator &(const AssignmentPhrase &l, AssignmentPhrase &&r) -{ - r.data = 0; - return AssignmentPhraseList(l, r); -} +//AssignmentPhraseList operator &(const AssignmentPhrase &l, AssignmentPhrase &&r) +//{ +// r.data = 0; +// return AssignmentPhraseList(l, r); +//} -AssignmentPhraseList operator &(AssignmentPhrase &&l, const AssignmentPhrase &r) -{ - l.data = 0; - return AssignmentPhraseList(l, r); -} +//AssignmentPhraseList operator &(AssignmentPhrase &&l, const AssignmentPhrase &r) +//{ +// l.data = 0; +// return AssignmentPhraseList(l, r); +//} -AssignmentPhraseList operator &(AssignmentPhrase &&l, AssignmentPhrase &&r) -{ - r.data = l.data = 0; - return AssignmentPhraseList(l, r); -} +//AssignmentPhraseList operator &(AssignmentPhrase &&l, AssignmentPhrase &&r) +//{ +// r.data = l.data = 0; +// return AssignmentPhraseList(l, r); +//} NUT_END_NAMESPACE diff --git a/src/phrase.h b/src/phrase.h index d56b1dc..2535384 100644 --- a/src/phrase.h +++ b/src/phrase.h @@ -103,8 +103,8 @@ public: PhraseData(PhraseData *l, Condition o); PhraseData(PhraseData *l, Condition o, const PhraseData *r); PhraseData(PhraseData *l, Condition o, QVariant r); - - PhraseData(const PhraseData *other); + explicit PhraseData(const PhraseData &other); + explicit PhraseData(const PhraseData *other); QString toString() const; @@ -115,7 +115,7 @@ class AssignmentPhraseList { public: QList data; - AssignmentPhraseList(); + explicit AssignmentPhraseList(); AssignmentPhraseList(const AssignmentPhrase &l); AssignmentPhraseList(AssignmentPhraseList *l, const AssignmentPhrase *r); AssignmentPhraseList(AssignmentPhrase *l, const AssignmentPhrase *r); @@ -130,25 +130,28 @@ class AssignmentPhrase { public: PhraseData *data; - AssignmentPhrase(AbstractFieldPhrase *l, QVariant r); - AssignmentPhrase(AbstractFieldPhrase *l, const AssignmentPhrase *r); + explicit AssignmentPhrase(PhraseData *d); + 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 *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, AssignmentPhrase &&r); -AssignmentPhraseList operator &(AssignmentPhrase &&l, const AssignmentPhrase &r); -AssignmentPhraseList operator &(AssignmentPhrase &&l, AssignmentPhrase &&r); +//AssignmentPhraseList operator &(const AssignmentPhrase &l, const AssignmentPhrase &r); +//AssignmentPhraseList operator &(const AssignmentPhrase &l, AssignmentPhrase &&r); +//AssignmentPhraseList operator &(AssignmentPhrase &&l, const AssignmentPhrase &r); +//AssignmentPhraseList operator &(AssignmentPhrase &&l, AssignmentPhrase &&r); class PhraseList{ public: bool isValid; QList data; - PhraseList(); + explicit PhraseList(); PhraseList(const PhraseList &other); PhraseList(const AbstractFieldPhrase &other); PhraseList(const AbstractFieldPhrase *left, const AbstractFieldPhrase &right); @@ -181,7 +184,7 @@ public: ConditionalPhrase(ConditionalPhrase *l, PhraseData::Condition cond, ConditionalPhrase &r); virtual ~ConditionalPhrase(); - ConditionalPhrase operator =(const ConditionalPhrase &other); + ConditionalPhrase &operator =(const ConditionalPhrase &other); ConditionalPhrase operator ==(const QVariant &other); ConditionalPhrase operator ==(const AbstractFieldPhrase &other); ConditionalPhrase operator &&(const ConditionalPhrase &other); @@ -267,8 +270,8 @@ public: return ConditionalPhrase(this, PhraseData::Like, term); } - AssignmentPhrase operator =(const QVariant &other) { - return AssignmentPhrase(this, other); + AssignmentPhrase operator =(const QVariant &v) { + return AssignmentPhrase(this, v); } }; diff --git a/src/query.cpp b/src/query.cpp index eacf1ba..f8c79fd 100644 --- a/src/query.cpp +++ b/src/query.cpp @@ -23,7 +23,7 @@ NUT_BEGIN_NAMESPACE QueryPrivate::QueryPrivate(QueryBase *parent) : q_ptr(parent), - skip(-1), take(-1) + database(0), tableSet(0), skip(-1), take(-1) { } diff --git a/src/query.h b/src/query.h index 28fb454..765d599 100644 --- a/src/query.h +++ b/src/query.h @@ -50,7 +50,7 @@ template bool m_autoDelete; public: - Query(Database *database, TableSetBase *tableSet, bool autoDelete); + explicit Query(Database *database, TableSetBase *tableSet, bool autoDelete); ~Query(); //ddl @@ -520,7 +520,7 @@ Q_OUTOFLINE_TEMPLATE int Query::update(const AssignmentPhraseList &ph) ph, d->wherePhrase); QSqlQuery q = d->database->exec(d->sql); - +qDebug() << d->sql; if (m_autoDelete) deleteLater(); return q.numRowsAffected(); diff --git a/src/query_p.h b/src/query_p.h index 75c8f3b..1bb2b16 100644 --- a/src/query_p.h +++ b/src/query_p.h @@ -37,7 +37,7 @@ class QueryPrivate{ Q_DECLARE_PUBLIC(QueryBase) public: - QueryPrivate(QueryBase *parent); + explicit QueryPrivate(QueryBase *parent); ~QueryPrivate(); QString sql; diff --git a/src/sqlmodel.cpp b/src/sqlmodel.cpp index ff40fa3..9f1a870 100644 --- a/src/sqlmodel.cpp +++ b/src/sqlmodel.cpp @@ -85,4 +85,9 @@ QVariant SqlModel::data(const QModelIndex &index, int role) const return QVariant(); } +SqlModelPrivate::SqlModelPrivate() +{ + +} + NUT_END_NAMESPACE diff --git a/src/sqlmodel.h b/src/sqlmodel.h index e7c5e60..e8c2590 100644 --- a/src/sqlmodel.h +++ b/src/sqlmodel.h @@ -36,7 +36,7 @@ class SqlModel : public QAbstractTableModel Q_OBJECT 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 columnCount(const QModelIndex &parent) const; diff --git a/src/sqlmodel_p.h b/src/sqlmodel_p.h index edd8dc8..7b68e88 100644 --- a/src/sqlmodel_p.h +++ b/src/sqlmodel_p.h @@ -13,6 +13,8 @@ class SqlModelPrivate { SqlModel *q_ptr; Q_DECLARE_PUBLIC(SqlModel) public: + explicit SqlModelPrivate(); + QString tableName; QList rows; diff --git a/src/table.cpp b/src/table.cpp index eeea6ec..e3deae5 100644 --- a/src/table.cpp +++ b/src/table.cpp @@ -39,7 +39,7 @@ NUT_BEGIN_NAMESPACE * 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); } diff --git a/src/tablemodel.cpp b/src/tablemodel.cpp index 882edd7..b42269a 100644 --- a/src/tablemodel.cpp +++ b/src/tablemodel.cpp @@ -408,6 +408,7 @@ FieldModel::FieldModel(const QJsonObject &json) isAutoIncrement = json.value(__nut_AUTO_INCREMENT).toBool(); isPrimaryKey = json.value(__nut_PRIMARY_KEY).toBool(); defaultValue = json.value(__nut_DEFAULT_VALUE).toString(); + isUnique = json.value(__nut_UNIQUE).toBool(); } QJsonObject FieldModel::toJson() const @@ -429,6 +430,7 @@ RelationModel::RelationModel(const QJsonObject &obj) localProperty = obj.value("localProperty").toString(); masterClassName = obj.value("masterClassName").toString(); foreignColumn = obj.value("foreignColumn").toString(); + slaveTable = masterTable = 0; } QJsonObject RelationModel::toJson() const diff --git a/src/tablemodel.h b/src/tablemodel.h index 4fe2f66..c2439c5 100644 --- a/src/tablemodel.h +++ b/src/tablemodel.h @@ -31,13 +31,13 @@ NUT_BEGIN_NAMESPACE class TableModel; 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) { } - FieldModel(const QJsonObject &json); + explicit FieldModel(const QJsonObject &json); QString name; //TODO: QMetaType::Type?? @@ -73,7 +73,7 @@ struct RelationModel{ RelationModel() : localColumn(""), localProperty(""), slaveTable(0), foreignColumn(""), masterTable(0), masterClassName("") {} - RelationModel(const QJsonObject &obj); + explicit RelationModel(const QJsonObject &obj); //slave QString localColumn; @@ -92,9 +92,8 @@ bool operator !=(const RelationModel &l, const RelationModel &r); class TableModel { public: - - TableModel(int typeId, QString tableName = QString::null); - TableModel(QJsonObject json, QString tableName); + explicit TableModel(int typeId, QString tableName = QString::null); + explicit TableModel(QJsonObject json, QString tableName); QJsonObject toJson() const; diff --git a/src/tableset.h b/src/tableset.h index d62fe73..8034a09 100644 --- a/src/tableset.h +++ b/src/tableset.h @@ -39,8 +39,8 @@ template class NUT_EXPORT TableSet : public TableSetBase { public: - TableSet(Database *parent); - TableSet(Table *parent); + explicit TableSet(Database *parent); + explicit TableSet(Table *parent); void append(T *t); void append(QList t); diff --git a/src/tablesetbase_p.h b/src/tablesetbase_p.h index 801c11b..df95a71 100644 --- a/src/tablesetbase_p.h +++ b/src/tablesetbase_p.h @@ -35,8 +35,8 @@ class TableSetBase : public QObject { public: - TableSetBase(Database *parent); - TableSetBase(Table *parent); + explicit TableSetBase(Database *parent); + explicit TableSetBase(Table *parent); virtual int save(Database *db, bool cleanUp = false); void clearChilds(); diff --git a/src/types/dbgeography.h b/src/types/dbgeography.h index 9a7dfd0..3fd834a 100644 --- a/src/types/dbgeography.h +++ b/src/types/dbgeography.h @@ -35,8 +35,8 @@ class NUT_EXPORT DbGeography public: explicit DbGeography(); - DbGeography(const DbGeography &other); - DbGeography(const QVariant &value); + explicit DbGeography(const DbGeography &other); + explicit DbGeography(const QVariant &value); qreal longitude() const; qreal latitude() const; diff --git a/test/basic/maintest.cpp b/test/basic/maintest.cpp index f7e491a..a8a75be 100644 --- a/test/basic/maintest.cpp +++ b/test/basic/maintest.cpp @@ -69,6 +69,7 @@ void MainTest::createUser() void MainTest::createPost() { + TIC(); Post *newPost = new Post; newPost->setTitle("post title"); newPost->setSaveDate(QDateTime::currentDateTime()); @@ -93,6 +94,7 @@ void MainTest::createPost() postId = newPost->id(); QTEST_ASSERT(newPost->id() != 0); + TOC(); qDebug() << "New post inserted with id:" << newPost->id(); } @@ -119,12 +121,24 @@ void MainTest::createPost2() 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() { auto q = db.postTable()->query() ->where(Post::isPublicField()) ->toList(); + auto q2 = db.postTable()->query() + ->where(!Post::isPublicField()) + ->toList(); } void MainTest::selectPosts() diff --git a/test/basic/maintest.h b/test/basic/maintest.h index f03b91f..87eaab0 100644 --- a/test/basic/maintest.h +++ b/test/basic/maintest.h @@ -27,6 +27,7 @@ private slots: void createUser(); void createPost(); void createPost2(); + void updatePostOnTheFly(); void selectPublicts(); void join(); void selectPosts();