@ournet/domain
Version:
Ournet domain
21 lines (20 loc) • 817 B
TypeScript
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>;
}