pms-analysis-reports-mcp-server
Version:
PMS analysis reports server handling maintenance reports, equipment analysis, compliance tracking, and performance metrics with ERP access for data extraction
72 lines (71 loc) • 3.11 kB
TypeScript
/**
* Company Name Filtering Utilities
* Helper functions for filtering data based on company IMO numbers
*
* ============================================================================
* OLD IMPLEMENTATION (COMMENTED OUT - REPLACED BY OPTIMIZED VERSION)
* ============================================================================
* The old implementation has been replaced with an optimized version that includes:
* - In-memory caching with TTL (5 minutes)
* - MongoDB connection pooling
* - Set-based IMO lookups (O(1) instead of O(n))
* - Cached environment variables and config
* ============================================================================
*/
/**
* Check if IMO filtering should be bypassed for admin companies
*/
declare function shouldBypassImoFiltering(companyName: string): boolean;
/**
* Optimized Company Filter Manager with caching and connection pooling
*/
declare class CompanyFilterManager {
private imoCache;
private mongoClients;
private readonly CACHE_TTL;
private cachedCompanyName;
private cachedDbConfig;
/**
* Get company name (cached)
*/
private getCompanyName;
/**
* Get database configuration (cached)
*/
private getDbConfig;
/**
* Get or create MongoDB client (connection pooling)
*/
private getMongoClient;
/**
* Get company IMO set with caching (returns Set for O(1) lookups)
*/
getCompanyImoSet(companyName: string, dbName: string, mongoUri: string, collectionName?: string): Promise<Set<string>>;
/**
* Validate if an IMO belongs to the company (optimized)
*/
isValidImoForCompany(imo: string | number, companyName?: string, dbName?: string, mongoUri?: string): Promise<boolean>;
/**
* Update Typesense filter with company IMO numbers (optimized)
*/
updateTypesenseFilterWithCompanyImos(filter: string, dbName?: string, mongoUri?: string): Promise<string>;
/**
* Get company IMO numbers as array (for backward compatibility)
*/
getCompanyImoNumbers(companyName: string, dbName: string, mongoUri: string, collectionName?: string): Promise<string[]>;
filterImoListForCompany(imoList: number[], dbName?: string, mongoUri?: string): Promise<number[]>;
/**
* Clear cache (useful for testing or forced refresh)
*/
clearCache(): void;
/**
* Close all MongoDB connections (cleanup)
*/
closeConnections(): Promise<void>;
}
export declare const companyFilter: CompanyFilterManager;
export declare function fetchCompanyImoNumbers(companyName: string, dbName: string, mongoUri: string, collectionName?: string): Promise<string[]>;
export declare function isValidImoForCompany(imo: string | number, companyName?: string, dbName?: string, mongoUri?: string): Promise<boolean>;
export declare function updateTypesenseFilterWithCompanyImos(filter: string, dbName?: string, mongoUri?: string): Promise<string>;
export declare function filterImoListForCompany(imoList: number[], dbName?: string, mongoUri?: string): Promise<number[]>;
export { shouldBypassImoFiltering };