import { useMainContext } from "../../layout/MainProvider"; import { PostType, Prisma } from "@nice/common"; import PostList from "@web/src/components/models/course/list/PostList"; import { useMemo } from "react"; import CourseCard from "./CourseCard"; import PostCard from "@web/src/components/models/course/card/PostCard"; export function CoursesContainer() { const { searchValue, selectedTerms } = useMainContext(); const termFilters = useMemo(() => { return Object.entries(selectedTerms) .filter(([, terms]) => terms.length > 0) .map(([, terms]) => terms); }, [selectedTerms]); const searchCondition: Prisma.StringNullableFilter = { contains: searchValue, mode: "insensitive" as Prisma.QueryMode, // 使用类型断言 }; return ( <> } params={{ pageSize: 12, where: { type: PostType.COURSE, AND: termFilters.map((termFilter) => ({ terms: { some: { id: { in: termFilter, // 确保至少有一个 term.id 在当前 termFilter 中 }, }, }, })), OR: [ { title: searchCondition }, { subTitle: searchCondition }, { content: searchCondition }, { terms: { some: { name: searchCondition, }, }, }, ], }, }} cols={4}> ); } export default CoursesContainer;