diff options
Diffstat (limited to 'lib/docu-list-rule/combo-box-settings/service.ts')
| -rw-r--r-- | lib/docu-list-rule/combo-box-settings/service.ts | 33 |
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 { |
