diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-04-28 02:13:30 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-04-28 02:13:30 +0000 |
| commit | ef4c533ebacc2cdc97e518f30e9a9350004fcdfb (patch) | |
| tree | 345251a3ed0f4429716fa5edaa31024d8f4cb560 /db/schema/projects.ts | |
| parent | 9ceed79cf32c896f8a998399bf1b296506b2cd4a (diff) | |
~20250428 작업사항
Diffstat (limited to 'db/schema/projects.ts')
| -rw-r--r-- | db/schema/projects.ts | 54 |
1 files changed, 52 insertions, 2 deletions
diff --git a/db/schema/projects.ts b/db/schema/projects.ts index 9220b249..1b989d23 100644 --- a/db/schema/projects.ts +++ b/db/schema/projects.ts @@ -1,4 +1,4 @@ -import { pgTable, varchar, text, timestamp, serial } from "drizzle-orm/pg-core" +import { pgTable, varchar, text, timestamp,char, decimal, serial,uniqueIndex } from "drizzle-orm/pg-core" export const projects = pgTable("projects", { id: serial("id").primaryKey(), @@ -10,4 +10,54 @@ export const projects = pgTable("projects", { updatedAt: timestamp("updated_at").defaultNow().notNull(), }) -export type Project = typeof projects.$inferSelect
\ No newline at end of file +export type Project = typeof projects.$inferSelect + + +export const biddingProjects = pgTable("bidding_projects", { + id: serial("id").primaryKey(), + pspid: char('pspid', { length: 24 }).notNull().unique(), // 견적프로젝트번호 + projNm: varchar('proj_nm', { length: 90 }), // 견적프로젝트명 + sector: char('sector', { length: 1 }), // 부문(S / M) + projMsrm: decimal('proj_msrm', { precision: 3, scale: 0 }), // 척수 + kunnr: char('kunnr', { length: 10 }), // 선주코드 + kunnrNm: varchar('kunnr_nm', { length: 30 }), // 선주명 + cls1: char('cls_1', { length: 10 }), // 선급코드 + cls1Nm: varchar('cls1_nm', { length: 30 }), // 선급명 + ptype: char('ptype', { length: 3 }), // 선종코드 + ptypeNm: varchar('ptype_nm', { length: 40 }), // 선종명 + pmodelCd: char('pmodel_cd', { length: 10 }), // 선형코드 + pmodelNm: varchar('pmodel_nm', { length: 40 }), // 선형명 + pmodelSz: varchar('pmodel_sz', { length: 20 }), // 선형크기 + pmodelUom: char('pmodel_uom', { length: 5 }), // 선형단위 + txt04: char('txt04', { length: 4 }), // 견적상태코드 + txt30: varchar('txt30', { length: 30 }), // 견적상태명 + estmPm: varchar('estm_pm', { length: 30 }), // 견적대표PM 성명 + + createdAt: timestamp("created_at").defaultNow().notNull(), + updatedAt: timestamp("updated_at").defaultNow().notNull(), +}); + +export const projectSeries = pgTable('project_series', { + pspid: char('pspid', { length: 24 }).notNull().references(() => biddingProjects.pspid), // 견적프로젝트번호 + sersNo: char('sers_no', { length: 3 }).notNull(), // 시리즈번호 + // 받은 인터페이스 정의서에 따라 수정 + // klQtr: char('kl_qtr', { length: 10 }), // K/L 연도분기(YYYY_nQ) + scDt: char('sc_dt', {length: 8}), // Steel Cutting Date + klDt: char('kl_dt', {length: 8}), // Keel Laying Date + lcDt: char('lc_dt', {length: 8}), // Launching Date + dlDt: char('dl_dt', {length: 8}), // Delivery Date + dockNo: char('dock_no', { length: 3 }), // 도크코드 + dockNm: varchar('dock_nm', { length: 40 }), // 도크명 + projNo: char('proj_no', { length: 24 }), // SN공사번호(계약후) + post1: varchar('post1', { length: 40 }), // SN공사명(계약후) +}, (table) => { + return { + uniqueIdx: uniqueIndex("project_sersNo_unique").on( + table.pspid, + table.sersNo + ) + } +}); + +export type BiddingProjects = typeof biddingProjects.$inferSelect +export type ProjectSeries = typeof projectSeries.$inferSelect
\ No newline at end of file |
