"use server" import { revalidateTag, revalidatePath } from 'next/cache' import db from '@/db/db' import { basicContractTemplates } from '@/db/schema' import { eq, inArray } from 'drizzle-orm' export async function disposeDocuments(documentIds: number[]) { try { if (!documentIds || !Array.isArray(documentIds) || documentIds.length === 0) { throw new Error('폐기할 문서 ID가 필요합니다.') } // 문서들을 DISPOSED 상태로 업데이트하고 폐기일시 설정 await db .update(basicContractTemplates) .set({ status: 'DISPOSED', disposedAt: new Date(), updatedAt: new Date(), }) .where(inArray(basicContractTemplates.id, documentIds)) // 캐시 무효화 revalidateTag('basic-contract-templates') revalidatePath('/evcp/basic-contract-template') return { success: true, message: `${documentIds.length}개의 문서가 폐기되었습니다.`, disposedCount: documentIds.length } } catch (error) { console.error('문서 폐기 처리 오류:', error) throw new Error('문서 폐기 처리 중 오류가 발생했습니다.') } } export async function restoreDocuments(documentIds: number[]) { try { if (!documentIds || !Array.isArray(documentIds) || documentIds.length === 0) { throw new Error('복구할 문서 ID가 필요합니다.') } // 문서들을 ACTIVE 상태로 업데이트하고 폐기일시 제거 await db .update(basicContractTemplates) .set({ status: 'ACTIVE', disposedAt: null, updatedAt: new Date(), }) .where(inArray(basicContractTemplates.id, documentIds)) // 캐시 무효화 revalidateTag('basic-contract-templates') revalidatePath('/evcp/basic-contract-template') return { success: true, message: `${documentIds.length}개의 문서가 복구되었습니다.`, restoredCount: documentIds.length } } catch (error) { console.error('문서 복구 처리 오류:', error) throw new Error('문서 복구 처리 중 오류가 발생했습니다.') } }