24 lines
900 B
TypeScript
24 lines
900 B
TypeScript
import { getRoom, getMember, leaveRoom } from "../../../../db/chat-rooms";
|
||
|
||
/** POST /api/chat/rooms/[roomId]/leave – Raum verlassen */
|
||
export default defineEventHandler(async (event) => {
|
||
const user = await requireUser(event);
|
||
const roomId = getRouterParam(event, "roomId");
|
||
if (!roomId) throw createError({ statusCode: 400, message: "roomId fehlt" });
|
||
|
||
const room = await getRoom(roomId);
|
||
if (!room) throw createError({ statusCode: 404, message: "Raum nicht gefunden" });
|
||
|
||
const member = await getMember(roomId, user.id);
|
||
if (!member || member.status !== "active") {
|
||
throw createError({ statusCode: 400, message: "Kein Mitglied" });
|
||
}
|
||
|
||
if (member.role === "owner" && !room.isDefault) {
|
||
throw createError({ statusCode: 400, message: "Owner kann den Raum nicht verlassen – lösche ihn stattdessen" });
|
||
}
|
||
|
||
await leaveRoom(roomId, user.id);
|
||
return { ok: true };
|
||
});
|