Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/apis/universities/server/getRecommendedUniversity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ import { ListUniversity } from "@/types/university";

type GetRecommendedUniversityResponse = { recommendedUniversities: ListUniversity[] };

/**
* 추천 대학 목록을 가져옵니다.
* @returns ServerFetchResult - 호출 측에서 result.ok 체크 필요
*/
const getRecommendedUniversity = async () => {
const endpoint = "/univ-apply-infos/recommend";

Expand Down
10 changes: 8 additions & 2 deletions src/apis/universities/server/getSearchUniversitiesByText.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,17 @@ export const getUniversitiesByText = async (value: string): Promise<ListUniversi
}
const endpoint = `/univ-apply-infos/search/text?value=${encodeURIComponent(value)}`;
const response = await serverFetch<UniversitySearchResponse>(endpoint);
return response.ok ? response.data.univApplyInfoPreviews : [];

if (!response.ok) {
throw new Error(`Failed to fetch universities by text: ${response.error}`);
}

return response.data.univApplyInfoPreviews;
};

export const getAllUniversities = async (): Promise<ListUniversity[]> => {
return getUniversitiesByText("");
const universities = await getUniversitiesByText("");
return universities;
};

export const getCategorizedUniversities = async (): Promise<AllRegionsUniversityList> => {
Expand Down
4 changes: 4 additions & 0 deletions src/apis/universities/server/getUniversityDetail.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,9 @@ import { University } from "@/types/university";
export const getUniversityDetail = async (universityInfoForApplyId: number): Promise<University | undefined> => {
const result = await serverFetch<University>(`/univ-apply-infos/${universityInfoForApplyId}`);

if (!result.ok) {
throw new Error(`Failed to fetch university detail for id ${universityInfoForApplyId}: ${result.error}`);
}

return result.data;
};
11 changes: 9 additions & 2 deletions src/app/(home)/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,15 @@ const structuredData = {

const HomePage = async () => {
const newsList = await fetchAllNews();
const { data } = await getRecommendedUniversity();
const recommendedUniversities = data?.recommendedUniversities || [];
const recommendedUniversitiesResponse = await getRecommendedUniversity();

// 빌드 시 필수 데이터 검증
if (!recommendedUniversitiesResponse.ok) {
throw new Error("Failed to fetch recommended universities for home page");
}

const recommendedUniversities = recommendedUniversitiesResponse.data.recommendedUniversities;

// 권역별 전체 대학 리스트를 미리 가져와 빌드합니다
const allRegionsUniversityList = await getCategorizedUniversities();

Expand Down
12 changes: 7 additions & 5 deletions src/app/community/[boardCode]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,15 @@ const CommunityPage = async ({ params }: CommunityPageProps) => {
// 서버에서 데이터 prefetch (ISR - 수동 revalidate만)
const result = await getPostListServer({ boardCode, category: defaultCategory, revalidate: false });

if (result.ok) {
// React Query 캐시에 데이터 설정 (서버 fetch와 동일한 category 사용)
queryClient.setQueryData([CommunityQueryKeys.postList, boardCode, defaultCategory], {
data: result.data,
});
if (!result.ok) {
throw new Error(`Failed to fetch posts for board: ${boardCode}`);
}

// React Query 캐시에 데이터 설정 (서버 fetch와 동일한 category 사용)
queryClient.setQueryData([CommunityQueryKeys.postList, boardCode, defaultCategory], {
data: result.data,
});

return (
<div className="w-full">
<HydrationBoundary state={dehydrate(queryClient)}>
Expand Down
4 changes: 1 addition & 3 deletions src/app/university/[id]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,7 @@ export async function generateMetadata({ params }: MetadataProps): Promise<Metad
const universityData = await getUniversityDetail(Number(id));

if (!universityData) {
return {
title: "파견 학교 상세",
};
throw new Error(`Failed to fetch university detail for id: ${id}`);
}

const convertedKoreanName =
Expand Down
Loading