diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-09-23 02:44:05 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-09-23 02:44:05 +0000 |
| commit | da00bbf203534b2663289d6fe45b6ed8663e7e11 (patch) | |
| tree | 859f0444b679807b1cc1b223aac4989958641d01 /lib/information/service.ts | |
| parent | c8e93fad9b1f3b1e4d99b23fc3d99dd5f463742a (diff) | |
(최겸) 구매 인포메이션, 공지사항 수정
Diffstat (limited to 'lib/information/service.ts')
| -rw-r--r-- | lib/information/service.ts | 36 |
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) |
