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의 정상 작동을 검증하기 위한 테스트를 수행하였습니다.
'Storify' 카테고리의 다른 글
STORIFY (0129) - 예외 처리 적용, GlobalExceptionFilter (0) | 2024.01.29 |
---|---|
STORIFY (0127) - 좋아요~ 추가 (0) | 2024.01.27 |
STORIFY (0125) - ObjectId (0) | 2024.01.26 |
STORIFY (0124) - 사용자 스토리 (0) | 2024.01.25 |
STORIFY (0123) - 단일 책임 원칙 (0) | 2024.01.24 |