summaryrefslogtreecommitdiff
path: root/lib/docu-list-rule/document-class
diff options
context:
space:
mode:
author0-Zz-ang <s1998319@gmail.com>2025-08-09 01:09:20 +0900
committer0-Zz-ang <s1998319@gmail.com>2025-08-09 01:09:20 +0900
commitf30678aa2956620177e61cbcc0fb57e9ce6872f1 (patch)
treeac0092fb7ab8ee2011d9f75c925e640c832f5425 /lib/docu-list-rule/document-class
parent3230371034bb9a28d6be464b834c5a91ee598022 (diff)
(박서영)docu-list-rule페이지 내 프로젝트 해양만조회가능하도록 수정
Diffstat (limited to 'lib/docu-list-rule/document-class')
-rw-r--r--lib/docu-list-rule/document-class/service.ts43
-rw-r--r--lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx11
-rw-r--r--lib/docu-list-rule/document-class/table/document-class-table.tsx1
3 files changed, 14 insertions, 41 deletions
diff --git a/lib/docu-list-rule/document-class/service.ts b/lib/docu-list-rule/document-class/service.ts
index 91a4e053..2ec31ae6 100644
--- a/lib/docu-list-rule/document-class/service.ts
+++ b/lib/docu-list-rule/document-class/service.ts
@@ -23,13 +23,13 @@ export async function getDocumentClassCodeGroups(input: {
const { page, perPage, sort, search, filters, joinOperator } = input
const offset = (page - 1) * perPage
- // 기본 조건
- let whereConditions = sql`${documentClasses.isActive} = true`
+ // 기본 조건 (plant 타입 프로젝트만)
+ let whereConditions = sql`${documentClasses.isActive} = true AND ${projects.type} = 'plant'`
// 검색 조건
if (search) {
const searchTerm = `%${search}%`
- whereConditions = sql`${whereConditions} AND (
+ whereConditions = sql`${documentClasses.isActive} = true AND ${projects.type} = 'plant' AND (
${documentClasses.code} ILIKE ${searchTerm} OR
${documentClasses.value} ILIKE ${searchTerm} OR
${documentClasses.description} ILIKE ${searchTerm} OR
@@ -102,7 +102,8 @@ export async function getDocumentClassCodeGroups(input: {
updatedAt: documentClasses.updatedAt,
projectId: documentClasses.projectId,
projectCode: projects.code,
- projectName: projects.name,
+ projectName: projects.name,
+ projectType: projects.type,
})
.from(documentClasses)
.leftJoin(projects, eq(documentClasses.projectId, projects.id))
@@ -179,38 +180,6 @@ export async function createDocumentClassCodeGroup(input: {
}
}
- // 해당 프로젝트의 Code Group이 존재하는지 확인
- const existingCodeGroup = await db
- .select({ id: codeGroups.id })
- .from(codeGroups)
- .where(and(
- eq(codeGroups.projectId, input.projectId), // projectId로 변경
- eq(codeGroups.groupId, 'DOC_CLASS')
- ))
- .limit(1)
-
- let codeGroupId: number | null = null
-
- if (existingCodeGroup.length === 0) {
- // Code Group이 없으면 자동으로 생성
- const [newCodeGroup] = await db
- .insert(codeGroups)
- .values({
- projectId: input.projectId, // projectId로 변경
- groupId: 'DOC_CLASS',
- description: 'Document Class',
- codeFormat: 'DOC_CLASS_###',
- expressions: '^DOC_CLASS_\\d{3}$',
- controlType: 'Combobox',
- isActive: true,
- })
- .returning({ id: codeGroups.id })
-
- codeGroupId = newCodeGroup.id
- } else {
- codeGroupId = existingCodeGroup[0].id
- }
-
const [newDocumentClass] = await db
.insert(documentClasses)
.values({
@@ -218,7 +187,7 @@ export async function createDocumentClassCodeGroup(input: {
code: newCode,
value: formattedValue,
description: input.description || "",
- codeGroupId: codeGroupId,
+ codeGroupId: null, // Code Group 연결 제거
isActive: true,
})
.returning({ id: documentClasses.id })
diff --git a/lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx b/lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx
index dfd1d7f2..a51b0598 100644
--- a/lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx
+++ b/lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx
@@ -54,7 +54,7 @@ export function DocumentClassAddDialog({
}: DocumentClassAddDialogProps) {
const [open, setOpen] = React.useState(false)
const [isPending, startTransition] = React.useTransition()
- const [projects, setProjects] = React.useState<Array<{ id: number; code: string; name: string }>>([])
+ const [projects, setProjects] = React.useState<Array<{ id: number; code: string; name: string; type: string }>>([])
const form = useForm<CreateDocumentClassSchema>({
resolver: zodResolver(createDocumentClassSchema),
@@ -78,10 +78,15 @@ export function DocumentClassAddDialog({
sort: [],
filters: [],
joinOperator: "and",
- flags: []
+ flags: [],
+ code: "",
+ name: "",
+ type: ""
})
if (result.data) {
- setProjects(result.data)
+ // plant 타입의 프로젝트만 필터링
+ const plantProjects = result.data.filter(project => project.type === 'plant')
+ setProjects(plantProjects)
}
} catch (error) {
console.error("Failed to load projects:", error)
diff --git a/lib/docu-list-rule/document-class/table/document-class-table.tsx b/lib/docu-list-rule/document-class/table/document-class-table.tsx
index c9156ff7..03855fe1 100644
--- a/lib/docu-list-rule/document-class/table/document-class-table.tsx
+++ b/lib/docu-list-rule/document-class/table/document-class-table.tsx
@@ -25,7 +25,6 @@ export function DocumentClassTable({ promises }: DocumentClassTableProps) {
const [selectedDocumentClass, setSelectedDocumentClass] = React.useState<typeof documentClasses.$inferSelect | null>(null)
const refreshData = React.useCallback(() => {
- // 전체 페이지 새로고침 대신 router.refresh() 사용 (성능 개선)
router.refresh()
}, [router])