This change adds support for sort with multiple fields in local API and REST API. Related discussion #2089 Co-authored-by: Dan Ribbens <dan.ribbens@gmail.com>
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import type { JoinQuery, Where } from 'payload'
|
|
|
|
import httpStatus from 'http-status'
|
|
import { findOperation } from 'payload'
|
|
import { isNumber } from 'payload/shared'
|
|
|
|
import type { CollectionRouteHandler } from '../types.js'
|
|
|
|
import { headersWithCors } from '../../../utilities/headersWithCors.js'
|
|
import { sanitizeJoinParams } from '../utilities/sanitizeJoinParams.js'
|
|
|
|
export const find: CollectionRouteHandler = async ({ collection, req }) => {
|
|
const { depth, draft, joins, limit, page, sort, where } = req.query as {
|
|
depth?: string
|
|
draft?: string
|
|
joins?: JoinQuery
|
|
limit?: string
|
|
page?: string
|
|
sort?: string
|
|
where?: Where
|
|
}
|
|
|
|
const result = await findOperation({
|
|
collection,
|
|
depth: isNumber(depth) ? Number(depth) : undefined,
|
|
draft: draft === 'true',
|
|
joins: sanitizeJoinParams(joins),
|
|
limit: isNumber(limit) ? Number(limit) : undefined,
|
|
page: isNumber(page) ? Number(page) : undefined,
|
|
req,
|
|
sort: typeof sort === 'string' ? sort.split(',') : undefined,
|
|
where,
|
|
})
|
|
|
|
return Response.json(result, {
|
|
headers: headersWithCors({
|
|
headers: new Headers(),
|
|
req,
|
|
}),
|
|
status: httpStatus.OK,
|
|
})
|
|
}
|