@cashfarm/plow
Version:
Library for validating input data and parameters
14 lines (13 loc) • 741 B
TypeScript
import { Guid, ConcreteType } from '@cashfarm/lang';
import { IDomainEvent, Identity, IRepository } from '../domain';
import { IEventStore } from './iEventStore';
import { IEventBus } from './iEventBus';
import { ESAggregateRoot } from './esAggregateRoot';
export declare abstract class ESRepository<TAggregate extends ESAggregateRoot<TId>, TId extends Identity<Guid> | Guid> implements IRepository<TAggregate, TId> {
protected storage: IEventStore;
protected aggtClass: ConcreteType<TAggregate>;
protected eventBus: IEventBus;
constructor(storage: IEventStore, aggtClass: ConcreteType<TAggregate>, eventBus?: IEventBus);
save(aggregate: TAggregate): Promise<IDomainEvent[]>;
getById(id: TId): Promise<TAggregate>;
}