1
0
Fork 0
mirror of synced 2024-08-04 21:02:01 +12:00

Moving limits and offsets back into pre-query.

This commit is contained in:
mike12345567 2024-06-18 12:47:59 +01:00
parent 73013332ae
commit 278242fb55

View file

@ -590,9 +590,28 @@ class InternalBuilder {
}
// start building the query
let query = this.knexWithAlias(knex, endpoint, tableAliases)
// add a base query over all
// handle pagination
let foundOffset: number | null = null
let foundLimit = limit || BASE_LIMIT
if (paginate && paginate.page && paginate.limit) {
// @ts-ignore
const page = paginate.page <= 1 ? 0 : paginate.page - 1
const offset = page * paginate.limit
foundLimit = paginate.limit
foundOffset = offset
} else if (paginate && paginate.offset && paginate.limit) {
foundLimit = paginate.limit
foundOffset = paginate.offset
} else if (paginate && paginate.limit) {
foundLimit = paginate.limit
}
// always add the found limit, unless counting
if (!counting) {
query = query.limit(BASE_LIMIT)
query = query.limit(foundLimit)
}
// add overall pagination
if (!counting && foundOffset) {
query = query.offset(foundOffset)
}
// add filters to the query (where)
query = this.addFilters(query, filters, json.meta.table, {
@ -623,28 +642,10 @@ class InternalBuilder {
endpoint.schema,
tableAliases
)
// handle pagination
let foundOffset: number | null = null
let foundLimit = limit || BASE_LIMIT
if (paginate && paginate.page && paginate.limit) {
// @ts-ignore
const page = paginate.page <= 1 ? 0 : paginate.page - 1
const offset = page * paginate.limit
foundLimit = paginate.limit
foundOffset = offset
} else if (paginate && paginate.offset && paginate.limit) {
foundLimit = paginate.limit
foundOffset = paginate.offset
} else if (paginate && paginate.limit) {
foundLimit = paginate.limit
}
// always add the found limit, unless counting
// add a base query over all
if (!counting) {
query = query.limit(foundLimit)
}
// add overall pagination
if (!counting && foundOffset) {
query = query.offset(foundOffset)
query = query.limit(BASE_LIMIT)
}
return this.addFilters(query, filters, json.meta.table, {