UNPKG

nestjs-event-sourcing-lib

Version:

A comprehensive Event Sourcing and CQRS library for NestJS applications

99 lines 3.33 kB
import { BaseEventStore, EventStoreConnectionOptions, SaveEventsResult, GetEventsOptions, GetEventsResult, AggregateSnapshot, EventStoreStats } from '../core/event-store.interface'; import { Event } from '../core/event'; interface PrismaClient { $connect(): Promise<void>; $disconnect(): Promise<void>; $transaction<R>(fn: (prisma: PrismaClient) => Promise<R>): Promise<R>; $queryRaw<T = any>(query: TemplateStringsArray | string, ...values: any[]): Promise<T>; event: { findMany(args?: any): Promise<any[]>; findFirst(args?: any): Promise<any>; findUnique(args?: any): Promise<any>; create(args: any): Promise<any>; createMany(args: any): Promise<any>; update(args: any): Promise<any>; delete(args: any): Promise<any>; deleteMany(args?: any): Promise<any>; count(args?: any): Promise<number>; aggregate(args?: any): Promise<any>; }; eventSnapshot: { findMany(args?: any): Promise<any[]>; findFirst(args?: any): Promise<any>; findUnique(args?: any): Promise<any>; create(args: any): Promise<any>; createMany(args: any): Promise<any>; update(args: any): Promise<any>; upsert(args: any): Promise<any>; delete(args: any): Promise<any>; deleteMany(args?: any): Promise<any>; count(args?: any): Promise<number>; }; } /** * Prisma Event Store implementation */ export declare class PrismaEventStore extends BaseEventStore { private readonly customPrismaClient?; private readonly logger; private prisma?; constructor(options: EventStoreConnectionOptions, customPrismaClient?: PrismaClient | undefined); /** * Connects to database via Prisma */ connect(): Promise<void>; /** * Disconnects from database */ 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>; /** * Converts database record to Event */ private recordToEvent; } export {}; //# sourceMappingURL=prisma.event-store.d.ts.map