From a50bc9baea332f996e6bc3a5d70c69f6d2d0f194 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Wed, 23 Jul 2025 09:08:03 +0000 Subject: (대표님, 최겸) 기본계약 템플릿 및 에디터, 기술영업 벤더정보, 파일 보안다운로드, 벤더 document sync 상태 서비스, 메뉴 Config, 기술영업 미사용 제거 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/schema/basicContractDocumnet.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'db/schema') diff --git a/db/schema/basicContractDocumnet.ts b/db/schema/basicContractDocumnet.ts index 18dba460..33530ca9 100644 --- a/db/schema/basicContractDocumnet.ts +++ b/db/schema/basicContractDocumnet.ts @@ -1,11 +1,11 @@ -import { pgTable, pgView, text, timestamp, integer, varchar, boolean } from 'drizzle-orm/pg-core'; +import { pgTable, pgView, text, timestamp, integer, varchar, boolean , unique} from 'drizzle-orm/pg-core'; import { vendors } from './vendors'; import { eq, sql } from "drizzle-orm"; import { users } from './users'; export const basicContractTemplates = pgTable('basic_contract_templates', { id: integer("id").primaryKey().generatedAlwaysAsIdentity(), - templateCode: varchar("template_code", { length: 50 }).notNull().unique(), // 템플릿 코드 + // templateCode: varchar("template_code", { length: 50 }).notNull().unique(), // 템플릿 코드 - 제거됨 templateName: text('template_name').notNull(), revision: integer('revision').notNull().default(1), // 리비전 status: text('status').notNull().default('ACTIVE'), // ACTIVE, DISPOSED @@ -33,7 +33,10 @@ export const basicContractTemplates = pgTable('basic_contract_templates', { updatedBy: integer('updated_by').references(() => users.id), // 수정자 disposedAt: timestamp('disposed_at'), // 폐기일자 restoredAt: timestamp('restored_at'), // 복구일자 -}); +}, (table) => ({ + // templateName과 revision 조합이 유니크해야 함 + templateNameRevisionUnique: unique("template_name_revision_unique").on(table.templateName, table.revision), +})); export const basicContract = pgTable('basic_contract', { @@ -74,7 +77,7 @@ export const basicContractView = pgView('basic_contract_view').as((qb) => { requestedByName: sql`${users.name}`.as('requested_by_name'), // 템플릿 정보 (확장된 필드들) - templateCode: sql`${basicContractTemplates.templateCode}`.as('template_code'), + // templateCode: sql`${basicContractTemplates.templateCode}`.as('template_code'), templateName: sql`${basicContractTemplates.templateName}`.as('template_name'), templateRevision: sql`${basicContractTemplates.revision}`.as('template_revision'), templateStatus: sql`${basicContractTemplates.status}`.as('template_status'), -- cgit v1.2.3