import { bigint, index, pgTable, text, timestamp, uuid } from "drizzle-orm/pg-core" import { authUsers } from "./auth_users" import { communicationRooms } from "./communication_rooms" import { tenants } from "./tenants" export const communicationMessages = pgTable( "communication_messages", { id: bigint("id", { mode: "number" }) .primaryKey() .generatedByDefaultAsIdentity(), tenantId: bigint("tenant_id", { mode: "number" }) .notNull() .references(() => tenants.id, { onDelete: "cascade" }), roomId: uuid("room_id") .notNull() .references(() => communicationRooms.id, { onDelete: "cascade" }), authorUserId: uuid("author_user_id") .notNull() .references(() => authUsers.id), body: text("body").notNull(), createdAt: timestamp("created_at", { withTimezone: true }) .notNull() .defaultNow(), }, (table) => ({ roomMessageIdx: index("communication_messages_room_message_idx").on(table.roomId, table.id), tenantIdx: index("communication_messages_tenant_idx").on(table.tenantId), }) ) export type CommunicationMessage = typeof communicationMessages.$inferSelect export type NewCommunicationMessage = typeof communicationMessages.$inferInsert