본문 바로가기
Storify

STORIFY (0126) - 친구 요청 추가

by Peter.JH 2024. 1. 27.
728x90
반응형

friendReq API작성

사용자 스토리:

- 나는 로그인 후 친구 A에게 친구신청을 했다. ( friendReq/, Post, createFriendReq )

- 내가 친구신청한 목록을 볼수있다. 나에게 친구신청온 목록을 볼수있다.  ( friendReq/{id}, Get, findByUserId )

- 나는 다른 친구의 친구 신청을 수락, 거절 할수있다. ( firendReq/{id}, Patch, updateFriendReq ) -> sender, receiver 친구 DB업데이트

- 나는 친구 신청한것을 취소할수있다. ( firendReq/{id}, Patch, updateFriendReq ) -> sender, receiver 친구 DB업데이트

 

friendReq.schema

import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Types } from 'mongoose';

export type FriendReqDocument = FriendReq & Document;

@Schema()
export class FriendReq {
  @Prop({ type: Types.ObjectId, ref: 'User', required: true })
  sender: Types.ObjectId;

  @Prop({ type: Types.ObjectId, ref: 'User', required: true })
  receiver: Types.ObjectId;

  @Prop({
    type: Number,
    // 0: 대기 상태
    // 1: 친구 신청 취소
    // 2: 거절
    // 3: 승낙
    enum: [0, 1, 2, 3],
    default: 0,
  })
  status: number;
}

export const FriendReqSchema = SchemaFactory.createForClass(FriendReq);

 

createFriendReq
이미 진행 중인 친구 요청이 있는지 확인합니다. 이는 sender와 receiver가 현재 요청과 동일하며 status가 0(대기 중)인 요청이 있는지 확인, 동일한 sender와 receiver를 가진 요청 중 status가 2(거절됨)인 요청이 5개 이상인지 확인. 이는 특정 사용자가 동일한 사용자에게 친구 요청을 5회 이상 거절당했는지 확인한다.

service단에서 처리하려고 했으나, repository에서 수행하면 DB확인작업이 더 편리하기에 repository 단에서 처리하도록 했다. 

 

findByUserId
userId를 통해 신청보낸목록, 신청온 목록 확인가능

 

updateFriendReq

친구 신청 취소, 거절, 승낙시 업데이트

테스트1:  j1 -> j2에게 친구요청 / 성공해야함 ●

테스트2: j2 -> j3에게 친구요청 / 성공해야함 ●

테스트3: j2 -> j1에게 친구요청 / 실패해야함 ●

테스트4: j3 -> j1에게 친구요청 / 성공해야함 ●

테스트5:  j1 -> j2에게 친구요청 취소 / 성공해야함 ●

테스트6:  j3 -> j2에게 친구요청 받은 것 거절 / 성공해야함 ●

테스트7:  j1 -> j3에게 친구요청 받은것 승낙 / 성공해야함 ●

 

 

작업정리

 

1. 친구 요청 API 작성:

- 사용자 간의 친구 요청을 관리하기 위한 API를 작성하였습니다. 친구 신청, 신청 목록 조회, 신청 수락/거절/취소 등의 기능을 수행할 수 있습니다.

 

2. 친구 요청 스키마 작성:

- 친구 요청에 대한 정보를 저장하기 위한 MongoDB 스키마를 작성하였습니다. sender, receiver, status 등의 필드를 포함하고 있습니다.

 

3. 친구 요청 생성 함수 수정:

- 이미 진행 중인 친구 요청이 있는지, 특정 사용자가 동일한 사용자에게 친구 요청을 5회 이상 거절당했는지 등을 확인하는 로직을 추가하였습니다. 이를 통해 불필요한 친구 요청을 방지하고, 사용자 경험을 향상시킬 수 있습니다.

 

4. 친구 요청 조회 함수 작성:

- 특정 사용자가 보낸 친구 요청과 받은 친구 요청을 조회할 수 있는 기능을 추가하였습니다.

 

5. 친구 요청 상태 변경 함수 작성:

- 친구 요청의 상태를 변경하는 기능을 추가하였습니다. 사용자는 친구 요청을 취소하거나, 받은 친구 요청을 수락하거나 거절할 수 있습니다.

 

6. 친구 요청 API 테스트:

- 작성한 친구 요청 API의 정상 작동을 검증하기 위한 테스트를 수행하였습니다. 

728x90
반응형