summaryrefslogtreecommitdiff
path: root/db/schema/SWP/swp-documents.ts
diff options
context:
space:
mode:
Diffstat (limited to 'db/schema/SWP/swp-documents.ts')
-rw-r--r--db/schema/SWP/swp-documents.ts15
1 files changed, 8 insertions, 7 deletions
diff --git a/db/schema/SWP/swp-documents.ts b/db/schema/SWP/swp-documents.ts
index 2c7d06b0..c7661ff6 100644
--- a/db/schema/SWP/swp-documents.ts
+++ b/db/schema/SWP/swp-documents.ts
@@ -32,8 +32,9 @@ export const syncStatusEnum = pgEnum("swp_sync_status", [
export const swpDocuments = swpSchema.table(
"swp_documents",
{
- // Primary Key
- DOC_NO: varchar("DOC_NO", { length: 1000 }).primaryKey(),
+ // Composite Primary Key: DOC_NO + PROJ_NO
+ DOC_NO: varchar("DOC_NO", { length: 1000 }).notNull(),
+ PROJ_NO: varchar("PROJ_NO", { length: 1000 }).notNull(),
// 문서 기본 정보
DOC_TITLE: varchar("DOC_TITLE", { length: 1000 }).notNull(),
@@ -43,7 +44,6 @@ export const swpDocuments = swpSchema.table(
SHI_DOC_NO: varchar("SHI_DOC_NO", { length: 1000 }),
// 프로젝트 정보
- PROJ_NO: varchar("PROJ_NO", { length: 1000 }).notNull(),
PROJ_NM: varchar("PROJ_NM", { length: 1000 }),
PKG_NO: varchar("PKG_NO", { length: 1000 }),
@@ -89,6 +89,9 @@ export const swpDocuments = swpSchema.table(
updated_at: timestamp("updated_at").defaultNow().notNull(),
},
(table) => ({
+ // Composite Primary Key
+ pk: uniqueIndex("swp_documents_pk").on(table.DOC_NO, table.PROJ_NO),
+ // Indexes
projNoIdx: index("swp_documents_proj_no_idx").on(table.PROJ_NO),
vndrCdIdx: index("swp_documents_vndr_cd_idx").on(table.VNDR_CD),
pkgNoIdx: index("swp_documents_pkg_no_idx").on(table.PKG_NO),
@@ -107,10 +110,8 @@ export const swpDocumentRevisions = swpSchema.table(
// Primary Key
id: serial("id").primaryKey(),
- // Foreign Key
- DOC_NO: varchar("DOC_NO", { length: 1000 })
- .notNull()
- .references(() => swpDocuments.DOC_NO, { onDelete: "cascade" }),
+ // Document Reference (NO FK - 외래키 제거)
+ DOC_NO: varchar("DOC_NO", { length: 1000 }).notNull(),
// 리비전 정보
REV_NO: varchar("REV_NO", { length: 1000 }).notNull(),