summaryrefslogtreecommitdiff
path: root/db/schema/knox/organization.ts
blob: 8d54056268714b2e3fad18f540bf4135a1b702a2 (plain)
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
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;