UNPKG

nestjs-event-sourcing-lib

Version:

A comprehensive Event Sourcing and CQRS library for NestJS applications

101 lines 3.24 kB
import { BaseEventStore, EventStoreConnectionOptions, SaveEventsResult, GetEventsOptions, GetEventsResult, AggregateSnapshot, EventStoreStats } from '../core/event-store.interface'; import { Event } from '../core/event'; interface MongoDBClient { connect(): Promise<void>; close(): Promise<void>; db(name?: string): MongoDBDatabase; } interface MongoDBDatabase { collection(name: string): MongoDBCollection; } interface MongoDBCollection { findOne(filter: any, options?: any): Promise<any>; find(filter: any, options?: any): MongoDBCursor; insertOne(doc: any, options?: any): Promise<any>; insertMany(docs: any[], options?: any): Promise<any>; updateOne(filter: any, update: any, options?: any): Promise<any>; deleteOne(filter: any, options?: any): Promise<any>; deleteMany(filter: any, options?: any): Promise<any>; countDocuments(filter?: any): Promise<number>; createIndex(keys: any, options?: any): Promise<string>; aggregate(pipeline: any[]): MongoDBCursor; } interface MongoDBCursor { sort(sort: any): MongoDBCursor; limit(limit: number): MongoDBCursor; toArray(): Promise<any[]>; } /** * MongoDB Event Store implementation */ export declare class MongoDBEventStore extends BaseEventStore { private readonly customClient?; private readonly logger; private client?; private database?; private eventsCollection?; private snapshotsCollection?; constructor(options: EventStoreConnectionOptions, customClient?: MongoDBClient | undefined); /** * Connects to MongoDB */ connect(): Promise<void>; /** * Disconnects from MongoDB */ disconnect(): Promise<void>; /** * Saves events for aggregate */ saveEvents(aggregateId: string, events: Event[], expectedVersion?: number): Promise<SaveEventsResult>; /** * Gets events for aggregate */ getEvents(aggregateId: string, options?: GetEventsOptions): Promise<GetEventsResult>; /** * Saves aggregate snapshot */ saveSnapshot(snapshot: AggregateSnapshot): Promise<void>; /** * Gets the latest snapshot for aggregate */ getSnapshot(aggregateId: string): Promise<AggregateSnapshot | null>; /** * Deletes aggregate snapshot */ deleteSnapshot(aggregateId: string): Promise<void>; /** * Gets events by type */ getEventsByType(eventType: string, options?: GetEventsOptions): Promise<GetEventsResult>; /** * Gets events in time range */ getEventsByTimeRange(from: Date, to: Date, options?: GetEventsOptions): Promise<GetEventsResult>; /** * Deletes all events for aggregate */ deleteAggregate(aggregateId: string): Promise<void>; /** * Gets Event Store statistics */ getStats(): Promise<EventStoreStats>; /** * Clears all data (used for testing) */ clear(): Promise<void>; /** * Checks Event Store health */ healthCheck(): Promise<boolean>; /** * Creates indexes for query optimization */ private createIndexes; /** * Converts EventDocument to Event */ private documentToEvent; } export {}; //# sourceMappingURL=mongodb.event-store.d.ts.map