UNPKG

@hiki9/rich-domain

Version:

Rich Domain is a library that provides a set of tools to help you build complex business logic in NodeJS using Domain Driven Design principles.

24 lines 1.35 kB
import { Pagination } from "../common/pagination"; import { PaginationCriteria } from "../common/pagination-criteria"; import { Aggregate as BaseAggregate } from "./aggregate"; export type PersistenceContext = unknown; export type WriteOptions<T = PersistenceContext> = { context?: T; }; export declare abstract class ReadRepository<Aggregate extends BaseAggregate<any>> { abstract find(criteria: PaginationCriteria): Promise<Pagination<Aggregate>>; abstract findById(id: string): Promise<Aggregate | null>; } export declare abstract class WriteRepository<Aggregate extends BaseAggregate<any>> { abstract create(entity: Aggregate, options?: WriteOptions): Promise<void>; abstract update(entity: Aggregate, options?: WriteOptions): Promise<void>; abstract delete(entity: Aggregate, options?: WriteOptions): Promise<void>; } export declare abstract class WriteAndRead<Aggregate extends BaseAggregate<any>> { abstract find(criteria: PaginationCriteria): Promise<Pagination<Aggregate>>; abstract findById(id: string): Promise<Aggregate | null>; abstract create(entity: Aggregate, options?: WriteOptions): Promise<void>; abstract update(entity: Aggregate, options?: WriteOptions): Promise<void>; abstract delete(entity: Aggregate, options?: WriteOptions): Promise<void>; } //# sourceMappingURL=repository.d.ts.map