fixed query limit offset order

This commit is contained in:
Sascha Kuehl 2024-02-25 19:04:04 +01:00
parent 6f5326941e
commit b1f2d94c7a
3 changed files with 9 additions and 6 deletions

View File

@ -141,8 +141,8 @@ int main()
.where(qh::books.published_in < 2008 && qh::authors.last_name == "King") .where(qh::books.published_in < 2008 && qh::authors.last_name == "King")
.group_by(qh::books.published_in) .group_by(qh::books.published_in)
.order_by(qh::books.title).asc() .order_by(qh::books.title).asc()
// .offset(2) .limit(5)
// .limit(5) .offset(2)
// .str(); // .str();
.fetch_all(); .fetch_all();
// .fetch_all<book>(); // .fetch_all<book>();

View File

@ -78,16 +78,20 @@ private:
std::unique_ptr<query_result_impl> fetch(); std::unique_ptr<query_result_impl> fetch();
}; };
class query_offset_intermediate;
class query_limit_intermediate : public query_select_finish class query_limit_intermediate : public query_select_finish
{ {
public: public:
using query_select_finish::query_select_finish; using query_select_finish::query_select_finish;
query_offset_intermediate offset(size_t offset);
}; };
class query_offset_intermediate : public query_intermediate class query_offset_intermediate : public query_select_finish
{ {
public: public:
using query_intermediate::query_intermediate; using query_select_finish::query_select_finish;
query_limit_intermediate limit(size_t limit); query_limit_intermediate limit(size_t limit);
}; };
@ -97,7 +101,6 @@ class query_order_direction_intermediate : public query_select_finish
public: public:
using query_select_finish::query_select_finish; using query_select_finish::query_select_finish;
query_offset_intermediate offset(size_t offset);
query_limit_intermediate limit(size_t limit); query_limit_intermediate limit(size_t limit);
}; };

View File

@ -41,7 +41,7 @@ statement query_select_finish::prepare()
query_intermediate::query_intermediate(connection &db, const std::shared_ptr<sql::schema> &schema, query_data &data) query_intermediate::query_intermediate(connection &db, const std::shared_ptr<sql::schema> &schema, query_data &data)
: basic_query_intermediate(db, schema), data_(data) {} : basic_query_intermediate(db, schema), data_(data) {}
query_offset_intermediate query_order_direction_intermediate::offset(size_t offset) query_offset_intermediate query_limit_intermediate::offset(size_t offset)
{ {
data_.parts.push_back(std::make_unique<query_offset_part>(offset)); data_.parts.push_back(std::make_unique<query_offset_part>(offset));
return {connection_, schema_, data_}; return {connection_, schema_, data_};