All files / interface/user/application user.service.port.ts

0% Statements 0/1
100% Branches 0/0
100% Functions 0/0
0% Lines 0/1

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');