@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.
31 lines • 1.92 kB
TypeScript
import { BaseAdapter } from '../core/application/adapter';
import { RepositoryImplementation } from '../core/application/repository';
import { Pagination } from '../core/common/pagination';
import { PaginationCriteria } from '../core/common/pagination-criteria';
import { Aggregate } from '../core/domain/aggregate';
import { WriteOptions } from '../core/domain/repository';
import { UnitOfWorkService } from './unit-of-work.service';
type IPrismaService = {
$disconnect: () => Promise<any>;
};
export declare abstract class PrismaRepository<PrismaService extends IPrismaService, Domain extends Aggregate<any>, Persistence> extends RepositoryImplementation<any> {
protected readonly prisma: PrismaService;
protected readonly adapterToDomain: BaseAdapter<Persistence, Domain>;
protected readonly adapterToPersistence: BaseAdapter<Domain, any>;
protected readonly unitOfWorkService: UnitOfWorkService;
constructor(prisma: PrismaService, adapterToDomain: BaseAdapter<Persistence, Domain>, adapterToPersistence: BaseAdapter<Domain, any>, unitOfWorkService: UnitOfWorkService);
protected abstract findIncludes: any;
protected abstract uniqueIncludes: any;
protected abstract generateSearchQuery(search: string): any;
protected getContext(options?: WriteOptions): PrismaService;
protected generateFindQuery(criteria: PaginationCriteria): any;
find(criteria: PaginationCriteria): Promise<Pagination<Domain>>;
findById(id: string): Promise<Domain | null>;
create(entity: Domain, options?: WriteOptions<unknown>): Promise<void>;
update(entity: Domain, options?: WriteOptions<unknown>): Promise<void>;
delete(entity: Domain, options?: WriteOptions<unknown>): Promise<void>;
forceCloseConnection(): Promise<void>;
}
export declare function parseQueryWithDots(field: string, verb: string, value: any): {};
export {};
//# sourceMappingURL=prisma.repository.d.ts.map