diff options
| author | joonhoekim <26rote@gmail.com> | 2025-07-21 07:14:40 +0000 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-07-21 07:14:40 +0000 |
| commit | 8165f003563e3d7f328747be3098542fe527b014 (patch) | |
| tree | 928a4cd23adbde13d96ad4515a1bdf435da8a463 /db/schema/knox | |
| parent | 8f19c063aeb3df1eed9cab58f4bf7cac22ab13dc (diff) | |
Knox API 임직원 스키마 추가, 동기화 기능 추가
Diffstat (limited to 'db/schema/knox')
| -rw-r--r-- | db/schema/knox/employee.ts | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/db/schema/knox/employee.ts b/db/schema/knox/employee.ts new file mode 100644 index 00000000..8c228130 --- /dev/null +++ b/db/schema/knox/employee.ts @@ -0,0 +1,53 @@ +import { pgSchema, varchar, timestamp, jsonb, text, index } from "drizzle-orm/pg-core"; + +export const knoxSchema = pgSchema("knox"); + +export const employee = knoxSchema.table("employee", { + epId: varchar("ep_id", { length: 25 }).primaryKey(), + employeeNumber: varchar("employee_number", { length: 20 }), + userId: varchar("user_id", { length: 50 }), + fullName: varchar("full_name", { length: 100 }), + givenName: varchar("given_name", { length: 100 }), + sirName: varchar("sir_name", { length: 50 }), + companyCode: varchar("company_code", { length: 10 }), + companyName: varchar("company_name", { length: 100 }), + departmentCode: varchar("department_code", { length: 50 }), + departmentName: varchar("department_name", { length: 255 }), + titleCode: varchar("title_code", { length: 20 }), + titleName: varchar("title_name", { length: 100 }), + emailAddress: varchar("email_address", { length: 255 }), + mobile: varchar("mobile", { length: 50 }), + employeeStatus: varchar("employee_status", { length: 2 }), + employeeType: varchar("employee_type", { length: 2 }), + accountStatus: varchar("account_status", { length: 2 }), + securityLevel: varchar("security_level", { length: 2 }), + preferredLanguage: varchar("preferred_language", { length: 5 }), + description: text("description"), + raw: jsonb("raw").notNull(), + createdAt: timestamp("created_at", { withTimezone: true }).defaultNow().notNull(), + updatedAt: timestamp("updated_at", { withTimezone: true }).defaultNow().notNull(), + enCompanyName: varchar("en_company_name", { length: 100 }), + enDepartmentName: varchar("en_department_name", { length: 255 }), + enDiscription: varchar("en_discription", { length: 255 }), + enFullName: varchar("en_full_name", { length: 100 }), + enGivenName: varchar("en_given_name", { length: 100 }), + enGradeName: varchar("en_grade_name", { length: 100 }), + enSirName: varchar("en_sir_name", { length: 50 }), + enTitleName: varchar("en_title_name", { length: 100 }), + gradeName: varchar("grade_name", { length: 100 }), + gradeTitleIndiCode: varchar("grade_title_indi_code", { length: 2 }), + jobName: varchar("job_name", { length: 100 }), + realNameYn: varchar("real_name_yn", { length: 2 }), + serverLocation: varchar("server_location", { length: 2 }), + titleSortOrder: varchar("title_sort_order", { length: 10 }), +}, (table) => { + return { + companyDepartmentIdx: index("knox_employee_company_department_idx").on(table.companyCode, table.departmentCode), + employeeNumberIdx: index("knox_employee_number_idx").on(table.employeeNumber), + userIdIdx: index("knox_employee_user_id_idx").on(table.userId), + emailIdx: index("knox_employee_email_idx").on(table.emailAddress), + }; +}); + +export type KnoxEmployee = typeof employee.$inferSelect; +export type NewKnoxEmployee = typeof employee.$inferInsert;
\ No newline at end of file |
