Fix/enhance data management page
This commit is contained in:
@@ -836,4 +836,58 @@ router.get('/status/tables', async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
// GET /status/table-counts - Get record counts for all tables
|
||||
router.get('/status/table-counts', async (req, res) => {
|
||||
try {
|
||||
const pool = req.app.locals.pool;
|
||||
const tables = [
|
||||
// Core tables
|
||||
'products', 'categories', 'product_categories', 'orders', 'purchase_orders',
|
||||
// Metrics tables
|
||||
'product_metrics', 'product_time_aggregates', 'vendor_metrics', 'category_metrics',
|
||||
'vendor_time_metrics', 'category_time_metrics', 'category_sales_metrics',
|
||||
'brand_metrics', 'brand_time_metrics', 'sales_forecasts', 'category_forecasts',
|
||||
// Config tables
|
||||
'stock_thresholds', 'lead_time_thresholds', 'sales_velocity_config',
|
||||
'abc_classification_config', 'safety_stock_config', 'turnover_config',
|
||||
'sales_seasonality', 'financial_calc_config'
|
||||
];
|
||||
|
||||
const counts = await Promise.all(
|
||||
tables.map(table =>
|
||||
pool.query(`SELECT COUNT(*) as count FROM ${table}`)
|
||||
.then(result => ({
|
||||
table_name: table,
|
||||
count: parseInt(result.rows[0].count)
|
||||
}))
|
||||
.catch(err => ({
|
||||
table_name: table,
|
||||
count: null,
|
||||
error: err.message
|
||||
}))
|
||||
)
|
||||
);
|
||||
|
||||
// Group tables by type
|
||||
const groupedCounts = {
|
||||
core: counts.filter(c => ['products', 'categories', 'product_categories', 'orders', 'purchase_orders'].includes(c.table_name)),
|
||||
metrics: counts.filter(c => [
|
||||
'product_metrics', 'product_time_aggregates', 'vendor_metrics', 'category_metrics',
|
||||
'vendor_time_metrics', 'category_time_metrics', 'category_sales_metrics',
|
||||
'brand_metrics', 'brand_time_metrics', 'sales_forecasts', 'category_forecasts'
|
||||
].includes(c.table_name)),
|
||||
config: counts.filter(c => [
|
||||
'stock_thresholds', 'lead_time_thresholds', 'sales_velocity_config',
|
||||
'abc_classification_config', 'safety_stock_config', 'turnover_config',
|
||||
'sales_seasonality', 'financial_calc_config'
|
||||
].includes(c.table_name))
|
||||
};
|
||||
|
||||
res.json(groupedCounts);
|
||||
} catch (error) {
|
||||
console.error('Error fetching table counts:', error);
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user