Merge branch 'dev' of https://github.com/HamedMasafi/Nut into dev
This commit is contained in:
commit
7bdb0fdd6d
|
|
@ -1 +1 @@
|
|||
Subproject commit b3c550c5bb7c570b1b10492fcedf287c1915af39
|
||||
Subproject commit e2d8a726ef1396c47bf35347ea8b55ca47c6af3b
|
||||
|
|
@ -8,6 +8,10 @@
|
|||
| master | [](https://travis-ci.org/HamedMasafi/Nut) |
|
||||
| dev | [](https://travis-ci.org/HamedMasafi/Nut) |
|
||||
|
||||
[](https://gitlicense.com/license/hamedmasafi/nut)
|
||||
|
||||
[](https://www.codacy.com/app/HamedMasafi/Nut?utm_source=github.com&utm_medium=referral&utm_content=HamedMasafi/Nut&utm_campaign=Badge_Grade)
|
||||
|
||||
## Advanced, Powerful and easy to use ORM for Qt5
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include <QDebug>
|
||||
#include "defines.h"
|
||||
#include "phrases/phraselist.h"
|
||||
#include "phrases/fieldphrase.h"
|
||||
|
||||
NUT_BEGIN_NAMESPACE
|
||||
|
||||
|
|
|
|||
|
|
@ -175,6 +175,9 @@ bool DatabasePrivate::updateDatabase()
|
|||
if (db.lastError().type() == QSqlError::NoError) {
|
||||
|
||||
q->databaseUpdated(last.version(), current.version());
|
||||
if (!last.count())
|
||||
q->databaseCreated();
|
||||
|
||||
} else {
|
||||
qWarning("Unable update database, error = %s",
|
||||
db.lastError().text().toLatin1().data());
|
||||
|
|
@ -541,6 +544,11 @@ QSqlDatabase Database::database()
|
|||
return d->db;
|
||||
}
|
||||
|
||||
void Database::databaseCreated()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Database::databaseUpdated(int oldVersion, int newVersion)
|
||||
{
|
||||
Q_UNUSED(oldVersion);
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ public:
|
|||
|
||||
protected:
|
||||
//remove minor version
|
||||
virtual void databaseCreated();
|
||||
virtual void databaseUpdated(int oldVersion, int newVersion);
|
||||
|
||||
public slots:
|
||||
|
|
|
|||
|
|
@ -827,6 +827,7 @@ QString SqlGeneratorBase::escapeValue(const QVariant &v) const
|
|||
qWarning("No field escape rule for: %s", v.typeName());
|
||||
return QString();
|
||||
}
|
||||
|
||||
return "'" + serialized + "'";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -144,6 +144,7 @@ ConditionalPhrase operator op(const ConditionalPhrase &l, \
|
|||
{ \
|
||||
ConditionalPhrase p; \
|
||||
p.data = new PhraseData; \
|
||||
p.data->type = PhraseData::WithOther; \
|
||||
p.data->operatorCond = cond; \
|
||||
p.data->left = l.data; \
|
||||
p.data->right = r.data; \
|
||||
|
|
@ -156,6 +157,7 @@ ConditionalPhrase operator op(const ConditionalPhrase &l, \
|
|||
{ \
|
||||
ConditionalPhrase p; \
|
||||
p.data = new PhraseData; \
|
||||
p.data->type = PhraseData::WithOther; \
|
||||
p.data->operatorCond = cond; \
|
||||
p.data->left = l.data; \
|
||||
p.data->right = r.data; \
|
||||
|
|
@ -168,6 +170,7 @@ ConditionalPhrase operator op(ConditionalPhrase &&l, \
|
|||
{ \
|
||||
ConditionalPhrase p; \
|
||||
p.data = new PhraseData; \
|
||||
p.data->type = PhraseData::WithOther; \
|
||||
p.data->operatorCond = cond; \
|
||||
p.data->left = l.data; \
|
||||
p.data->right = r.data; \
|
||||
|
|
@ -179,6 +182,7 @@ ConditionalPhrase operator op(ConditionalPhrase &&l, ConditionalPhrase &&r) \
|
|||
{ \
|
||||
ConditionalPhrase p; \
|
||||
p.data = new PhraseData; \
|
||||
p.data->type = PhraseData::WithOther; \
|
||||
p.data->operatorCond = cond; \
|
||||
p.data->left = l.data; \
|
||||
p.data->right = r.data; \
|
||||
|
|
|
|||
19
src/query.h
19
src/query.h
|
|
@ -83,7 +83,7 @@ public:
|
|||
QVariant min(const FieldPhrase<int> &f);
|
||||
QVariant average(const FieldPhrase<int> &f);
|
||||
|
||||
QVariant insert(AssignmentPhraseList p);
|
||||
QVariant insert(const AssignmentPhraseList &p);
|
||||
|
||||
//data mailpulation
|
||||
int update(const AssignmentPhraseList &ph);
|
||||
|
|
@ -91,6 +91,7 @@ public:
|
|||
int remove();
|
||||
|
||||
QSqlQueryModel *toModel();
|
||||
void toModel(QSqlQueryModel *model);
|
||||
|
||||
//debug purpose
|
||||
QString sqlCommand() const;
|
||||
|
|
@ -137,7 +138,7 @@ Q_OUTOFLINE_TEMPLATE QList<T *> Query<T>::toList(int count)
|
|||
d->sql = d->database->sqlGenertor()->selectCommand(
|
||||
d->tableName, d->fieldPhrase, d->wherePhrase, d->orderPhrase,
|
||||
d->relations, d->skip, d->take);
|
||||
qDebug() << d->sql;
|
||||
|
||||
QSqlQuery q = d->database->exec(d->sql);
|
||||
if (q.lastError().isValid()) {
|
||||
qDebug() << q.lastError().text();
|
||||
|
|
@ -410,7 +411,7 @@ Q_OUTOFLINE_TEMPLATE QVariant Query<T>::average(const FieldPhrase<int> &f)
|
|||
}
|
||||
|
||||
template<class T>
|
||||
Q_OUTOFLINE_TEMPLATE QVariant Query<T>::insert(AssignmentPhraseList p)
|
||||
Q_OUTOFLINE_TEMPLATE QVariant Query<T>::insert(const AssignmentPhraseList &p)
|
||||
{
|
||||
Q_D(Query);
|
||||
d->sql = d->database->sqlGenertor()
|
||||
|
|
@ -518,6 +519,7 @@ Q_OUTOFLINE_TEMPLATE int Query<T>::update(const AssignmentPhraseList &ph)
|
|||
d->tableName,
|
||||
ph,
|
||||
d->wherePhrase);
|
||||
|
||||
QSqlQuery q = d->database->exec(d->sql);
|
||||
|
||||
if (m_autoDelete)
|
||||
|
|
@ -541,6 +543,14 @@ Q_OUTOFLINE_TEMPLATE int Query<T>::remove()
|
|||
|
||||
template <class T>
|
||||
Q_OUTOFLINE_TEMPLATE QSqlQueryModel *Query<T>::toModel()
|
||||
{
|
||||
QSqlQueryModel *model = new QSqlQueryModel;
|
||||
toModel(model);
|
||||
return model;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
Q_OUTOFLINE_TEMPLATE void Query<T>::toModel(QSqlQueryModel *model)
|
||||
{
|
||||
Q_D(Query);
|
||||
|
||||
|
|
@ -551,7 +561,6 @@ Q_OUTOFLINE_TEMPLATE QSqlQueryModel *Query<T>::toModel()
|
|||
d->skip, d->take);
|
||||
|
||||
DatabaseModel dbModel = d->database->model();
|
||||
QSqlQueryModel *model = new QSqlQueryModel;
|
||||
model->setQuery(d->sql, d->database->database());
|
||||
|
||||
int fieldIndex = 0;
|
||||
|
|
@ -573,8 +582,6 @@ Q_OUTOFLINE_TEMPLATE QSqlQueryModel *Query<T>::toModel()
|
|||
f->displayName);
|
||||
}
|
||||
}
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
|
|
|
|||
Loading…
Reference in New Issue