This commit is contained in:
Hamed Masafi 2019-06-03 01:00:05 +04:30
commit 7bdb0fdd6d
8 changed files with 33 additions and 7 deletions

2
3rdparty/serializer vendored

@ -1 +1 @@
Subproject commit b3c550c5bb7c570b1b10492fcedf287c1915af39
Subproject commit e2d8a726ef1396c47bf35347ea8b55ca47c6af3b

View File

@ -8,6 +8,10 @@
| master | [![Build Status](https://travis-ci.org/HamedMasafi/Nut.svg?branch=master)](https://travis-ci.org/HamedMasafi/Nut) |
| dev | [![Build Status](https://travis-ci.org/HamedMasafi/Nut.svg?branch=dev)](https://travis-ci.org/HamedMasafi/Nut) |
[![GitLicense](https://gitlicense.com/badge/hamedmasafi/nut)](https://gitlicense.com/license/hamedmasafi/nut)
[![Codacy
Badge](https://api.codacy.com/project/badge/Grade/f3802610beb946068f6cd2c2b6608a8b)](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

View File

@ -5,6 +5,7 @@
#include <QDebug>
#include "defines.h"
#include "phrases/phraselist.h"
#include "phrases/fieldphrase.h"
NUT_BEGIN_NAMESPACE

View File

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

View File

@ -73,6 +73,7 @@ public:
protected:
//remove minor version
virtual void databaseCreated();
virtual void databaseUpdated(int oldVersion, int newVersion);
public slots:

View File

@ -827,6 +827,7 @@ QString SqlGeneratorBase::escapeValue(const QVariant &v) const
qWarning("No field escape rule for: %s", v.typeName());
return QString();
}
return "'" + serialized + "'";
}

View File

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

View File

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