import { pgTable, text, timestamp, integer, index, } from "drizzle-orm/pg-core"; import { users } from "./users"; export const usageEvents = pgTable( "usage_events", { id: text("id").primaryKey(), userId: text("user_id") .notNull() .references(() => users.id, { onDelete: "cascade" }), conversationId: text("conversation_id"), messageId: text("message_id"), modelId: text("model_id").notNull(), inputTokens: integer("input_tokens").notNull().default(0), outputTokens: integer("output_tokens").notNull().default(0), createdAt: timestamp("created_at", { withTimezone: true }) .notNull() .defaultNow(), }, (t) => ({ userIdx: index("usage_events_user_idx").on(t.userId), createdIdx: index("usage_events_created_idx").on(t.createdAt), }), ); export type UsageEvent = typeof usageEvents.$inferSelect;