From 2cb6416e2f30e3b0c275f0382a05271b0f6dc7da Mon Sep 17 00:00:00 2001 From: Arash <38922203+arashsheyda@users.noreply.github.com> Date: Fri, 21 Jun 2024 16:10:10 -0600 Subject: [PATCH 1/3] fix: add field filtering based on query parameters for search.json --- server/api/search.json.get.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/server/api/search.json.get.ts b/server/api/search.json.get.ts index d27121431..bd26dfc13 100644 --- a/server/api/search.json.get.ts +++ b/server/api/search.json.get.ts @@ -1,7 +1,13 @@ import { serverQueryContent } from '#content/server' export default eventHandler(async (event) => { - return await serverQueryContent(event, '/docs').where({ + + const { select } = getQuery<{ select: string | undefined }>(event) + const fieldsToSelect = select?.split(',') ?? [] + + return await serverQueryContent(event, '/docs') + .only(fieldsToSelect) + .where({ _type: 'markdown', _path: { $and: [{ From 9b56108a12424fbd51532ffcabf506d8cd496cb1 Mon Sep 17 00:00:00 2001 From: Arash <38922203+arashsheyda@users.noreply.github.com> Date: Fri, 21 Jun 2024 16:11:42 -0600 Subject: [PATCH 2/3] chore: lint --- server/api/search.json.get.ts | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/server/api/search.json.get.ts b/server/api/search.json.get.ts index bd26dfc13..19a9d350b 100644 --- a/server/api/search.json.get.ts +++ b/server/api/search.json.get.ts @@ -1,21 +1,20 @@ import { serverQueryContent } from '#content/server' export default eventHandler(async (event) => { - const { select } = getQuery<{ select: string | undefined }>(event) const fieldsToSelect = select?.split(',') ?? [] return await serverQueryContent(event, '/docs') - .only(fieldsToSelect) - .where({ - _type: 'markdown', - _path: { - $and: [{ - $ne: new RegExp('^/docs/bridge') - }, { - $ne: new RegExp('^/docs/migration') - }] - }, - navigation: { $ne: false } - }).find() + .only(fieldsToSelect) + .where({ + _type: 'markdown', + _path: { + $and: [{ + $ne: new RegExp('^/docs/bridge') + }, { + $ne: new RegExp('^/docs/migration') + }] + }, + navigation: { $ne: false } + }).find() }) From bd4392a423c0f8eff2be8671f204c953cb6a68c5 Mon Sep 17 00:00:00 2001 From: Arash <38922203+arashsheyda@users.noreply.github.com> Date: Sat, 6 Jul 2024 10:48:11 -0600 Subject: [PATCH 3/3] fix: filter afterwards --- server/api/search.json.get.ts | 40 +++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/server/api/search.json.get.ts b/server/api/search.json.get.ts index 19a9d350b..0f0a121ea 100644 --- a/server/api/search.json.get.ts +++ b/server/api/search.json.get.ts @@ -2,19 +2,31 @@ import { serverQueryContent } from '#content/server' export default eventHandler(async (event) => { const { select } = getQuery<{ select: string | undefined }>(event) - const fieldsToSelect = select?.split(',') ?? [] - return await serverQueryContent(event, '/docs') - .only(fieldsToSelect) - .where({ - _type: 'markdown', - _path: { - $and: [{ - $ne: new RegExp('^/docs/bridge') - }, { - $ne: new RegExp('^/docs/migration') - }] - }, - navigation: { $ne: false } - }).find() + const docs = await serverQueryContent(event, '/docs').where({ + _type: 'markdown', + _path: { + $and: [{ + $ne: new RegExp('^/docs/bridge') + }, { + $ne: new RegExp('^/docs/migration') + }] + }, + navigation: { $ne: false } + }).find() + + if (select.length) { + const fieldsToSelect = select.split(',') ?? [] + return docs.map((doc) => { + return fieldsToSelect.reduce((acc, field) => { + if (doc[field] !== undefined) { + acc[field] = doc[field] + } + return acc + }, {}) + }) + } + else { + return docs + } })