diff --git a/.gitignore b/.gitignore index 8d12ebc..4326f0e 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,8 @@ # next.js /.next/ /out/ - +.claude +Documentation # production /build diff --git a/src/lib/api/deleteVolunteer.ts b/src/lib/api/deleteVolunteer.ts new file mode 100644 index 0000000..f42f7b2 --- /dev/null +++ b/src/lib/api/deleteVolunteer.ts @@ -0,0 +1,71 @@ +import { createClient } from "../client/supabase/server"; + +export async function deleteVolunteer(id: number) { + // Validate input + if (!id || typeof id !== "number" || id <= 0) { + return { + error: { + message: "Invalid volunteer ID. ID must be a positive number.", + status: 400, + }, + data: null, + }; + } + + try { + const client = await createClient(); + + // Check if volunteer exists before deleting + const { data: existingVolunteer, error: fetchError } = await client + .from("Volunteers") + .select("id") + .eq("id", id) + .single(); + + if (fetchError || !existingVolunteer) { + return { + error: { + message: "Volunteer not found.", + status: 404, + }, + data: null, + }; + } + + // Delete the volunteer + const { error: deleteError } = await client + .from("Volunteers") + .delete() + .eq("id", id); + + if (deleteError) { + return { + error: { + message: deleteError.message || "Failed to delete volunteer.", + status: 500, + }, + data: null, + }; + } + + return { + error: null, + data: { + message: "Volunteer deleted successfully.", + id, + }, + status: 200, + }; + } catch (error) { + return { + error: { + message: + error instanceof Error + ? error.message + : "An unexpected error occurred.", + status: 500, + }, + data: null, + }; + } +} diff --git a/src/lib/api/index.ts b/src/lib/api/index.ts index 53e202a..3058eb1 100644 --- a/src/lib/api/index.ts +++ b/src/lib/api/index.ts @@ -1,3 +1,4 @@ // Add any exports from your API files here export { getExample } from "./getExample"; +export { deleteVolunteer } from "./deleteVolunteer";