diff --git a/src/generators/sqlgeneratorbase.cpp b/src/generators/sqlgeneratorbase.cpp index 7cdbca8..07dd8b1 100644 --- a/src/generators/sqlgeneratorbase.cpp +++ b/src/generators/sqlgeneratorbase.cpp @@ -466,6 +466,7 @@ QString SqlGeneratorBase::selectCommand(const QString &tableName, sql = sql.replace(_database->model().at(i)->className() + ".", _database->model().at(i)->name() + "."); + appendSkipTake(sql, skip, take); replaceTableNames(sql); return sql + " "; @@ -495,6 +496,7 @@ QString SqlGeneratorBase::selectCommand(const QString &tableName, sql = sql.replace(_database->model().at(i)->className() + ".", _database->model().at(i)->name() + "."); + appendSkipTake(sql, skip, take); replaceTableNames(sql); return sql + " "; @@ -826,6 +828,10 @@ SqlGeneratorBase::operatorString(const PhraseData::Condition &cond) const } } +void SqlGeneratorBase::appendSkipTake(QString &sql, int skip, int take) +{ + +} QString SqlGeneratorBase::createConditionalPhrase(const PhraseData *d) const { diff --git a/src/generators/sqlgeneratorbase_p.h b/src/generators/sqlgeneratorbase_p.h index 897d251..ab9223c 100644 --- a/src/generators/sqlgeneratorbase_p.h +++ b/src/generators/sqlgeneratorbase_p.h @@ -119,7 +119,7 @@ public: virtual QVariant readValue(const QVariant::Type &type, const QVariant &dbValue); virtual QString phrase(const PhraseData *d) const; virtual QString operatorString(const PhraseData::Condition &cond) const; - + virtual void appendSkipTake(QString &sql, int skip = -1, int take = -1); private: QString createConditionalPhrase(const PhraseData *d) const; QString createFieldPhrase(const PhraseList &ph); diff --git a/src/generators/sqlitegenerator.cpp b/src/generators/sqlitegenerator.cpp index 9b71f2e..83ab286 100644 --- a/src/generators/sqlitegenerator.cpp +++ b/src/generators/sqlitegenerator.cpp @@ -71,24 +71,12 @@ QString SqliteGenerator::fieldType(FieldModel *field) return dbType; } -//QString SqliteGenerator::selectCommand(SqlGeneratorBase::AgregateType t, -// QString agregateArg, -// QString tableName, -// QList &wheres, -// QList &orders, -// QList joins, -// int skip, int take) -//{ -// QString command = SqlGeneratorBase::selectCommand(t, agregateArg, -// tableName, -// wheres, orders, -// joins, skip, take); - -// if (take != -1 && skip != -1) -// command.append(QString(" LIMIT %1 OFFSET %2") -// .arg(take) -// .arg(skip)); -// return command; -//} +void SqliteGenerator::appendSkipTake(QString &sql, int skip, int take) +{ + if (take != -1 && skip != -1) + sql.append(QString(" LIMIT %1 OFFSET %2") + .arg(take) + .arg(skip)); +} NUT_END_NAMESPACE diff --git a/src/generators/sqlitegenerator.h b/src/generators/sqlitegenerator.h index d1140a9..1a28c32 100644 --- a/src/generators/sqlitegenerator.h +++ b/src/generators/sqlitegenerator.h @@ -33,11 +33,7 @@ public: QString fieldType(FieldModel *field); -// QString selectCommand(AgregateType t, QString agregateArg, -// QString tableName, -// QList &wheres, -// QList &orders, -// QList joins, int skip, int take); + void appendSkipTake(QString &sql, int skip, int take); }; NUT_END_NAMESPACE diff --git a/src/query.h b/src/query.h index 786f0e9..33e9174 100644 --- a/src/query.h +++ b/src/query.h @@ -307,7 +307,7 @@ Q_OUTOFLINE_TEMPLATE QList Query::select(const FieldPhrase f) d->wherePhrase, d->relations, d->skip, d->take); - +qDebug() << d->sql; QSqlQuery q = d->database->exec(d->sql); while (q.next()) {