UNPKG

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

110 lines (109 loc) 3.07 kB
import { BaseService, ServiceConfig, ServiceResponse } from "./base-service.js"; export interface DatabaseConfig extends ServiceConfig { uri: string; dbName: string; connectionOptions?: { maxPoolSize?: number; minPoolSize?: number; maxIdleTimeMS?: number; serverSelectionTimeoutMS?: number; }; } export interface QueryOptions { sanitize?: boolean; allowedFields?: string[]; limit?: number; skip?: number; sort?: Record<string, 1 | -1>; } export interface AggregationOptions { sanitize?: boolean; allowedStages?: string[]; maxPipelineLength?: number; } export declare class DatabaseService extends BaseService { private dbConfig; private client?; private db?; private isConnected; constructor(dbConfig: DatabaseConfig); /** * Connect to database */ connect(): Promise<ServiceResponse<boolean>>; /** * Disconnect from database */ disconnect(): Promise<ServiceResponse<boolean>>; /** * Find documents in collection */ find<T = any>(collectionName: string, query: any, options?: QueryOptions): Promise<ServiceResponse<T[]>>; /** * Find one document in collection */ findOne<T = any>(collectionName: string, query: any, options?: QueryOptions): Promise<ServiceResponse<T | null>>; /** * Aggregate documents in collection */ aggregate<T = any>(collectionName: string, pipeline: any[], options?: AggregationOptions): Promise<ServiceResponse<T[]>>; /** * Count documents in collection */ count(collectionName: string, query?: any, options?: QueryOptions): Promise<ServiceResponse<number>>; /** * Insert document into collection */ insertOne<T = any>(collectionName: string, document: T): Promise<ServiceResponse<string>>; /** * Update document in collection */ updateOne(collectionName: string, filter: any, update: any, options?: QueryOptions): Promise<ServiceResponse<{ matchedCount: number; modifiedCount: number; }>>; /** * Delete document from collection */ deleteOne(collectionName: string, filter: any, options?: QueryOptions): Promise<ServiceResponse<number>>; /** * Ensure database connection */ private ensureConnected; /** * Get collection instance */ private getCollection; /** * Sanitize MongoDB query */ private sanitizeQuery; /** * Sanitize update operations */ private sanitizeUpdate; /** * Sanitize aggregation pipeline */ private sanitizeAggregationPipeline; /** * Build find options */ private buildFindOptions; /** * Sanitize URI for logging */ private sanitizeUri; /** * Health check implementation */ healthCheck(): Promise<boolean>; /** * Get database statistics */ getStats(): Promise<ServiceResponse<any>>; /** * List collections */ listCollections(): Promise<ServiceResponse<string[]>>; }