UNPKG

@ournet/domain

Version:
21 lines (20 loc) 817 B
import { BaseEntity, BaseEntityId } from "./entities"; export interface RepositoryAccessOptions<T extends BaseEntity> { fields?: (keyof T)[]; } export interface RepositoryUpdateData<T extends BaseEntity> { id: BaseEntityId; set?: Partial<T>; delete?: (keyof T)[]; } export interface Repository<T extends BaseEntity> { delete(id: BaseEntityId): Promise<boolean>; create(data: T): Promise<T>; put(data: T): Promise<T>; update(data: RepositoryUpdateData<T>): Promise<T>; getById(id: BaseEntityId, options?: RepositoryAccessOptions<T>): Promise<T | null>; getByIds(ids: BaseEntityId[], options?: RepositoryAccessOptions<T>): Promise<T[]>; exists(id: BaseEntityId): Promise<boolean>; deleteStorage(): Promise<void>; createStorage(): Promise<void>; }