feat(products): expose structured product specs

This commit is contained in:
Ruslan Bakiev
2026-04-03 14:52:30 +07:00
parent 7cd650bd04
commit 174cfe8665
2 changed files with 31 additions and 0 deletions

View File

@@ -37,6 +37,29 @@ const PRODUCT_ROWS = [
{ sku: '753600', productType: PRODUCT_TYPES.STANDARD, widthMm: 75, lengthM: 120, thicknessMicron: 47, sleeveBrand: 'фрегат', quantityPerBox: '24' },
];
function assertUniqueProductRows(rows) {
const seen = new Map();
for (const row of rows) {
const signature = [
row.productType,
row.widthMm,
row.lengthM,
row.thicknessMicron,
row.sleeveBrand,
].join('|');
const duplicate = seen.get(signature);
if (duplicate) {
throw new Error(
`Duplicate product signature detected for ${row.sku} and ${duplicate.sku}: ${signature}`,
);
}
seen.set(signature, row);
}
}
function sentenceCase(value) {
if (!value) {
return value;
@@ -103,6 +126,8 @@ const warehouseReserve = await prisma.warehouse.upsert({
});
const activeSkus = PRODUCT_ROWS.map((item) => item.sku);
assertUniqueProductRows(PRODUCT_ROWS);
await prisma.product.updateMany({
where: { sku: { notIn: activeSkus } },
data: { isActive: false },

View File

@@ -177,6 +177,12 @@ type Product {
sku: String!
name: String!
description: String
productType: String
widthMm: Int
lengthM: Int
thicknessMicron: Int
sleeveBrand: String
quantityPerBox: String
isCustomizable: Boolean!
isActive: Boolean!
availableInWarehouses: [ProductWarehouseBalance!]!