import { NextResponse } from "next/server"; import { getContactById, updateContact, deleteContact, hardDeleteContact, } from "@/lib/queries/contacts"; import { withAuth } from "@/lib/middleware/auth"; // GET: Get contact by ID async function getContactHandler(req, { params }) { try { const contactId = parseInt(params.id); const contact = getContactById(contactId); if (!contact) { return NextResponse.json( { error: "Contact not found" }, { status: 404 } ); } return NextResponse.json(contact); } catch (error) { console.error("Error fetching contact:", error); return NextResponse.json( { error: "Failed to fetch contact" }, { status: 500 } ); } } // PUT: Update contact async function updateContactHandler(req, { params }) { try { const contactId = parseInt(params.id); const data = await req.json(); // Validate contact type if provided if (data.contact_type) { const validTypes = [ "project", "contractor", "office", "supplier", "other", ]; if (!validTypes.includes(data.contact_type)) { return NextResponse.json( { error: "Invalid contact type" }, { status: 400 } ); } } const contact = updateContact(contactId, data); if (!contact) { return NextResponse.json( { error: "Contact not found" }, { status: 404 } ); } return NextResponse.json(contact); } catch (error) { console.error("Error updating contact:", error); return NextResponse.json( { error: "Failed to update contact" }, { status: 500 } ); } } // DELETE: Delete contact (soft delete or hard delete) async function deleteContactHandler(req, { params }) { try { const contactId = parseInt(params.id); const { searchParams } = new URL(req.url); const hard = searchParams.get("hard") === "true"; if (hard) { // Hard delete - permanently remove hardDeleteContact(contactId); } else { // Soft delete - set is_active to 0 deleteContact(contactId); } return NextResponse.json({ message: "Contact deleted successfully" }); } catch (error) { console.error("Error deleting contact:", error); return NextResponse.json( { error: "Failed to delete contact" }, { status: 500 } ); } } // Protected routes - require authentication export const GET = withAuth(getContactHandler); export const PUT = withAuth(updateContactHandler); export const DELETE = withAuth(deleteContactHandler);