42 lines
1.4 KiB
TypeScript
42 lines
1.4 KiB
TypeScript
import { usePrisma } from "../utils/prisma";
|
|
|
|
export interface SosSessionInput {
|
|
startedAt?: string | Date;
|
|
endedAt?: string | Date | null;
|
|
durationSec?: number | null;
|
|
messages: Array<{ role: string; content: string; timestamp?: string }>;
|
|
gamesPlayed?: Array<{ game: string; score?: number; durationSec?: number }>;
|
|
breathingCount?: number;
|
|
wasOvercome?: boolean;
|
|
feedbackBetter?: boolean | null;
|
|
feedbackRating?: number | null;
|
|
feedbackText?: string | null;
|
|
locale?: string | null;
|
|
}
|
|
|
|
export async function createSosSession(userId: string, input: SosSessionInput) {
|
|
const db = usePrisma();
|
|
return db.sosSession.create({
|
|
data: {
|
|
userId,
|
|
startedAt: input.startedAt ? new Date(input.startedAt) : new Date(),
|
|
endedAt: input.endedAt ? new Date(input.endedAt) : null,
|
|
durationSec: input.durationSec ?? null,
|
|
messages: input.messages as any,
|
|
gamesPlayed: (input.gamesPlayed ?? []) as any,
|
|
breathingCount: input.breathingCount ?? 0,
|
|
wasOvercome: input.wasOvercome ?? false,
|
|
feedbackBetter: input.feedbackBetter ?? null,
|
|
feedbackRating: input.feedbackRating ?? null,
|
|
feedbackText: input.feedbackText ?? null,
|
|
locale: input.locale ?? null,
|
|
},
|
|
select: { id: true, startedAt: true, endedAt: true },
|
|
});
|
|
}
|
|
|
|
export async function deleteUserSosSessions(userId: string) {
|
|
const db = usePrisma();
|
|
return db.sosSession.deleteMany({ where: { userId } });
|
|
}
|