@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
TypeScript
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