const fs = require('fs'); const { parse } = require('csv-parse'); const { v4: uuidv4 } = require('uuid'); async function importProductsFromCSV(filePath, pool) { return new Promise((resolve, reject) => { const products = []; fs.createReadStream(filePath) .pipe(parse({ columns: true, skip_empty_lines: true })) .on('data', async (row) => { products.push({ id: uuidv4(), sku: row.sku, name: row.name, description: row.description || null, category: row.category || null }); }) .on('end', async () => { try { const connection = await pool.getConnection(); try { await connection.beginTransaction(); for (const product of products) { await connection.query( 'INSERT INTO products (id, sku, name, description, category) VALUES (?, ?, ?, ?, ?)', [product.id, product.sku, product.name, product.description, product.category] ); // Initialize inventory level for the product await connection.query( 'INSERT INTO inventory_levels (id, product_id, quantity) VALUES (?, ?, 0)', [uuidv4(), product.id] ); } await connection.commit(); resolve({ imported: products.length }); } catch (error) { await connection.rollback(); reject(error); } finally { connection.release(); } } catch (error) { reject(error); } }) .on('error', (error) => { reject(error); }); }); } module.exports = { importProductsFromCSV };