diff --git a/.cursor/.prompt/header_navigation작업.md b/.cursor/.prompt/header_navigation작업.md index c1e1205..32f4471 100644 --- a/.cursor/.prompt/header_navigation작업.md +++ b/.cursor/.prompt/header_navigation작업.md @@ -8,8 +8,8 @@ - [x] 헤더 컨테이너/레이아웃 골격 생성(`src/app/components/AppHeader.tsx` 확장) 3) 데이터 연동 설계 -- [ ] 대분류 소스 결정: `GET /api/boards?category=...` 또는 카테고리 전용 API 사용 -- [ ] 소분류(보드) 매핑 규칙 정의(현재 시드 트리 기준) +- [x] 대분류 소스 결정: `GET /api/categories` 사용(대분류+소분류 동시 제공) +- [x] 소분류(보드) 매핑 규칙 정의(현재 시드 트리 기준) 4) 대분류 네비 구현 - [ ] 상단에 대분류 탭 렌더링(정렬/활성 상태 반영) diff --git a/src/app/api/categories/route.ts b/src/app/api/categories/route.ts new file mode 100644 index 0000000..55fe64e --- /dev/null +++ b/src/app/api/categories/route.ts @@ -0,0 +1,18 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +// 대분류(BoardCategory)와 소분류(Board)를 함께 반환 +export async function GET() { + const categories = await prisma.boardCategory.findMany({ + orderBy: [{ sortOrder: "asc" }, { createdAt: "asc" }], + include: { + boards: { + orderBy: [{ sortOrder: "asc" }, { createdAt: "asc" }], + select: { id: true, name: true, slug: true, requiresApproval: true, type: true }, + }, + }, + }); + return NextResponse.json({ categories }); +} + +