summaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-09-22 18:59:13 +0900
committerjoonhoekim <26rote@gmail.com>2025-09-22 18:59:13 +0900
commitba35e67845f935c8ce0151c9ef1fefa0b0510faf (patch)
treed05eb27fab2acc54a839b2590c89e860d58fb747 /db
parente4bd037d158513e45373ad9e1ef13f71af12162a (diff)
(김준회) AVL 피드백 반영 (이진용 프로 건)
Diffstat (limited to 'db')
-rw-r--r--db/schema/NONSAP/nonsap.ts16
-rw-r--r--db/schema/avl/avl.ts27
2 files changed, 33 insertions, 10 deletions
diff --git a/db/schema/NONSAP/nonsap.ts b/db/schema/NONSAP/nonsap.ts
index 322e9647..838ebf29 100644
--- a/db/schema/NONSAP/nonsap.ts
+++ b/db/schema/NONSAP/nonsap.ts
@@ -54,21 +54,21 @@ export const cmctbCd = nonsapSchema.table('cmctb_cd', {
// 사용자정의문자열255
USR_DF_CHAR_20: text(),
// 사용자정의체크1
- USR_DF_CHK_1: varchar({ length: 1 }),
+ USR_DF_CHK_1: varchar({ length: 10 }),
// 사용자정의체크2
- USR_DF_CHK_2: varchar({ length: 1 }),
+ USR_DF_CHK_2: varchar({ length: 10 }),
// 사용자정의체크3
- USR_DF_CHK_3: varchar({ length: 1 }),
+ USR_DF_CHK_3: varchar({ length: 10 }),
// 사용자정의체크4
- USR_DF_CHK_4: varchar({ length: 1 }),
+ USR_DF_CHK_4: varchar({ length: 10 }),
// 사용자정의체크5
- USR_DF_CHK_5: varchar({ length: 1 }),
+ USR_DF_CHK_5: varchar({ length: 10 }),
// 사용자정의체크6
- USR_DF_CHK_6: varchar({ length: 1 }),
+ USR_DF_CHK_6: varchar({ length: 10 }),
// 사용자정의체크7
- USR_DF_CHK_7: varchar({ length: 1 }),
+ USR_DF_CHK_7: varchar({ length: 10 }),
// 사용자정의체크8
- USR_DF_CHK_8: varchar({ length: 1 }),
+ USR_DF_CHK_8: varchar({ length: 10 }),
// 사용자정의일자1
USR_DF_DT_1: varchar({ length: 8 }),
// 사용자정의일자2
diff --git a/db/schema/avl/avl.ts b/db/schema/avl/avl.ts
index 0b983168..30c82ced 100644
--- a/db/schema/avl/avl.ts
+++ b/db/schema/avl/avl.ts
@@ -1,4 +1,4 @@
-import { pgTable, boolean, integer, timestamp, varchar, decimal, json, pgView } from "drizzle-orm/pg-core";
+import { pgTable, boolean, integer, timestamp, varchar, decimal, json, pgView, uniqueIndex } from "drizzle-orm/pg-core";
import { createInsertSchema, createSelectSchema } from "drizzle-zod";
import { sql } from "drizzle-orm";
@@ -118,7 +118,30 @@ export const avlVendorInfo = pgTable("avl_vendor_info", {
// 타임스탬프
createdAt: timestamp("created_at").defaultNow(),
updatedAt: timestamp("updated_at").defaultNow(),
-});
+}, (table) => ({
+ // 표준 AVL용 unique 제약조건 (isTemplate = true)
+ // 표준AVL용 필드들 + 자재그룹코드 + 협력업체명이 unique해야 함
+ uniqueStandardAvl: uniqueIndex("unique_standard_avl_material_vendor")
+ .on(
+ table.constructionSector,
+ table.shipType,
+ table.avlKind,
+ table.htDivision,
+ table.materialGroupCode,
+ table.vendorName
+ )
+ .where(sql`${table.isTemplate} = true`),
+
+ // 프로젝트 AVL용 unique 제약조건 (isTemplate = false)
+ // 같은 projectCode 내에서 자재그룹코드 + 협력업체명이 unique해야 함
+ uniqueProjectAvl: uniqueIndex("unique_project_avl_material_vendor")
+ .on(
+ table.projectCode,
+ table.materialGroupCode,
+ table.vendorName
+ )
+ .where(sql`${table.isTemplate} = false`),
+}));
// Zod 스키마 생성
export const insertAvlListSchema = createInsertSchema(avlList);