UNPKG

@kenniy/godeye-data-contracts

Version:

Enterprise-grade base repository architecture for GOD-EYE microservices with zero overhead and maximum code reuse

82 lines (81 loc) 3.17 kB
/** * BLAZING FAST Enhanced MongoDB Aggregation Repository * * Next-generation MongoDB aggregation with: * - Adaptive query planning and strategy selection * - Memory-efficient streaming for large datasets * - Intelligent $facet and $lookup optimization * - Smart caching with automatic invalidation * - Performance monitoring and auto-tuning * - Parallel aggregation processing */ import { Model, Document } from "mongoose"; import { MongooseAggregateRepository } from "../repositories/mongoose-aggregate.repository"; import { EnhancedQueryConfig, EnhancedPaginatedResult, AggregationStrategy } from "../utils/enhanced-aggregation.utils"; import { PaginationDto } from "../repositories/base-aggregate.repository"; export declare abstract class EnhancedMongooseRepository<T extends Document> extends MongooseAggregateRepository<T> { protected readonly model: Model<T>; constructor(model: Model<T>); /** * Execute enhanced complex query with adaptive optimization */ enhancedComplexQuery(config: EnhancedQueryConfig): Promise<EnhancedPaginatedResult<any>>; /** * Memory-optimized strategy for small datasets (<1K records) * Uses simple aggregation pipeline with minimal overhead */ private executeMemoryOptimized; /** * Hybrid strategy for medium datasets (1K-100K records) * Combines memory and disk operations with selective optimization */ private executeHybrid; /** * Streaming strategy for large datasets (100K-1M records) * Uses aggregation cursor with chunked processing */ private executeStreaming; /** * Distributed strategy for very large datasets (>1M records) * Uses map-reduce patterns and chunked parallel processing */ private executeDistributed; /** * Execute multiple joins in parallel using Promise.all */ private executeParallelJoins; /** * Build optimized aggregation pipeline based on strategy */ protected buildOptimizedPipeline(config: EnhancedQueryConfig, strategy: AggregationStrategy): any[]; /** * Build filter stages with optimization for different strategies */ protected buildFilterStages(config: EnhancedQueryConfig): any[]; /** * Add pagination using $facet for parallel data + count execution */ private addPaginationToPipeline; /** * Select optimal index based on query conditions */ private selectOptimalIndex; /** * Estimate result size for strategy selection */ protected estimateResultSize(config: EnhancedQueryConfig): Promise<number>; /** * Format results into enhanced paginated structure */ protected formatEnhancedResult(items: any[], total: number, pagination?: PaginationDto): EnhancedPaginatedResult<any>; protected buildLookupStage(join: any): any; private buildOptimizedLookupStage; private buildGroupStages; private buildIndexOptimizedStages; private convertSortFormat; private groupJoinsForParallelExecution; private createJoinMergeProjection; private selectPartitionField; private createDataPartitions; private processPartition; }