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)
|
||||
|
||||
public:
|
||||
ChangeLogTable(QObject *parentTableSet = Q_NULLPTR);
|
||||
explicit ChangeLogTable(QObject *parentTableSet = Q_NULLPTR);
|
||||
};
|
||||
|
||||
NUT_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -52,7 +52,9 @@ NUT_BEGIN_NAMESPACE
|
|||
qulonglong DatabasePrivate::lastId = 0;
|
||||
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)
|
||||
|
||||
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();
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ class DatabasePrivate
|
|||
Q_DECLARE_PUBLIC(Database)
|
||||
|
||||
public:
|
||||
DatabasePrivate(Database *parent);
|
||||
explicit DatabasePrivate(Database *parent);
|
||||
|
||||
bool open(bool updateDatabase);
|
||||
|
||||
|
|
|
|||
|
|
@ -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++){
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE
|
|||
class PostgreSqlGenerator : public SqlGeneratorBase
|
||||
{
|
||||
public:
|
||||
PostgreSqlGenerator(Database *parent);
|
||||
explicit PostgreSqlGenerator(Database *parent);
|
||||
|
||||
QString fieldType(FieldModel *field);
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ public:
|
|||
SignleField
|
||||
};
|
||||
|
||||
SqlGeneratorBase(Database *parent);
|
||||
explicit SqlGeneratorBase(Database *parent);
|
||||
virtual ~SqlGeneratorBase();
|
||||
|
||||
virtual QString masterDatabaseName(QString databaseName);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
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)
|
||||
: 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
|
||||
|
|
|
|||
31
src/phrase.h
31
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<PhraseData*> 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<const PhraseData*> 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);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ template <class T>
|
|||
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<T>::update(const AssignmentPhraseList &ph)
|
|||
ph,
|
||||
d->wherePhrase);
|
||||
QSqlQuery q = d->database->exec(d->sql);
|
||||
|
||||
qDebug() << d->sql;
|
||||
if (m_autoDelete)
|
||||
deleteLater();
|
||||
return q.numRowsAffected();
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ class QueryPrivate{
|
|||
Q_DECLARE_PUBLIC(QueryBase)
|
||||
|
||||
public:
|
||||
QueryPrivate(QueryBase *parent);
|
||||
explicit QueryPrivate(QueryBase *parent);
|
||||
~QueryPrivate();
|
||||
|
||||
QString sql;
|
||||
|
|
|
|||
|
|
@ -85,4 +85,9 @@ QVariant SqlModel::data(const QModelIndex &index, int role) const
|
|||
return QVariant();
|
||||
}
|
||||
|
||||
SqlModelPrivate::SqlModelPrivate()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
NUT_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ class SqlModelPrivate {
|
|||
SqlModel *q_ptr;
|
||||
Q_DECLARE_PUBLIC(SqlModel)
|
||||
public:
|
||||
explicit SqlModelPrivate();
|
||||
|
||||
QString tableName;
|
||||
|
||||
QList<Table*> rows;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -39,8 +39,8 @@ template<class T>
|
|||
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 *> t);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ private slots:
|
|||
void createUser();
|
||||
void createPost();
|
||||
void createPost2();
|
||||
void updatePostOnTheFly();
|
||||
void selectPublicts();
|
||||
void join();
|
||||
void selectPosts();
|
||||
|
|
|
|||
Loading…
Reference in New Issue