"use server"; import { revalidatePath } from "next/cache"; import { currentUserId } from "@/lib/auth/session"; import { withUser } from "@/lib/db"; import type { ActionResult } from "@/lib/db/rpc"; export async function saveHireDraft(payload: { id?: string; step: number; data: Record; }): Promise { const userId = await currentUserId(); if (!userId) return { success: false, error: "Nicht angemeldet." }; try { const id = await withUser(userId, async (tx) => { if (payload.id) { // Ob die Zeile der aufrufenden Person gehört, entscheidet die // Policy hire_drafts_owner — nicht eine Prüfung hier. await tx .updateTable("hire_drafts") .set({ step: payload.step, payload: payload.data, updated_at: new Date().toISOString() }) .where("id", "=", payload.id) .execute(); return payload.id; } const row = await tx .insertInto("hire_drafts") .values({ created_by: userId, step: payload.step, payload: payload.data }) .returning("id") .executeTakeFirstOrThrow(); return row.id; }); revalidatePath("/"); return { success: true, id }; } catch (err) { return { success: false, error: err instanceof Error ? err.message : "Unbekannter Fehler." }; } } export async function deleteHireDraft(id: string): Promise { try { await withUser(await currentUserId(), (tx) => tx.deleteFrom("hire_drafts").where("id", "=", id).execute()); revalidatePath("/"); return { success: true }; } catch (err) { return { success: false, error: err instanceof Error ? err.message : "Unbekannter Fehler." }; } }