| 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; | |