habits.andr33v.ru/server/api/habits/[id]/index.delete.ts

37 lines
915 B
TypeScript

import { getUserIdFromSession } from '../../../utils/auth';
export default defineEventHandler(async (event) => {
const userId = await getUserIdFromSession(event);
const habitId = Number(event.context.params?.id);
if (isNaN(habitId)) {
throw createError({ statusCode: 400, statusMessage: 'Invalid habit ID.' });
}
// --- Authorization & Deletion ---
// First, verify the habit exists and belongs to the user.
const habit = await prisma.habit.findUnique({
where: {
id: habitId,
},
});
if (!habit || habit.userId !== userId) {
throw createError({ statusCode: 404, statusMessage: 'Habit not found or permission denied.' });
}
// Now, delete the habit
await prisma.habit.delete({
where: {
id: habitId,
},
});
// --- Response ---
// Send 204 No Content status
setResponseStatus(event, 204);
// Return null or an empty body
return null;
});