summaryrefslogtreecommitdiff
path: root/db/schema/knox/employee.ts
blob: 8c2281305ba283d045459211786f992ecab69f77 (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
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;