1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
"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('문서 복구 처리 중 오류가 발생했습니다.')
}
}
|