1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
import { pgSchema, varchar, jsonb, timestamp, index, primaryKey } from "drizzle-orm/pg-core";
// Knox 전용 스키마 네임스페이스 재사용
export const knoxSchema = pgSchema("knox");
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;
|