import { pgTable, varchar, text, timestamp,char, decimal, serial,uniqueIndex } from "drizzle-orm/pg-core" export const projects = pgTable("projects", { id: serial("id").primaryKey(), code: varchar("code", { length: 50 }).notNull(), name: text("name").notNull(), type: varchar("type", { length: 20 }).default("ship").notNull(), createdAt: timestamp("created_at").defaultNow().notNull(), updatedAt: timestamp("updated_at").defaultNow().notNull(), }) 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