// db/schema.ts에 추가할 테이블 정의 import { pgTable, serial, varchar, text, timestamp, boolean, integer ,uniqueIndex, index} from "drizzle-orm/pg-core"; import { userDomainEnum, users } from "./users"; import { relations } from "drizzle-orm"; export const menuAssignments = pgTable("menu_assignments", { id: integer("id").primaryKey().generatedAlwaysAsIdentity(), menuPath: varchar("menu_path", { length: 255 }).notNull().unique(), // href 값 menuTitle: varchar("menu_title", { length: 255 }).notNull(), menuDescription: text("menu_description"), menuGroup: varchar("menu_group", { length: 100 }), // 그룹 정보 sectionTitle: varchar("section_title", { length: 255 }), // 섹션명 domain: userDomainEnum("domain").notNull().default("evcp"), // evcp, partners // 담당자 정보 manager1Id: integer("manager1_id") .references(() => users.id, { onDelete: "set null" }), manager2Id: integer("manager2_id") .references(() => users.id, { onDelete: "set null" }), // 메타 정보 isActive: boolean("is_active").default(true).notNull(), createdAt: timestamp("created_at", { withTimezone: true }) .defaultNow() .notNull(), updatedAt: timestamp("updated_at", { withTimezone: true }) .defaultNow() .notNull(), }, (table) => { return { menuPathIdx: uniqueIndex("menu_assignments_path_idx").on(table.menuPath), manager1Idx: index("menu_assignments_manager1_idx").on(table.manager1Id), manager2Idx: index("menu_assignments_manager2_idx").on(table.manager2Id), domainIdx: index("menu_assignments_domain_idx").on(table.domain), }; }); // Relations 추가 export const menuAssignmentsRelations = relations(menuAssignments, ({ one }) => ({ manager1: one(users, { fields: [menuAssignments.manager1Id], references: [users.id], relationName: "manager1", }), manager2: one(users, { fields: [menuAssignments.manager2Id], references: [users.id], relationName: "manager2", }), })); export const usersRelations2 = relations(users, ({ many }) => ({ managedMenus1: many(menuAssignments, { relationName: "manager1" }), managedMenus2: many(menuAssignments, { relationName: "manager2" }), }));