defect-inspection-tools-mcp-server
Version:
Defect inspection tools server handling defect detection, analysis, and reporting with AI/ML capabilities for quality control
53 lines (52 loc) • 2.4 kB
TypeScript
import { BaseService, ServiceConfig, ServiceHealthStatus, ServiceResponse } from './base-service.js';
import { ObjectId, Document, WithId } from 'mongodb';
export interface DatabaseConfig extends ServiceConfig {
uri: string;
databaseName: string;
maxPoolSize?: number;
minPoolSize?: number;
maxIdleTimeMS?: number;
serverSelectionTimeoutMS?: number;
}
export interface QueryOptions {
limit?: number;
skip?: number;
sort?: Record<string, 1 | -1>;
projection?: Record<string, 1 | 0>;
allowedFields?: string[];
sanitizeQuery?: boolean;
}
export interface UpdateOptions {
upsert?: boolean;
sanitizeUpdate?: boolean;
allowedFields?: string[];
}
export interface AggregationOptions {
allowedStages?: string[];
maxPipelineLength?: number;
sanitizePipeline?: boolean;
}
export declare class DatabaseService extends BaseService {
private client;
private db;
protected config: Required<ServiceConfig> & DatabaseConfig;
private isConnected;
constructor(config: DatabaseConfig);
initialize(): Promise<void>;
private ensureConnected;
healthCheck(): Promise<ServiceHealthStatus>;
find<T extends Document>(collectionName: string, query: Record<string, any>, options?: QueryOptions): Promise<ServiceResponse<WithId<T>[]>>;
findOne<T extends Document>(collectionName: string, query: Record<string, any>, options?: QueryOptions): Promise<ServiceResponse<WithId<T> | null>>;
count(collectionName: string, query: Record<string, any>, options?: QueryOptions): Promise<ServiceResponse<number>>;
insertOne<T extends Document>(collectionName: string, document: T): Promise<ServiceResponse<ObjectId>>;
updateOne(collectionName: string, filter: Record<string, any>, update: Record<string, any>, options?: UpdateOptions): Promise<ServiceResponse<boolean>>;
deleteOne(collectionName: string, filter: Record<string, any>, options?: QueryOptions): Promise<ServiceResponse<boolean>>;
aggregate<T extends Document>(collectionName: string, pipeline: Record<string, any>[], options?: AggregationOptions): Promise<ServiceResponse<WithId<T>[]>>;
getStats(): Promise<ServiceResponse<any>>;
listCollections(): Promise<ServiceResponse<string[]>>;
private sanitizeQuery;
private sanitizeUpdate;
private sanitizePipeline;
close(): Promise<void>;
isConnectionHealthy(): boolean;
}