79 lines
2.0 KiB
TypeScript
79 lines
2.0 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
import { getDb } from "@/lib/db";
|
|
|
|
export async function PUT(
|
|
request: NextRequest,
|
|
{ params }: { params: Promise<{ id: string }> }
|
|
) {
|
|
const sql = getDb();
|
|
const { id } = await params;
|
|
const body = await request.json();
|
|
const {
|
|
part_number,
|
|
name,
|
|
description,
|
|
category_id,
|
|
manufacturer,
|
|
package_type,
|
|
unit_price,
|
|
stock_quantity,
|
|
min_stock_level,
|
|
datasheet_url,
|
|
supplier,
|
|
supplier_part_number,
|
|
shelf_location,
|
|
is_internal,
|
|
customer_supplied,
|
|
customer_id: cust_id,
|
|
specs,
|
|
} = body;
|
|
|
|
const rows = await sql(
|
|
`UPDATE components SET
|
|
part_number = $1, name = $2, description = $3, category_id = $4,
|
|
manufacturer = $5, package_type = $6, unit_price = $7, stock_quantity = $8,
|
|
min_stock_level = $9, datasheet_url = $10, supplier = $11, supplier_part_number = $12,
|
|
shelf_location = $13, is_internal = $14, customer_supplied = $15, customer_id = $16,
|
|
specs = $17, updated_at = NOW()
|
|
WHERE id = $18
|
|
RETURNING *`,
|
|
[
|
|
part_number,
|
|
name,
|
|
description || null,
|
|
category_id || null,
|
|
manufacturer || null,
|
|
package_type || null,
|
|
unit_price || 0,
|
|
stock_quantity || 0,
|
|
min_stock_level || 0,
|
|
datasheet_url || null,
|
|
supplier || null,
|
|
supplier_part_number || null,
|
|
shelf_location || null,
|
|
is_internal ?? false,
|
|
customer_supplied ?? false,
|
|
customer_supplied ? (cust_id || null) : null,
|
|
JSON.stringify(specs || {}),
|
|
Number(id),
|
|
]
|
|
);
|
|
|
|
if (rows.length === 0) {
|
|
return NextResponse.json({ error: "Component not found" }, { status: 404 });
|
|
}
|
|
|
|
return NextResponse.json(rows[0]);
|
|
}
|
|
|
|
export async function DELETE(
|
|
_request: NextRequest,
|
|
{ params }: { params: Promise<{ id: string }> }
|
|
) {
|
|
const sql = getDb();
|
|
const { id } = await params;
|
|
|
|
await sql(`DELETE FROM components WHERE id = $1`, [Number(id)]);
|
|
return NextResponse.json({ success: true });
|
|
}
|