UNPKG

voyage-and-consumption-mcp-server

Version:

Voyage and consumption management server handling vessel voyages, fuel consumption, performance monitoring, and operational data with ERP access for data extraction

53 lines 2.04 kB
import { logger } from '../utils/logger.js'; export class DatabaseService { constructor(connectionManager) { this.connectionManager = connectionManager; } async getCollection(collectionName, useSecondary = false) { try { const database = useSecondary ? this.connectionManager.getSecondaryDatabase() : this.connectionManager.getPrimaryDatabase(); const collection = database.collection(collectionName); logger.debug(`Retrieved collection: ${collectionName} from ${useSecondary ? 'secondary' : 'primary'} database`); return collection; } catch (error) { logger.error(`Error getting collection ${collectionName}:`, error); throw error; } } async executeOperation(operation, collectionName, useSecondary = false) { try { const collection = await this.getCollection(collectionName, useSecondary); const result = await operation(collection); logger.debug(`Operation completed successfully on collection: ${collectionName}`); return result; } catch (error) { logger.error(`Error executing operation on collection ${collectionName}:`, error); throw error; } } async testConnection() { try { const status = await this.connectionManager.getConnectionStatus(); logger.info(`Connection status - Primary: ${status.primary}, Secondary: ${status.secondary}`); return status; } catch (error) { logger.error('Error testing database connections:', error); throw error; } } getPrimaryDatabase() { return this.connectionManager.getPrimaryDatabase(); } getSecondaryDatabase() { return this.connectionManager.getSecondaryDatabase(); } async close() { await this.connectionManager.close(); } } //# sourceMappingURL=database-service.js.map