import { asc, eq } from "drizzle-orm"; import { db, sqlite } from "@/lib/db/client"; import { sessionEvents } from "@/lib/db/schema"; export interface IncomingEvent { sessionDeviceId: number; tsMs: number; commandType: "vibrate" | "rotate" | "linear" | "stop"; featureIndex: number; value: number; durationMs?: number; } export async function insertEvents(sessionId: number, events: IncomingEvent[]): Promise { if (events.length === 0) return; const insertMany = sqlite.transaction((rows: IncomingEvent[]) => { for (const row of rows) { db.insert(sessionEvents) .values({ sessionId, sessionDeviceId: row.sessionDeviceId, tsMs: row.tsMs, commandType: row.commandType, featureIndex: row.featureIndex, value: row.value, durationMs: row.durationMs, }) .run(); } }); insertMany(events); } export async function getEventsForSession(sessionId: number) { return db .select() .from(sessionEvents) .where(eq(sessionEvents.sessionId, sessionId)) .orderBy(asc(sessionEvents.tsMs)); }