summaryrefslogtreecommitdiff
path: root/db/schema/notice.ts
diff options
context:
space:
mode:
Diffstat (limited to 'db/schema/notice.ts')
-rw-r--r--db/schema/notice.ts36
1 files changed, 36 insertions, 0 deletions
diff --git a/db/schema/notice.ts b/db/schema/notice.ts
new file mode 100644
index 00000000..c7cfee93
--- /dev/null
+++ b/db/schema/notice.ts
@@ -0,0 +1,36 @@
+import { pgTable, varchar, text, timestamp, serial, boolean, integer } from "drizzle-orm/pg-core";
+import { relations } from "drizzle-orm";
+import { users } from "./users";
+
+// 페이지별 공지사항 관리 테이블
+export const notice = pgTable("notice", {
+ id: serial("id").primaryKey(),
+
+ // 페이지 정보
+ pagePath: varchar("page_path", { length: 100 }).notNull(), // 페이지 경로 (예: '/evcp/vendor-list')
+
+ // 공지사항 내용
+ title: varchar("title", { length: 500 }).notNull(), // 공지사항 제목
+ content: text("content").notNull(), // 공지사항 내용 (리치텍스트)
+
+ // 작성자 정보
+ authorId: integer("author_id").notNull().references(() => users.id), // 작성자 ID
+
+ // 활성화 여부
+ isActive: boolean("is_active").default(true).notNull(), // 활성화 여부
+
+ // 메타데이터
+ createdAt: timestamp("created_at").defaultNow().notNull(),
+ updatedAt: timestamp("updated_at").defaultNow().notNull(),
+});
+
+// Relations
+export const noticeRelations = relations(notice, ({ one }) => ({
+ author: one(users, {
+ fields: [notice.authorId],
+ references: [users.id],
+ }),
+}));
+
+export type Notice = typeof notice.$inferSelect;
+export type NewNotice = typeof notice.$inferInsert; \ No newline at end of file