실제 카테고리에 맞게 seed 추가
This commit is contained in:
@@ -3,11 +3,15 @@ const { PrismaClient } = require("@prisma/client");
|
|||||||
const prisma = new PrismaClient();
|
const prisma = new PrismaClient();
|
||||||
|
|
||||||
async function upsertCategories() {
|
async function upsertCategories() {
|
||||||
|
// 카테고리 트리 (projectmemo 기준 상위 그룹)
|
||||||
const categories = [
|
const categories = [
|
||||||
{ name: "운영", slug: "ops", sortOrder: 1, status: "active" },
|
{ name: "암실소문 (메인)", slug: "main", sortOrder: 1, status: "active" },
|
||||||
{ name: "커뮤니티", slug: "community", sortOrder: 2, status: "active" },
|
{ name: "명예의 전당", slug: "hall-of-fame", sortOrder: 2, status: "active" },
|
||||||
{ name: "특수", slug: "special", sortOrder: 3, status: "active" },
|
{ name: "주변 제휴업체", slug: "nearby-partners", sortOrder: 3, status: "active" },
|
||||||
{ name: "제휴", slug: "partners", sortOrder: 4, status: "active" },
|
{ name: "제휴업소 정보", slug: "partner-info", sortOrder: 4, status: "active" },
|
||||||
|
{ name: "방문후기", slug: "reviews", sortOrder: 5, status: "active" },
|
||||||
|
{ name: "소통방", slug: "community", sortOrder: 6, status: "active" },
|
||||||
|
{ name: "광고/제휴 문반", slug: "ads-affiliates", sortOrder: 7, status: "active" },
|
||||||
];
|
];
|
||||||
const map = {};
|
const map = {};
|
||||||
for (const c of categories) {
|
for (const c of categories) {
|
||||||
@@ -130,12 +134,33 @@ async function upsertBoards(admin, categoryMap) {
|
|||||||
|
|
||||||
const created = [];
|
const created = [];
|
||||||
for (const b of boards) {
|
for (const b of boards) {
|
||||||
// 카테고리 매핑 규칙
|
// 카테고리 매핑 규칙 (트리 기준 상위 카테고리)
|
||||||
let categorySlug = "community";
|
const mapBySlug = {
|
||||||
if (["notice", "bug-report"].includes(b.slug)) categorySlug = "ops";
|
// 암실소문 (메인)
|
||||||
if (["attendance", "nearby-partners", "ranking", "free-coupons", "monthly-stats"].includes(b.slug)) categorySlug = "special";
|
notice: "main",
|
||||||
if (["partners-photos"].includes(b.slug)) categorySlug = "partners";
|
greetings: "main",
|
||||||
|
"bug-report": "main",
|
||||||
|
event: "main",
|
||||||
|
attendance: "main",
|
||||||
|
// 명예의 전당
|
||||||
|
ranking: "hall-of-fame",
|
||||||
|
"free-coupons": "hall-of-fame",
|
||||||
|
"monthly-stats": "hall-of-fame",
|
||||||
|
// 주변 제휴업체
|
||||||
|
"nearby-partners": "nearby-partners",
|
||||||
|
// 제휴업소 정보
|
||||||
|
"partners-photos": "partner-info",
|
||||||
|
// 방문후기
|
||||||
|
reviews: "reviews",
|
||||||
|
// 소통방(기본값 community로 처리)
|
||||||
|
free: "community",
|
||||||
|
qna: "community",
|
||||||
|
tips: "community",
|
||||||
|
anonymous: "community",
|
||||||
|
"find-therapist": "community",
|
||||||
|
"blue-house": "community",
|
||||||
|
};
|
||||||
|
const categorySlug = mapBySlug[b.slug] || "community";
|
||||||
const category = categoryMap[categorySlug];
|
const category = categoryMap[categorySlug];
|
||||||
const board = await prisma.board.upsert({
|
const board = await prisma.board.upsert({
|
||||||
where: { slug: b.slug },
|
where: { slug: b.slug },
|
||||||
|
|||||||
Reference in New Issue
Block a user