diff --git a/docs/api/openapi.yml b/docs/api/openapi.yml index dcba3128..659336fd 100644 --- a/docs/api/openapi.yml +++ b/docs/api/openapi.yml @@ -2023,7 +2023,7 @@ paths: type: number - name: order in: query - description: Ordering of the records by insert date + description: Ordering of the records by insert date. If no order is supplied, results are sorted by heir mongoDB ObjectId. schema: $ref: '#/components/schemas/Order' - name: page diff --git a/lib/api/messages.js b/lib/api/messages.js index 7f678e4b..17a7eb30 100644 --- a/lib/api/messages.js +++ b/lib/api/messages.js @@ -536,7 +536,7 @@ module.exports = (db, server, messageHandler, userHandler, storageHandler, setti const schema = searchSchema.keys({ threadCounters: booleanSchema.default(false), limit: Joi.number().default(20).min(1).max(250), - order: Joi.any().empty('').allow('asc', 'desc').default('desc'), + order: Joi.any().empty('').allow('asc', 'desc').optional(), next: nextPageCursorSchema, previous: previousPageCursorSchema, page: pageNrSchema @@ -570,7 +570,7 @@ module.exports = (db, server, messageHandler, userHandler, storageHandler, setti let page = result.value.page; let pageNext = result.value.next; let pagePrevious = result.value.previous; - let sortAscending = result.value.order === 'asc'; + let order = result.value.order; let { filter, query } = await prepareSearchFilter(db, user, result.value); @@ -611,8 +611,8 @@ module.exports = (db, server, messageHandler, userHandler, storageHandler, setti flags: true } }, - paginatedField: 'idate', - sortAscending + paginatedField: order !== undefined ? 'idate' : "_id", + sortAscending: order === 'asc' ? true : undefined }; if (pageNext) {