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
JavaScript
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