survey-mcp-server
Version:
Survey management server handling survey creation, response collection, analysis, and reporting with database access for data management
71 lines (70 loc) • 2.35 kB
TypeScript
import { FindOptions, UpdateOptions, DeleteOptions } from 'mongodb';
import { BaseService, ServiceConfig, HealthCheckResult } from './base.js';
export interface DatabaseQuery {
filter: any;
options?: FindOptions;
limit?: number;
skip?: number;
sort?: any;
}
export interface DatabaseUpdateQuery {
filter: any;
update: any;
options?: UpdateOptions;
}
export interface DatabaseDeleteQuery {
filter: any;
options?: DeleteOptions;
}
export interface QueryResult<T = any> {
data: T[];
total: number;
limit: number;
skip: number;
hasMore: boolean;
}
export interface ConnectionPoolStats {
totalConnections: number;
availableConnections: number;
checkedOutConnections: number;
minPoolSize: number;
maxPoolSize: number;
}
export declare class DatabaseService extends BaseService {
private mongoClient;
private connectionMap;
private queryCount;
private errorCount;
private lastConnectionCheck;
constructor(config?: Partial<ServiceConfig>);
initialize(): Promise<void>;
protected performHealthCheck(): Promise<HealthCheckResult>;
findDocuments<T = any>(collection: string, query: DatabaseQuery, connectionName?: string): Promise<QueryResult<T>>;
findDocumentById<T = any>(collection: string, id: any, connectionName?: string): Promise<T | null>;
insertDocument<T = any>(collection: string, document: T, connectionName?: string): Promise<T>;
updateDocuments(collection: string, query: DatabaseUpdateQuery, connectionName?: string): Promise<{
matchedCount: number;
modifiedCount: number;
}>;
deleteDocuments(collection: string, query: DatabaseDeleteQuery, connectionName?: string): Promise<{
deletedCount: number;
}>;
aggregateDocuments<T = any>(collection: string, pipeline: any[], connectionName?: string): Promise<T[]>;
private getCollection;
private isRetryableError;
private sanitizeLogData;
getConnectionStats(): {
[connectionName: string]: any;
};
getServiceStats(): {
queryCount: number;
errorCount: number;
successRate: number;
lastHealthCheck: Date;
connections: {
[connectionName: string]: any;
};
};
shutdown(): Promise<void>;
}
export declare const databaseService: DatabaseService;