summaryrefslogtreecommitdiff
path: root/lib/information/service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/information/service.ts')
-rw-r--r--lib/information/service.ts32
1 files changed, 17 insertions, 15 deletions
diff --git a/lib/information/service.ts b/lib/information/service.ts
index 02efe616..39e810e4 100644
--- a/lib/information/service.ts
+++ b/lib/information/service.ts
@@ -3,7 +3,7 @@
import { getErrorMessage } from "@/lib/handle-error"
import { desc, or, eq } from "drizzle-orm"
import db from "@/db/db"
-import { pageInformation, menuAssignments, users } from "@/db/schema"
+import { pageInformation, menuTreeNodes, users } from "@/db/schema"
import { saveDRMFile } from "@/lib/file-stroage"
import { decryptWithServerAction } from "@/components/drm/drmUtils"
@@ -144,27 +144,27 @@ export async function checkInformationEditPermission(pagePath: string, userId: s
pagePath // 원본 경로 정확한 매칭
]
- // menu_assignments에서 해당 pagePath와 매칭되는 메뉴 찾기
- const menuAssignment = await db
+ // menu_tree_nodes에서 해당 pagePath와 매칭되는 메뉴 찾기
+ const menuNode = await db
.select()
- .from(menuAssignments)
+ .from(menuTreeNodes)
.where(
or(
- ...menuPathQueries.map(path => eq(menuAssignments.menuPath, path))
+ ...menuPathQueries.map(path => eq(menuTreeNodes.menuPath, path))
)
)
.limit(1)
- if (menuAssignment.length === 0) {
+ if (menuNode.length === 0) {
// 매칭되는 메뉴가 없으면 권한 없음
return false
}
- const assignment = menuAssignment[0]
+ const node = menuNode[0]
const userIdNumber = parseInt(userId)
// 현재 사용자가 manager1 또는 manager2인지 확인
- return assignment.manager1Id === userIdNumber || assignment.manager2Id === userIdNumber
+ return node.manager1Id === userIdNumber || node.manager2Id === userIdNumber
} catch (error) {
console.error("Failed to check information edit permission:", error)
return false
@@ -176,17 +176,21 @@ export async function getEditPermissionDirect(pagePath: string, userId: string)
return await checkInformationEditPermission(pagePath, userId)
}
-// menu_assignments 기반으로 page_information 동기화
+// menu_tree_nodes 기반으로 page_information 동기화
export async function syncInformationFromMenuAssignments() {
try {
- // menu_assignments에서 모든 메뉴 가져오기
- const menuItems = await db.select().from(menuAssignments);
+ // menu_tree_nodes에서 메뉴 타입 노드만 가져오기 (menuPath가 있는 것)
+ const menuItems = await db.select()
+ .from(menuTreeNodes)
+ .where(eq(menuTreeNodes.nodeType, 'menu'));
let processedCount = 0;
// upsert를 사용하여 각 메뉴 항목 처리
for (const menu of menuItems) {
try {
+ if (!menu.menuPath) continue;
+
// 맨 앞의 / 제거하여 pagePath 정규화
const normalizedPagePath = menu.menuPath.startsWith('/')
? menu.menuPath.slice(1)
@@ -195,14 +199,14 @@ export async function syncInformationFromMenuAssignments() {
await db.insert(pageInformation)
.values({
pagePath: normalizedPagePath,
- pageName: menu.menuTitle,
+ pageName: menu.titleKo,
informationContent: "",
isActive: true // 기본값으로 활성화
})
.onConflictDoUpdate({
target: pageInformation.pagePath,
set: {
- pageName: menu.menuTitle,
+ pageName: menu.titleKo,
updatedAt: new Date()
}
});
@@ -213,8 +217,6 @@ export async function syncInformationFromMenuAssignments() {
}
}
- // 캐시 무효화 제거됨
-
return {
success: true,
message: `페이지 정보 동기화 완료: ${processedCount}개 처리됨`