summaryrefslogtreecommitdiff
path: root/lib/vendor-pool/service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vendor-pool/service.ts')
-rw-r--r--lib/vendor-pool/service.ts35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/vendor-pool/service.ts b/lib/vendor-pool/service.ts
index 3d83e3aa..97a0bcee 100644
--- a/lib/vendor-pool/service.ts
+++ b/lib/vendor-pool/service.ts
@@ -763,6 +763,23 @@ export async function createVendorPool(data: Omit<VendorPool, 'id' | 'registrati
} catch (err) {
debugError('Vendor Pool 생성 실패', { error: err, inputData: data });
console.error("Error in createVendorPool:", err);
+
+ // Unique 제약 조건 위반 감지
+ const errorMessage = err instanceof Error ? err.message : String(err);
+ if (errorMessage.includes('unique_vendor_pool_combination') ||
+ errorMessage.includes('duplicate key value') ||
+ errorMessage.includes('violates unique constraint')) {
+ debugError('Unique 제약 조건 위반 감지', {
+ constructionSector: data.constructionSector,
+ htDivision: data.htDivision,
+ materialGroupCode: data.materialGroupCode,
+ vendorName: data.vendorName,
+ error: err
+ });
+ // Unique 제약 위반의 경우 특별한 에러 객체를 throw
+ throw new Error('DUPLICATE_VENDOR_POOL');
+ }
+
return null;
}
}
@@ -958,6 +975,24 @@ export async function updateVendorPool(id: number, data: Partial<VendorPool>): P
} catch (err) {
debugError('Vendor Pool 업데이트 실패', { error: err, id, updateData: data });
console.error("Error in updateVendorPool:", err);
+
+ // Unique 제약 조건 위반 감지
+ const errorMessage = err instanceof Error ? err.message : String(err);
+ if (errorMessage.includes('unique_vendor_pool_combination') ||
+ errorMessage.includes('duplicate key value') ||
+ errorMessage.includes('violates unique constraint')) {
+ debugError('Unique 제약 조건 위반 감지', {
+ id,
+ constructionSector: data.constructionSector,
+ htDivision: data.htDivision,
+ materialGroupCode: data.materialGroupCode,
+ vendorName: data.vendorName,
+ error: err
+ });
+ // Unique 제약 위반의 경우 특별한 에러 객체를 throw
+ throw new Error('DUPLICATE_VENDOR_POOL');
+ }
+
return null;
}
}