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
TypeScript
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[]>>;
}