import { varchar, jsonb, timestamp, index, primaryKey } from "drizzle-orm/pg-core"; import { knoxSchema } from "./employee"; export const organization = knoxSchema.table( "organization", { companyCode: varchar("company_code", { length: 10 }).notNull(), departmentCode: varchar("department_code", { length: 50 }).notNull(), companyName: varchar("company_name", { length: 100 }), departmentLevel: varchar("department_level", { length: 10 }), departmentName: varchar("department_name", { length: 255 }), departmentOrder: varchar("department_order", { length: 10 }), enCompanyName: varchar("en_company_name", { length: 100 }), enDepartmentName: varchar("en_department_name", { length: 255 }), enManagerTitle: varchar("en_manager_title", { length: 255 }), enSubOrgCode: varchar("en_sub_org_code", { length: 50 }), inDepartmentCode: varchar("in_department_code", { length: 50 }), lowDepartmentYn: varchar("low_department_yn", { length: 2 }), managerId: varchar("manager_id", { length: 50 }), managerName: varchar("manager_name", { length: 100 }), managerTitle: varchar("manager_title", { length: 255 }), preferredLanguage: varchar("preferred_language", { length: 5 }), subOrgCode: varchar("sub_org_code", { length: 50 }), subOrgName: varchar("sub_org_name", { length: 255 }), uprDepartmentCode: varchar("upr_department_code", { length: 50 }), enUprDepartmentName: varchar("en_upr_department_name", { length: 255 }), uprDepartmentName: varchar("upr_department_name", { length: 255 }), hiddenDepartmentYn: varchar("hidden_department_yn", { length: 2 }), corpCode: varchar("corp_code", { length: 20 }), corpName: varchar("corp_name", { length: 100 }), enCorpName: varchar("en_corp_name", { length: 100 }), // 원본 JSON 전체 보관 – 변경 감지 및 추후 확장 대비 raw: jsonb("raw").notNull(), createdAt: timestamp("created_at", { withTimezone: true }).defaultNow().notNull(), updatedAt: timestamp("updated_at", { withTimezone: true }).defaultNow().notNull(), }, (table) => { return { companyIdx: index("knox_org_company_idx").on(table.companyCode), pk: primaryKey(table.companyCode, table.departmentCode), }; } ); export type KnoxOrganization = typeof organization.$inferSelect; export type NewKnoxOrganization = typeof organization.$inferInsert;