summaryrefslogtreecommitdiff
path: root/lib/basic-contract/actions.ts
blob: eb4389ae90584840ff3ef3bcaa4bf1cefd920f78 (plain)
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('문서 복구 처리 중 오류가 발생했습니다.')
  }
}