From 00c8e1b090bc148670cd209389e8c1cc93464510 Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 2 Feb 2025 15:41:57 -0500 Subject: [PATCH] Clean up from simplifying --- inventory-server/scripts/import-from-prod.js | 10 ------- inventory-server/scripts/import/categories.js | 15 ----------- inventory-server/scripts/import/orders.js | 24 ----------------- inventory-server/scripts/import/products.js | 14 +++------- .../scripts/import/purchase-orders.js | 24 ----------------- inventory-server/scripts/reset-db.js | 26 +------------------ inventory-server/scripts/reset-metrics.js | 4 +-- 7 files changed, 6 insertions(+), 111 deletions(-) diff --git a/inventory-server/scripts/import-from-prod.js b/inventory-server/scripts/import-from-prod.js index c80cc63..67b6678 100644 --- a/inventory-server/scripts/import-from-prod.js +++ b/inventory-server/scripts/import-from-prod.js @@ -102,16 +102,6 @@ async function main() { if (isImportCancelled) throw new Error("Import cancelled"); - // Initialize product_metric_status table for any missing products - await localConnection.query(` - INSERT IGNORE INTO product_metric_status (pid) - SELECT pid FROM products p - WHERE NOT EXISTS ( - SELECT 1 FROM product_metric_status pms - WHERE pms.pid = p.pid - ) - `); - // Clean up any previously running imports that weren't completed await localConnection.query(` UPDATE import_history diff --git a/inventory-server/scripts/import/categories.js b/inventory-server/scripts/import/categories.js index 94b11cb..7dffc3c 100644 --- a/inventory-server/scripts/import/categories.js +++ b/inventory-server/scripts/import/categories.js @@ -136,21 +136,6 @@ async function importCategories(prodConnection, localConnection) { total: totalInserted, elapsed: formatElapsedTime((Date.now() - startTime) / 1000), }); - - // Mark all products in these categories for recalculation - if (categoriesToInsert.length > 0) { - const affectedCatIds = categoriesToInsert.map(c => c.cat_id); - - await localConnection.query(` - INSERT INTO product_metric_status (pid, needs_recalculation) - SELECT DISTINCT pc.pid, TRUE - FROM product_categories pc - WHERE pc.cat_id IN (?) - ON DUPLICATE KEY UPDATE - needs_recalculation = TRUE, - updated_at = CURRENT_TIMESTAMP - `, [affectedCatIds]); - } } // After all imports, if we skipped any categories, throw an error diff --git a/inventory-server/scripts/import/orders.js b/inventory-server/scripts/import/orders.js index 60b06c6..f73d509 100644 --- a/inventory-server/scripts/import/orders.js +++ b/inventory-server/scripts/import/orders.js @@ -473,18 +473,6 @@ async function importOrders(prodConnection, localConnection, incrementalUpdate = recordsAdded += inserts; recordsUpdated += updates; importedCount += processedOrderItems.size; - - // Mark affected products for recalculation - const affectedPids = [...new Set(validOrders.map(o => o.pid))]; - if (affectedPids.length > 0) { - await localConnection.query(` - INSERT INTO product_metric_status (pid, needs_recalculation) - VALUES ${affectedPids.map(() => '(?, TRUE)').join(',')} - ON DUPLICATE KEY UPDATE - needs_recalculation = TRUE, - updated_at = CURRENT_TIMESTAMP - `, affectedPids); - } } // Update progress based on unique orders processed @@ -597,18 +585,6 @@ async function importOrders(prodConnection, localConnection, incrementalUpdate = recordsAdded += inserts; recordsUpdated += updates; importedCount += retryOrderItems.size; - - // Mark affected products for recalculation - const affectedPids = [...new Set(validOrders.map(o => o.pid))]; - if (affectedPids.length > 0) { - await localConnection.query(` - INSERT INTO product_metric_status (pid, needs_recalculation) - VALUES ${affectedPids.map(() => '(?, TRUE)').join(',')} - ON DUPLICATE KEY UPDATE - needs_recalculation = TRUE, - updated_at = CURRENT_TIMESTAMP - `, affectedPids); - } } } catch (error) { console.warn('Warning: Failed to retry skipped orders:', error.message); diff --git a/inventory-server/scripts/import/products.js b/inventory-server/scripts/import/products.js index a17162c..73e3272 100644 --- a/inventory-server/scripts/import/products.js +++ b/inventory-server/scripts/import/products.js @@ -203,8 +203,8 @@ async function materializeCalculations(prodConnection, localConnection, incremen }); // Insert all product data into temp table in batches - for (let i = 0; i < prodData.length; i += 1000) { - const batch = prodData.slice(i, i + 1000); + for (let i = 0; i < prodData.length; i += 5000) { + const batch = prodData.slice(i, i + 5000); const values = batch.map(row => [ row.pid, row.title, @@ -315,7 +315,7 @@ async function materializeCalculations(prodConnection, localConnection, incremen outputProgress({ status: "running", operation: "Products import", - message: `Processed ${Math.min(i + 1000, prodData.length)} of ${prodData.length} product records`, + message: `Processed ${Math.min(i + 5000, prodData.length)} of ${prodData.length} product records`, current: i + batch.length, total: prodData.length }); @@ -473,14 +473,6 @@ async function importProducts(prodConnection, localConnection, incrementalUpdate ...insertsAndUpdates.updates.map(p => p.pid), ...insertsAndUpdates.inserts.map(p => p.pid) ]; - - await localConnection.query(` - INSERT INTO product_metric_status (pid, needs_recalculation) - VALUES ${affectedPids.map(() => '(?, TRUE)').join(',')} - ON DUPLICATE KEY UPDATE - needs_recalculation = TRUE, - updated_at = CURRENT_TIMESTAMP - `, affectedPids); } // Process category relationships diff --git a/inventory-server/scripts/import/purchase-orders.js b/inventory-server/scripts/import/purchase-orders.js index 197cbed..1f40883 100644 --- a/inventory-server/scripts/import/purchase-orders.js +++ b/inventory-server/scripts/import/purchase-orders.js @@ -474,18 +474,6 @@ async function importPurchaseOrders(prodConnection, localConnection, incremental recordsAdded += inserts; recordsUpdated += Math.floor(updates); // Ensure we never have fractional updates processed += batchProcessed; - - // Mark affected products for recalculation - const affectedPids = [...new Set(productBatch.map(p => p.pid))]; - if (affectedPids.length > 0) { - await localConnection.query(` - INSERT INTO product_metric_status (pid, needs_recalculation) - VALUES ${affectedPids.map(() => '(?, TRUE)').join(',')} - ON DUPLICATE KEY UPDATE - needs_recalculation = TRUE, - updated_at = CURRENT_TIMESTAMP - `, affectedPids); - } } // Handle updates - now we know these actually have changes @@ -511,18 +499,6 @@ async function importPurchaseOrders(prodConnection, localConnection, incremental recordsUpdated += Math.floor(updates); // Ensure we never have fractional updates processed += batchProcessed; - - // Mark affected products for recalculation - const affectedPids = [...new Set(productBatch.map(p => p.pid))]; - if (affectedPids.length > 0) { - await localConnection.query(` - INSERT INTO product_metric_status (pid, needs_recalculation) - VALUES ${affectedPids.map(() => '(?, TRUE)').join(',')} - ON DUPLICATE KEY UPDATE - needs_recalculation = TRUE, - updated_at = CURRENT_TIMESTAMP - `, affectedPids); - } } // Update progress based on time interval diff --git a/inventory-server/scripts/reset-db.js b/inventory-server/scripts/reset-db.js index 767dd50..0d1848f 100644 --- a/inventory-server/scripts/reset-db.js +++ b/inventory-server/scripts/reset-db.js @@ -43,8 +43,7 @@ const CONFIG_TABLES = [ 'sales_seasonality', 'turnover_config', 'sync_status', - 'metric_calculation_config', - 'product_metric_status' + 'metric_calculation_config' ]; // Split SQL into individual statements @@ -501,29 +500,6 @@ async function resetDatabase() { } } - // Verify triggers exist - const [triggers] = await connection.query('SHOW TRIGGERS'); - const expectedTriggers = [ - 'orders_after_insert_update', - 'purchase_orders_after_insert_update', - 'products_after_insert_update' - ]; - - const missingTriggers = expectedTriggers.filter( - triggerName => !triggers.some(t => t.Trigger === triggerName) - ); - - if (missingTriggers.length > 0) { - throw new Error( - `Missing required triggers: ${missingTriggers.join(', ')}` - ); - } - - outputProgress({ - operation: 'Triggers verified', - message: `Successfully verified triggers: ${expectedTriggers.join(', ')}` - }); - outputProgress({ status: 'complete', operation: 'Database reset complete', diff --git a/inventory-server/scripts/reset-metrics.js b/inventory-server/scripts/reset-metrics.js index fcbb9a9..9692fae 100644 --- a/inventory-server/scripts/reset-metrics.js +++ b/inventory-server/scripts/reset-metrics.js @@ -34,8 +34,8 @@ const METRICS_TABLES = [ 'sales_forecasts', 'temp_purchase_metrics', 'temp_sales_metrics', - 'vendor_metrics', //before vendor_details for foreign key - 'vendor_time_metrics', //before vendor_details for foreign key + 'vendor_metrics', + 'vendor_time_metrics', 'vendor_details' ];