UNPKG

crew-management-mcp-server

Version:

Crew management server handling crew records, certifications, scheduling, payroll, and vessel assignments with ERP access for data extraction

50 lines 1.82 kB
import Typesense from 'typesense'; import { getConfig } from './config.js'; import { logger } from './logger.js'; let typesenseClient = null; export function getTypesenseClient() { if (!typesenseClient) { try { const config = getConfig(); // Get fresh config instead of cached typesenseClient = new Typesense.Client({ nodes: [{ host: config.typesenseHost, port: parseInt(config.typesensePort), protocol: config.typesenseProtocol }], apiKey: config.typesenseApiKey, connectionTimeoutSeconds: 10, retryIntervalSeconds: 0.1, numRetries: 3, logLevel: 'warn' }); logger.info('Typesense client initialized', { host: config.typesenseHost, port: config.typesensePort, protocol: config.typesenseProtocol }); } catch (error) { logger.error('Error initializing Typesense client:', error); throw error; } } return typesenseClient; } export async function searchCrewMembers(query, filters) { const client = getTypesenseClient(); try { const searchParameters = { q: query, query_by: 'fullName,employeeId,rank,department,nationality', filter_by: filters ? Object.entries(filters).map(([key, value]) => `${key}:=${value}`).join(' && ') : '', per_page: 50 }; return await client.collections('crew_members').documents().search(searchParameters); } catch (error) { logger.error('Typesense search error:', error); throw error; } } //# sourceMappingURL=typesense.js.map