chore: upload parte 1 - logica
DevSecOps Enterprise Pipeline / security-gate-and-deploy (push) Failing after 41s

This commit is contained in:
2026-06-01 15:35:53 +01:00
parent a63625d228
commit 9c14a19a87
127 changed files with 22255 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
import { NextRequest, NextResponse } from "next/server";
import { getDb } from "@/lib/db";
export async function GET(request: NextRequest) {
try {
const sql = getDb();
const { searchParams } = new URL(request.url);
const source = searchParams.get("source") || "all";
const productIds = searchParams.get("productIds") || "";
let query = `
SELECT DISTINCT c.id, c.part_number, c.name, c.stock_quantity, c.shelf_location,
c.customer_supplied, c.customer_id, c.min_stock_level,
cat.name as category_name,
cust.name as customer_name
FROM components c
LEFT JOIN categories cat ON c.category_id = cat.id
LEFT JOIN customers cust ON c.customer_id = cust.id
`;
const params: (string | number)[] = [];
const conditions: string[] = [];
// If product filter is specified, join through BOM
if (productIds) {
const ids = productIds.split(",").map(Number).filter(Boolean);
if (ids.length > 0) {
query += ` INNER JOIN bom_items bi ON bi.component_id = c.id`;
const placeholders = ids.map((id, idx) => {
params.push(id);
return `$${params.length}`;
});
conditions.push(`bi.product_id IN (${placeholders.join(",")})`);
}
}
// Source filter
if (source === "standard") {
conditions.push(`(c.customer_supplied = false OR c.customer_supplied IS NULL)`);
} else if (source.startsWith("customer-")) {
const customerId = Number(source.replace("customer-", ""));
if (customerId) {
params.push(customerId);
conditions.push(`c.customer_supplied = true AND c.customer_id = $${params.length}`);
}
}
if (conditions.length > 0) {
query += ` WHERE ` + conditions.join(" AND ");
}
query += ` ORDER BY c.part_number ASC`;
const rows = await sql(query, params);
return NextResponse.json(rows);
} catch (error) {
console.error("Stock take error:", error);
return NextResponse.json({ error: "Failed to fetch stock take data" }, { status: 500 });
}
}