Files
medreport_mrb2b/utils/medusa-product.ts
Danel Kungla 0c2cfe6d18 prettier fix
2025-09-19 17:22:36 +03:00

63 lines
1.5 KiB
TypeScript

import type { AdminProductVariant, StoreProduct } from '@medusajs/types';
type Product = {
metadata?: {
analysisElementMedusaProductIds?: string;
} | null;
variant?: {
metadata?: {
analysisElementMedusaProductIds?: string;
} | null;
} | null;
} | null;
export const getAnalysisElementMedusaProductIds = (
products: (Pick<StoreProduct, 'metadata'> & {
variant?: Pick<AdminProductVariant, 'metadata'>;
})[],
) => {
if (!products) {
return [];
}
const mapped = products
.flatMap((product) => {
const value = (
product as Product
)?.metadata?.analysisElementMedusaProductIds?.replaceAll("'", '"');
const value_variant = (
product as Product
)?.variant?.metadata?.analysisElementMedusaProductIds?.replaceAll(
"'",
'"',
);
const result: string[] = [];
try {
if (value) {
result.push(...JSON.parse(value as string));
}
} catch (e) {
console.error(
'Failed to parse analysisElementMedusaProductIds from analysis package variant, possibly invalid format',
e,
);
}
try {
if (value_variant) {
result.push(...JSON.parse(value_variant as string));
}
} catch (e) {
console.error(
'Failed to parse analysisElementMedusaProductIds from analysis package, possibly invalid format',
e,
);
}
return result;
})
.filter(Boolean) as string[];
return [...new Set(mapped)];
};