@ournet/domain
Version:
Ournet domain
23 lines (22 loc) • 1.24 kB
TypeScript
import { BaseEntity, BaseEntityId } from "./entities";
import { Repository, RepositoryUpdateData, RepositoryAccessOptions } from "./repository";
import { EntityValidator } from "./entity-validator";
export declare abstract class BaseRepository<T extends BaseEntity> implements Repository<T> {
protected validator: EntityValidator<T>;
constructor(validator: EntityValidator<T>);
create(data: T): Promise<T>;
put(data: T): Promise<T>;
update(data: RepositoryUpdateData<T>): Promise<T>;
protected beforeCreate(data: T): T;
protected beforeUpdate(data: RepositoryUpdateData<T>): RepositoryUpdateData<T>;
protected beforePut(data: T): T;
abstract innerCreate(data: T): Promise<T>;
abstract innerUpdate(data: RepositoryUpdateData<T>): Promise<T>;
innerPut(_data: T): Promise<T>;
abstract delete(id: BaseEntityId): Promise<boolean>;
abstract getById(id: BaseEntityId, options?: RepositoryAccessOptions<T>): Promise<T | null>;
abstract getByIds(ids: BaseEntityId[], options?: RepositoryAccessOptions<T>): Promise<T[]>;
abstract exists(id: BaseEntityId): Promise<boolean>;
abstract deleteStorage(): Promise<void>;
abstract createStorage(): Promise<void>;
}