summaryrefslogtreecommitdiff
path: root/db/schema/projects.ts
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-04-28 02:13:30 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-04-28 02:13:30 +0000
commitef4c533ebacc2cdc97e518f30e9a9350004fcdfb (patch)
tree345251a3ed0f4429716fa5edaa31024d8f4cb560 /db/schema/projects.ts
parent9ceed79cf32c896f8a998399bf1b296506b2cd4a (diff)
~20250428 작업사항
Diffstat (limited to 'db/schema/projects.ts')
-rw-r--r--db/schema/projects.ts54
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