From dd79298b94e0318dd06cac7766eeb6dd39336e94 Mon Sep 17 00:00:00 2001 From: Matt Date: Thu, 2 Oct 2025 21:49:48 -0400 Subject: [PATCH] Fixes to get all servers running on netcup --- .../aircall-server/src/utils/logger.js | 11 ++++++++-- inventory-server/src/routes/products.js | 22 ++++++++++++++++--- inventory-server/src/server.js | 19 +++++++++++++--- 3 files changed, 44 insertions(+), 8 deletions(-) diff --git a/inventory-server/dashboard/aircall-server/src/utils/logger.js b/inventory-server/dashboard/aircall-server/src/utils/logger.js index 13e955b..80a200f 100644 --- a/inventory-server/dashboard/aircall-server/src/utils/logger.js +++ b/inventory-server/dashboard/aircall-server/src/utils/logger.js @@ -1,7 +1,14 @@ import winston from 'winston'; import path from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); export function createLogger(service) { + // Create logs directory relative to the project root (two levels up from utils) + const logsDir = path.join(__dirname, '../../logs'); + return winston.createLogger({ level: process.env.LOG_LEVEL || 'info', format: winston.format.combine( @@ -19,11 +26,11 @@ export function createLogger(service) { }), // Write all logs to service-specific files new winston.transports.File({ - filename: path.join('logs', `${service}-error.log`), + filename: path.join(logsDir, `${service}-error.log`), level: 'error' }), new winston.transports.File({ - filename: path.join('logs', `${service}-combined.log`) + filename: path.join(logsDir, `${service}-combined.log`) }) ] }); diff --git a/inventory-server/src/routes/products.js b/inventory-server/src/routes/products.js index 04e3a77..1fa3827 100644 --- a/inventory-server/src/routes/products.js +++ b/inventory-server/src/routes/products.js @@ -1,11 +1,27 @@ const express = require('express'); const router = express.Router(); const multer = require('multer'); +const path = require('path'); +const fs = require('fs'); const { importProductsFromCSV } = require('../utils/csvImporter'); const { PurchaseOrderStatus, ReceivingStatus } = require('../types/status-codes'); -// Configure multer for file uploads -const upload = multer({ dest: 'uploads/' }); +// Configure multer for file uploads without silent fallbacks +const configuredUploadsDir = process.env.UPLOADS_DIR; +const uploadsDir = configuredUploadsDir + ? (path.isAbsolute(configuredUploadsDir) + ? configuredUploadsDir + : path.resolve(__dirname, '../../', configuredUploadsDir)) + : path.resolve(__dirname, '../../uploads'); + +try { + fs.mkdirSync(uploadsDir, { recursive: true }); +} catch (error) { + console.error(`Failed to initialize uploads directory at ${uploadsDir}:`, error); + throw error; +} + +const upload = multer({ dest: uploadsDir }); // Get unique brands router.get('/brands', async (req, res) => { @@ -728,4 +744,4 @@ router.get('/:id/time-series', async (req, res) => { } }); -module.exports = router; \ No newline at end of file +module.exports = router; diff --git a/inventory-server/src/server.js b/inventory-server/src/server.js index f8c8dcd..c4a88b4 100644 --- a/inventory-server/src/server.js +++ b/inventory-server/src/server.js @@ -44,8 +44,21 @@ try { console.error('Error loading .env file:', error); } -// Ensure required directories exist -['logs', 'uploads'].forEach(dir => { +// Resolve important directories relative to the project root +const serverRoot = path.resolve(__dirname, '..'); +const configuredUploadsDir = process.env.UPLOADS_DIR; +const uploadsDir = configuredUploadsDir + ? (path.isAbsolute(configuredUploadsDir) + ? configuredUploadsDir + : path.resolve(serverRoot, configuredUploadsDir)) + : path.resolve(serverRoot, 'uploads'); + +// Persist the resolved uploads directory so downstream modules share the same path +process.env.UPLOADS_DIR = uploadsDir; + +const requiredDirs = [path.resolve(serverRoot, 'logs'), uploadsDir]; + +requiredDirs.forEach(dir => { if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); } @@ -209,4 +222,4 @@ const setupSSE = (req, res) => { }; // Start the server -startServer(); \ No newline at end of file +startServer();