Initial commit for Start9 packaging
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import { PrismaClient } from "@prisma/client";
|
||||
|
||||
declare global {
|
||||
var prisma: PrismaClient | undefined;
|
||||
}
|
||||
|
||||
export const prisma =
|
||||
global.prisma ||
|
||||
new PrismaClient({
|
||||
log: process.env.NODE_ENV === "development" ? ["error", "warn"] : ["error"],
|
||||
});
|
||||
|
||||
if (process.env.NODE_ENV !== "production") global.prisma = prisma;
|
||||
|
||||
/**
|
||||
* caloriesBurned is in the DB schema but NOT in the generated Prisma client.
|
||||
* These helpers use raw SQL to read/write it until Prisma client can be regenerated.
|
||||
*/
|
||||
export async function getCaloriesBurned(workoutId: string): Promise<number | null> {
|
||||
const rows = await prisma.$queryRawUnsafe<Array<{ caloriesBurned: number | null }>>(
|
||||
`SELECT caloriesBurned FROM Workout WHERE id = ?`,
|
||||
workoutId
|
||||
);
|
||||
return rows[0]?.caloriesBurned ?? null;
|
||||
}
|
||||
|
||||
export async function setCaloriesBurned(workoutId: string, calories: number | null): Promise<void> {
|
||||
await prisma.$executeRawUnsafe(
|
||||
`UPDATE Workout SET caloriesBurned = ? WHERE id = ?`,
|
||||
calories,
|
||||
workoutId
|
||||
);
|
||||
}
|
||||
|
||||
export async function getCaloriesBurnedBulk(workoutIds: string[]): Promise<Record<string, number | null>> {
|
||||
if (workoutIds.length === 0) return {};
|
||||
const placeholders = workoutIds.map(() => "?").join(",");
|
||||
const rows = await prisma.$queryRawUnsafe<Array<{ id: string; caloriesBurned: number | null }>>(
|
||||
`SELECT id, caloriesBurned FROM Workout WHERE id IN (${placeholders})`,
|
||||
...workoutIds
|
||||
);
|
||||
const map: Record<string, number | null> = {};
|
||||
for (const r of rows) {
|
||||
map[r.id] = r.caloriesBurned;
|
||||
}
|
||||
return map;
|
||||
}
|
||||
Reference in New Issue
Block a user