summaryrefslogtreecommitdiff
path: root/lib/information/service.ts
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-09-23 02:44:05 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-09-23 02:44:05 +0000
commitda00bbf203534b2663289d6fe45b6ed8663e7e11 (patch)
tree859f0444b679807b1cc1b223aac4989958641d01 /lib/information/service.ts
parentc8e93fad9b1f3b1e4d99b23fc3d99dd5f463742a (diff)
(최겸) 구매 인포메이션, 공지사항 수정
Diffstat (limited to 'lib/information/service.ts')
-rw-r--r--lib/information/service.ts36
1 files changed, 25 insertions, 11 deletions
diff --git a/lib/information/service.ts b/lib/information/service.ts
index 2d3ad079..02efe616 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 } from "@/db/schema"
+import { pageInformation, menuAssignments, users } from "@/db/schema"
import { saveDRMFile } from "@/lib/file-stroage"
import { decryptWithServerAction } from "@/components/drm/drmUtils"
@@ -25,10 +25,23 @@ import type { PageInformation, InformationAttachment } from "@/db/schema/informa
// 간단한 인포메이션 목록 조회 (페이지네이션 없이 전체 조회)
export async function getInformationLists() {
try {
- // 전체 데이터 조회 (클라이언트에서 검색 처리)
+ // 전체 데이터 조회 (클라이언트에서 검색 처리, 생성자/수정자 정보 포함)
const data = await db
- .select()
+ .select({
+ id: pageInformation.id,
+ pagePath: pageInformation.pagePath,
+ pageName: pageInformation.pageName,
+ informationContent: pageInformation.informationContent,
+ isActive: pageInformation.isActive,
+ createdBy: pageInformation.createdBy,
+ createdAt: pageInformation.createdAt,
+ updatedBy: pageInformation.updatedBy,
+ updatedAt: pageInformation.updatedAt,
+ updatedByName: users.name,
+ updatedByEmail: users.email,
+ })
.from(pageInformation)
+ .leftJoin(users, eq(pageInformation.updatedBy, users.id))
.orderBy(desc(pageInformation.createdAt))
return { data }
@@ -68,28 +81,29 @@ export async function getPageInformationDirect(pagePath: string) {
}
// 인포메이션 수정 (내용과 첨부파일만)
-export async function updateInformationData(input: UpdateInformationSchema) {
+export async function updateInformationData(input: UpdateInformationSchema, userId?: string) {
try {
const { id, ...updateData } = input
-
+
// 수정 가능한 필드만 허용
const allowedFields = {
informationContent: updateData.informationContent,
isActive: updateData.isActive,
+ updatedBy: userId ? parseInt(userId) : null,
updatedAt: new Date()
}
-
+
const result = await updateInformation(id, allowedFields)
-
+
if (!result) {
return {
success: false,
message: "인포메이션을 찾을 수 없거나 수정에 실패했습니다."
}
}
-
+
// 캐시 무효화 제거됨
-
+
return {
success: true,
message: "인포메이션이 성공적으로 수정되었습니다."
@@ -174,8 +188,8 @@ export async function syncInformationFromMenuAssignments() {
for (const menu of menuItems) {
try {
// 맨 앞의 / 제거하여 pagePath 정규화
- const normalizedPagePath = menu.menuPath.startsWith('/')
- ? menu.menuPath.slice(1)
+ const normalizedPagePath = menu.menuPath.startsWith('/')
+ ? menu.menuPath.slice(1)
: menu.menuPath;
await db.insert(pageInformation)