47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import {
|
|
pgTable,
|
|
uuid,
|
|
timestamp,
|
|
text,
|
|
jsonb,
|
|
bigint,
|
|
} from "drizzle-orm/pg-core"
|
|
|
|
import { tenants } from "./tenants"
|
|
import { helpdesk_contacts } from "./helpdesk_contacts"
|
|
import { helpdesk_conversations } from "./helpdesk_conversations"
|
|
import { authUsers } from "./auth_users"
|
|
|
|
export const helpdesk_messages = pgTable("helpdesk_messages", {
|
|
id: uuid("id").primaryKey().defaultRandom(),
|
|
|
|
tenantId: bigint("tenant_id", { mode: "number" })
|
|
.notNull()
|
|
.references(() => tenants.id, { onDelete: "cascade" }),
|
|
|
|
conversationId: uuid("conversation_id")
|
|
.notNull()
|
|
.references(() => helpdesk_conversations.id, { onDelete: "cascade" }),
|
|
|
|
direction: text("direction").notNull(),
|
|
|
|
authorUserId: uuid("author_user_id").references(() => authUsers.id),
|
|
|
|
payload: jsonb("payload").notNull(),
|
|
|
|
rawMeta: jsonb("raw_meta"),
|
|
|
|
createdAt: timestamp("created_at", { withTimezone: true }).defaultNow(),
|
|
|
|
contactId: uuid("contact_id").references(() => helpdesk_contacts.id, {
|
|
onDelete: "set null",
|
|
}),
|
|
|
|
externalMessageId: text("external_message_id").unique(),
|
|
|
|
receivedAt: timestamp("received_at", { withTimezone: true }).defaultNow(),
|
|
})
|
|
|
|
export type HelpdeskMessage = typeof helpdesk_messages.$inferSelect
|
|
export type NewHelpdeskMessage = typeof helpdesk_messages.$inferInsert
|