diff --git a/src/app/pocketbase/[id]/route.ts b/src/app/pocketbase/[id]/route.ts index ca1b874..0f1964e 100644 --- a/src/app/pocketbase/[id]/route.ts +++ b/src/app/pocketbase/[id]/route.ts @@ -1,161 +1,161 @@ import pb from "@/lib/pocketbase"; -const { EMAIL, PASSWORD } = process.env; +const { EMAIL, PASSWORD, COLLECTION = "budgetable" } = process.env; async function authenticateSuperuser() { - if (!EMAIL || !PASSWORD) { - throw new Error("Environment variables EMAIL and PASSWORD must be set"); - } - if (!pb.authStore.isValid) { - await pb.collection("_superusers").authWithPassword(EMAIL, PASSWORD); - } + if (!EMAIL || !PASSWORD) { + throw new Error("Environment variables EMAIL and PASSWORD must be set"); + } + if (!pb.authStore.isValid) { + await pb.collection("_superusers").authWithPassword(EMAIL, PASSWORD); + } } export async function GET( - _req: Request, - context: { params: Promise<{ id: string }> }, + _req: Request, + context: { params: Promise<{ id: string }> } ) { - try { - await authenticateSuperuser(); + try { + await authenticateSuperuser(); - const id = (await context.params)?.id; - if (!id) { - return Response.json( - { - error: { - message: "Missing ID in request", - }, - }, - { - status: 400, - headers: { "Content-Type": "application/json" }, - }, - ); - } + const id = (await context.params)?.id; + if (!id) { + return Response.json( + { + error: { + message: "Missing ID in request", + }, + }, + { + status: 400, + headers: { "Content-Type": "application/json" }, + } + ); + } - const record = await pb.collection("budgetable").getOne(id); - return Response.json(record, { - status: 200, - headers: { "Content-Type": "application/json" }, - }); - } catch (error) { - console.error("Error fetching data:", error); - return Response.json( - { - error: { - message: "Failed to fetch data", - }, - }, - { - status: 500, - headers: { "Content-Type": "application/json" }, - }, - ); - } + const record = await pb.collection(COLLECTION).getOne(id); + return Response.json(record, { + status: 200, + headers: { "Content-Type": "application/json" }, + }); + } catch (error) { + console.error("Error fetching data:", error); + return Response.json( + { + error: { + message: "Failed to fetch data", + }, + }, + { + status: 500, + headers: { "Content-Type": "application/json" }, + } + ); + } } export async function DELETE( - _req: Request, - context: { params: Promise<{ id: string }> }, + _req: Request, + context: { params: Promise<{ id: string }> } ) { - try { - await authenticateSuperuser(); + try { + await authenticateSuperuser(); - const id = (await context.params)?.id; - if (!id) { - return Response.json( - { - error: { - message: "Missing ID in request", - }, - }, - { - status: 400, - headers: { "Content-Type": "application/json" }, - }, - ); - } + const id = (await context.params)?.id; + if (!id) { + return Response.json( + { + error: { + message: "Missing ID in request", + }, + }, + { + status: 400, + headers: { "Content-Type": "application/json" }, + } + ); + } - await pb.collection("budgetable").delete(id); - return Response.json( - { - success: true, - }, - { - status: 200, - headers: { "Content-Type": "application/json" }, - }, - ); - } catch (error) { - console.error("Error deleting data:", error); - return Response.json( - { - error: { - message: "Failed to delete data", - }, - }, - { - status: 500, - headers: { "Content-Type": "application/json" }, - }, - ); - } + await pb.collection(COLLECTION).delete(id); + return Response.json( + { + success: true, + }, + { + status: 200, + headers: { "Content-Type": "application/json" }, + } + ); + } catch (error) { + console.error("Error deleting data:", error); + return Response.json( + { + error: { + message: "Failed to delete data", + }, + }, + { + status: 500, + headers: { "Content-Type": "application/json" }, + } + ); + } } export async function PUT( - req: Request, - context: { params: Promise<{ id: string }> }, + req: Request, + context: { params: Promise<{ id: string }> } ) { - try { - await authenticateSuperuser(); + try { + await authenticateSuperuser(); - const id = (await context.params)?.id; - if (!id) { - return Response.json( - { - error: { - message: "Missing ID in request", - }, - }, - { - status: 400, - headers: { "Content-Type": "application/json" }, - }, - ); - } + const id = (await context.params)?.id; + if (!id) { + return Response.json( + { + error: { + message: "Missing ID in request", + }, + }, + { + status: 400, + headers: { "Content-Type": "application/json" }, + } + ); + } - const body = await req.json(); - if (!body.title || typeof body.price !== "number") { - return Response.json( - { - error: { - message: "Invalid data provided", - }, - }, - { - status: 400, - headers: { "Content-Type": "application/json" }, - }, - ); - } + const body = await req.json(); + if (!body.title || typeof body.price !== "number") { + return Response.json( + { + error: { + message: "Invalid data provided", + }, + }, + { + status: 400, + headers: { "Content-Type": "application/json" }, + } + ); + } - const updatedRecord = await pb.collection("budgetable").update(id, body); - return Response.json(updatedRecord, { - status: 200, - headers: { "Content-Type": "application/json" }, - }); - } catch (error) { - console.error("Error updating data:", error); - return Response.json( - { - error: { - message: "Failed to update data", - }, - }, - { - status: 500, - headers: { "Content-Type": "application/json" }, - }, - ); - } + const updatedRecord = await pb.collection(COLLECTION).update(id, body); + return Response.json(updatedRecord, { + status: 200, + headers: { "Content-Type": "application/json" }, + }); + } catch (error) { + console.error("Error updating data:", error); + return Response.json( + { + error: { + message: "Failed to update data", + }, + }, + { + status: 500, + headers: { "Content-Type": "application/json" }, + } + ); + } } diff --git a/src/app/pocketbase/route.ts b/src/app/pocketbase/route.ts index 7679c77..c44e0c3 100644 --- a/src/app/pocketbase/route.ts +++ b/src/app/pocketbase/route.ts @@ -1,61 +1,61 @@ import pb from "@/lib/pocketbase"; -const { EMAIL, PASSWORD } = process.env; +const { EMAIL, PASSWORD, COLLECTION = "budgetable" } = process.env; async function authenticateSuperuser() { - if (!EMAIL || !PASSWORD) { - throw new Error("Environment variables EMAIL and PASSWORD must be set"); - } - if (!pb.authStore.isValid) { - await pb.collection("_superusers").authWithPassword(EMAIL, PASSWORD); - } + if (!EMAIL || !PASSWORD) { + throw new Error("Environment variables EMAIL and PASSWORD must be set"); + } + if (!pb.authStore.isValid) { + await pb.collection("_superusers").authWithPassword(EMAIL, PASSWORD); + } } export async function GET() { - try { - await authenticateSuperuser(); - const records = await pb.collection("budgetable").getFullList(); - return Response.json(records, { - status: 200, - headers: { "Content-Type": "application/json" }, - }); - } catch (error) { - console.error("Error fetching data:", error); - return Response.json( - { - error: { - message: "Failed to fetch data", - }, - }, - { - status: 500, - headers: { "Content-Type": "application/json" }, - }, - ); - } + try { + await authenticateSuperuser(); + const records = await pb.collection(COLLECTION).getFullList(); + return Response.json(records, { + status: 200, + headers: { "Content-Type": "application/json" }, + }); + } catch (error) { + console.error("Error fetching data:", error); + return Response.json( + { + error: { + message: "Failed to fetch data", + }, + }, + { + status: 500, + headers: { "Content-Type": "application/json" }, + } + ); + } } export async function POST(req: Request) { - try { - await authenticateSuperuser(); - const data = await req.json(); - const record = await pb.collection("budgetable").create(data); - return Response.json(record, { - status: 201, - headers: { "Content-Type": "application/json" }, - }); - } catch (error) { - console.error("Error adding data:", error); - return Response.json( - { - error: { - message: "Failed to add data", - }, - }, - { - status: 500, - headers: { "Content-Type": "application/json" }, - }, - ); - } + try { + await authenticateSuperuser(); + const data = await req.json(); + const record = await pb.collection(COLLECTION).create(data); + return Response.json(record, { + status: 201, + headers: { "Content-Type": "application/json" }, + }); + } catch (error) { + console.error("Error adding data:", error); + return Response.json( + { + error: { + message: "Failed to add data", + }, + }, + { + status: 500, + headers: { "Content-Type": "application/json" }, + } + ); + } }