Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import { IUserAggregate } from '../domain';
import { IUserRepository } from '../infrastructure';
export namespace IUserService {
export type UpdateData = IUserRepository.UpdateData;
}
export interface IUserService {
/**
* profile에 대응하는 데이터를 반환
* soft-delete된 상태면 복구
* 존재하지 않으면 생성
* @param profile 사용자 프로필 정보
* @returns 애그리거트 상태 정보
*/
readonly findOne: (
profile: IUserAggregate.Profile,
) => Promise<IUserAggregate.State>;
/**
* 인자로 전달받은 애그리거트 상태 정보를 영속화한다.
* @param state 수정된 애그리거트 상태 정보
* @returns 수정한 애그리거트 상태 정보
*/
readonly save: (state: IUserAggregate.State) => Promise<IUserAggregate.State>;
/**
* filter에 해당하는 애그리거트 앤티티(들)에 data 정보 적용
* @param filter 특정 앤티티를 찾기 위한 기준
* @param data 수정한 정보
*/
readonly update: (
filter: Pick<IUserAggregate.State, 'id'>,
data: IUserService.UpdateData,
) => Promise<void>;
/**
* user soft-delete method
* @param filter
* @returns
*/
readonly remove: (filter: Pick<IUserAggregate.State, 'id'>) => Promise<void>;
}
export const IUserService = Symbol('UserService');
|