Skip to content

Commit 59317c0

Browse files
committed
fix(sanity): guard case study category reference filter against missing language/parent
Build the GROQ filter string and params object conditionally so undefined document.language or a non-array parent no longer produce an invalid query that breaks the category search on CaseStudy documents. Made-with: Cursor
1 parent ed50f5f commit 59317c0

1 file changed

Lines changed: 22 additions & 4 deletions

File tree

apps/sanity/schema/collectionTypes/CaseStudy_Collection.ts

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,29 @@ export default defineType({
7272
options: {
7373
filter: ({ parent, document }) => {
7474
const language = (document as { language?: string })?.language;
75-
const selectedIds = (parent as { _ref?: string }[])?.filter(item => item._ref).map(item => item._ref) || [];
76-
return {
77-
filter: '!(_id in $selectedIds) && !(_id in path("drafts.**")) && language == $lang',
78-
params: { selectedIds, lang: language }
75+
const selectedIds = Array.isArray(parent)
76+
? (parent as { _ref?: string }[])
77+
.filter(item => item?._ref)
78+
.map(item => item._ref as string)
79+
: [];
80+
81+
const conditions = ['!(_id in path("drafts.**"))'];
82+
const params: Record<string, unknown> = {};
83+
84+
if (selectedIds.length > 0) {
85+
conditions.push('!(_id in $selectedIds)');
86+
params.selectedIds = selectedIds;
7987
}
88+
89+
if (language) {
90+
conditions.push('language == $lang');
91+
params.lang = language;
92+
}
93+
94+
return {
95+
filter: conditions.join(' && '),
96+
params,
97+
};
8098
}
8199
}
82100
}),

0 commit comments

Comments
 (0)