summaryrefslogtreecommitdiff
path: root/lib/docu-list-rule/combo-box-settings/service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/docu-list-rule/combo-box-settings/service.ts')
-rw-r--r--lib/docu-list-rule/combo-box-settings/service.ts33
1 files changed, 14 insertions, 19 deletions
diff --git a/lib/docu-list-rule/combo-box-settings/service.ts b/lib/docu-list-rule/combo-box-settings/service.ts
index 70046828..2c5ee42b 100644
--- a/lib/docu-list-rule/combo-box-settings/service.ts
+++ b/lib/docu-list-rule/combo-box-settings/service.ts
@@ -229,39 +229,34 @@ export async function createComboBoxOption(input: {
}
}
- const codeGroupDescription = codeGroup[0].description
-
- // 해당 Code Group의 마지막 옵션 번호 찾기
- const lastOption = await db
- .select({ code: comboBoxSettings.code })
+ // 코드 중복 체크
+ const existingOption = await db
+ .select({ id: comboBoxSettings.id })
.from(comboBoxSettings)
- .where(eq(comboBoxSettings.codeGroupId, input.codeGroupId))
- .orderBy(sql`CAST(SUBSTRING(${comboBoxSettings.code} FROM ${codeGroupDescription.length + 2}) AS INTEGER) DESC`)
+ .where(
+ sql`${comboBoxSettings.codeGroupId} = ${input.codeGroupId} AND ${comboBoxSettings.code} = ${input.code}`
+ )
.limit(1)
- let nextNumber = 1
- if (lastOption.length > 0 && lastOption[0].code) {
- const prefix = `${codeGroupDescription}_`
- if (lastOption[0].code.startsWith(prefix)) {
- const lastNumber = parseInt(lastOption[0].code.replace(prefix, ''))
- if (!isNaN(lastNumber)) {
- nextNumber = lastNumber + 1
- }
+ if (existingOption.length > 0) {
+ return {
+ success: false,
+ error: "이미 존재하는 코드입니다."
}
}
- const newCode = `${codeGroupDescription}_${nextNumber}`
-
const [newOption] = await db
.insert(comboBoxSettings)
.values({
codeGroupId: input.codeGroupId,
- code: newCode,
- description: input.description,
+ code: input.code,
+ description: input.description || "-",
remark: input.remark,
})
.returning({ id: comboBoxSettings.id })
+
+
revalidatePath("/evcp/docu-list-rule/combo-box-settings")
return {