TIL

24.04.18

아리단길아조씨 2024. 4. 19. 02:02
728x90

- 그룹 멤버 초대 비정상 작동
=> 초대 수락 시 해당 유저는 초대 받지 않았다고 뜨나 DB에 저장됨

- 스케쥴 멤버 등록 부분 수정 필요할 듯
=> 스케쥴을 생성한 사람이 스케쥴 멤버 테이블에 생성되고, 스케쥴 멤버를 등록하면 등록한 사람이 2번이 되게 해야할 듯
스멤 등록 {
  groups: { groupId: 1 },
  scheduleId: 1,
  userId: 1,
  email: 'abc2@naver.com',
  groupId: 1,
  scheduleMemberId: 1
}

users 테이블에 userId2번이 스케쥴 멤버 등록시 userId 2번으로 등록되는 상황 발생


- 스케쥴 생성: 정상 작동
=> 멤버 가드 롤에 모든 롤들이 생성할 수 있게 함(스케쥴은 아무나 생성할 수 있음)

- 스케쥴 전체 조회 500에러(해결)
=> 멤버 가드 롤에 모든 롤들이 생성할 수 있게 함(스케쥴은 아무나 조회 가능)
멤버가드 제외 후 시도해도 500에러 나옴(console은 잘 찍힘)
스케쥴 서비스의 getAllSchedule 메서드 문제일 것 같음

- 스케쥴 상세 조회: 정상 작동(유효성 검사 수정)
=> 멤버 가드 롤에 모든 롤들이 생성할 수 있게 함(스케쥴은 아무나 조회 가능)
이 유효성 검사가 문제임
allSchedule: Schedule[] 인데 배열에 0이 아니면, 값이 들어가있으면 에러를 던지게 해놨음(! 빼니까 잘돌아감 ㅇㅇ)
 if (!(allSchedule.length === 0)) {
   throw {
     status: HttpStatus.NOT_FOUND,
   };
  }

1번 그룹의 4번 스케쥴을 찾아야하는데 1번만 가져옴
수정 완료 => const schedule = await this.scheduleRepository.findOne({
      where: { groups: { groupId }, scheduleId },
    }); where절에 scheduleId로 지정해주니까 찾아옴

- 스케쥴 수정: 잘 돌아감 (retrun 수정)
=> @MemberRoles(MemberRole.Admin, MemberRole.Main) 스케쥴 수정은 어드민, 메인만 가능함 일반유저 삭제 불가능
1번 그룹 4번 스케쥴 수정을 User 롤을 가지고 있는 계정으로 수정이 가능한 사태 발생함

return 부분에 status 코드 던져주던거 그냥 지워버리고 수정하려는 schedule 자체를 반환해버림

- 스케쥴 수정: 정상 작동

멤버가드에서 userId는 가져오나 groupId를 못가져오는 상황
const groupId = requset.params.grouId로 url의 parm으로 정상적으로 가져옴

멤버스트릿지 requireRole에서 유저의 role을 못가져오는 상황
=> @MemberRoels 하나씩 찍어보려 하는데 MemberRole.User만 빨간줄 뜸 -> 커스텀 데코레이터 확인 작업 들어감 
const requiredRole = this.reflector.getAllAndOverride<MemberRole[]>(
      'memberRoles',
      [context.getClass(), context.getHandler()],
    );
이렇게 수정하니까 잘됨 ㅇㅇ

// Url의 groupId와 그룹 멤버 레포지토리에 있는 groupId가 다르면 접근 못하게함
    const group = await this.groupMemberRepository.findOne({
      where: { groupId: groupId },
    });

    console.log('멤버스트렛지 group', group);
    if (!group) {
      return false;
    }

김춘자가 만든 그룹 1
김춘자가 만든 스케쥴 1 
김춘자에게 초대 받은 김춘사 4 




그룹이 있는 지 확인
스케쥴 멤버 isGroup Groups {
  groupId: 1,
  title: '깁춘이가 수정중',
  content: '수정되면 망한거임',
  category: 'running',
  isPublic: true,
  createdAt: 2024-04-18T05:30:08.588Z,
  updatedAt: 2024-04-18T08:03:12.777Z
}

초대 하는 사람이 그룹 멤버인지 확인 (사고 => 그룹을 만든 김춘자가 등장해버림)
스케쥴 멤버 isGroupMember GroupMembers {
  groupMemberId: 1,
  role: 'Main',
  isVailed: true,
  userId: 1,
  groupId: 1,
  isInvited: true
}

스케쥴이 존재하는지 확인
스케쥴 멤버 isSchedule Schedules {
  scheduleId: 1,
  category: 'hiking',
  title: '비개발구역 1',
  content: '개발하면 괘씸죄로 200대 칠꺼임',
  scheduleDate: '2024-05-12',
  createdAt: 2024-04-18T05:30:26.495Z,
  updatedAt: 2024-04-18T05:57:03.551Z,
  groupId: 1,
  userId: 1
}

초대를 수락한 사람을 스케쥴 멤버에 초대한 사람을 저장함(사고 => userId가 4번인데 김춘자의 userId가 나와버림)
스케쥴 멤버 서비스 newSchedhuleMember {
  scheduleId: 1,
  groupId: 1,
  userId: 1,
  email: 'abc4@naver.com',
  scheduleMemberId: 8


스케쥴에 등록된 멤버 전체 조회 => 이미 가입된 스케쥴 멤버는 재가입이 불가능하게 하는 로직 필요

스케쥴에 멤버 등록 => 유저를 1개만 생성하고 없는 유저를 초대하면 유저가 존재하지 않는다고 떠야하는데 바로 해당하는 그룹이 없다고 나와버림
등록하려는 유저가 존재하는지 확인하는 검증 로직이 필요함
그룹을 검증하는 로직은 정상 작동, 그룹 생성 후 재시도를 하면 스케쥴이 있는지 없는 지 확인 로직 정상 작동

스케쥴멤버 부분에서 userId가 스케쥴을 생성한 userId로 등록이 되서 테스트를 진행할 수 없음...
생각해보니 바디 값으로 이메일을 받는데 이메일을 받아도 유효성 검사? 같은 거를 못하기 때문에 엔티티 수정과 이메일을 사용한 유효성 검사를 하는 방향으로 핸들을 틀어야할 듯 이따가 아침에 아침 회의 때 팀원들이랑 공유하고 상의해야겠음

'TIL' 카테고리의 다른 글

24.04.22  (0) 2024.04.23
24.04.19  (0) 2024.04.22
24.04.17  (1) 2024.04.18
24.04.16  (0) 2024.04.17
24.04.15  (0) 2024.04.16