diff options
Diffstat (limited to 'lib/menu-list/servcie.ts')
| -rw-r--r-- | lib/menu-list/servcie.ts | 61 |
1 files changed, 36 insertions, 25 deletions
diff --git a/lib/menu-list/servcie.ts b/lib/menu-list/servcie.ts index 8686bf43..cd414ab4 100644 --- a/lib/menu-list/servcie.ts +++ b/lib/menu-list/servcie.ts @@ -3,7 +3,7 @@ "use server"; import db from "@/db/db"; -import { menuAssignments, users } from "@/db/schema"; +import { menuAssignments, users, pageInformation, notice } from "@/db/schema"; import { eq, and } from "drizzle-orm"; import { revalidatePath, revalidateTag } from "next/cache"; import { mainNav, mainNavVendor, additionalNav, additionalNavVendor } from "@/config/menuConfig"; @@ -27,10 +27,10 @@ function extractMenusFromConfig(): MenuData[] { section.items.forEach(item => { menus.push({ menuPath: item.href, - menuTitle: item.title, - menuDescription: item.description, - menuGroup: item.group, - sectionTitle: section.title, + menuTitle: item.titleKey, + menuDescription: item.descriptionKey, + menuGroup: item.groupKey, + sectionTitle: section.titleKey, domain: "evcp" }); }); @@ -40,8 +40,8 @@ function extractMenusFromConfig(): MenuData[] { additionalNav.forEach(item => { menus.push({ menuPath: item.href, - menuTitle: item.title, - menuDescription: item.description, + menuTitle: item.titleKey, + menuDescription: item.descriptionKey, menuGroup: undefined, sectionTitle: "추가 메뉴", domain: "evcp" @@ -53,10 +53,10 @@ function extractMenusFromConfig(): MenuData[] { section.items.forEach(item => { menus.push({ menuPath: item.href, - menuTitle: item.title, - menuDescription: item.description, - menuGroup: item.group, - sectionTitle: section.title, + menuTitle: item.titleKey, + menuDescription: item.descriptionKey, + menuGroup: item.groupKey, + sectionTitle: section.titleKey, domain: "partners" }); }); @@ -66,8 +66,8 @@ function extractMenusFromConfig(): MenuData[] { additionalNavVendor.forEach(item => { menus.push({ menuPath: item.href, - menuTitle: item.title, - menuDescription: item.description, + menuTitle: item.titleKey, + menuDescription: item.descriptionKey, menuGroup: undefined, sectionTitle: "추가 메뉴", domain: "partners" @@ -84,23 +84,34 @@ export async function initializeMenuAssignments() { const existingMenus = await db.select().from(menuAssignments); const existingPaths = new Set(existingMenus.map(m => m.menuPath)); - // 새로운 메뉴만 추가 + // 새로운 메뉴만 추가 (특정 경로 예외처리) const newMenus = configMenus.filter(menu => !existingPaths.has(menu.menuPath)); console.log(newMenus, newMenus) if (newMenus.length > 0) { - await db.insert(menuAssignments).values( - newMenus.map(menu => ({ - menuPath: menu.menuPath, - menuTitle: menu.menuTitle, - menuDescription: menu.menuDescription || null, - menuGroup: menu.menuGroup || null, - sectionTitle: menu.sectionTitle, - domain: menu.domain, - isActive: true, - })) - ); + // 개별적으로 insert하여 중복 오류 처리 + for (const menu of newMenus) { + try { + await db.insert(menuAssignments).values({ + menuPath: menu.menuPath, + menuTitle: menu.menuTitle, + menuDescription: menu.menuDescription || null, + menuGroup: menu.menuGroup || null, + sectionTitle: menu.sectionTitle, + domain: menu.domain, + isActive: true, + }); + } catch (insertError: any) { + // /partners/vendor-data 경로의 중복 오류는 무시 + if (insertError?.code === '23505' && menu.menuPath === '/partners/vendor-data') { + console.warn(`중복 메뉴 경로 건너뛰기: ${menu.menuPath}`); + continue; + } + // 다른 오류는 다시 throw + throw insertError; + } + } } // 기존 메뉴 정보 업데이트 (title, description 등이 변경될 수 있음) |
