[TIL]230717 단방향 쪽지보내기(?)

CountryGirl·2023년 7월 17일
0

TIL

목록 보기
26/80

나는 마니또 프로젝트에서 쪽지를 맡았다.

내가 구현해야할 것은

1. 나의 마니또에게 쪽지보내기
2. 나의 마니또에게 보냈던 쪽지들을 최근 20개만 조회하기
3. 마니또들에게 받았던 쪽지들을 최근 20개만 조회하기

✅ Message Entity

Message Entity 필드이다.
User Entityid에 N:1로 외래키를 걸었고,
TimeStamp를 상속받아 쪽지가 쓰여진 시간도 저장했다.

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "message_id")
private Long id;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "messageGiver_id")
private User messageGiver;				// message를 주는 사람 == 로그인 된 사용자

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "messageReceiver_id")
private User messageReceiver;			// message를 받는 사람 == 나의 마니또

@Column(nullable = false, length = 500)
private String content;

✅ Message Send (POST)

jwtUtil.isTokenValid(token);
String userId = jwtUtil.getUsernameFromToken(token);

로그인이 되면 생성되는 token에서 userId를 가져옵니다.

가져온 userIduserRepository에서 해당 User를 찾아 오늘의 마니또가 누구인지 확인합니다.

Manito myManito = manitoRepository.findManitoByGiverNameAndToday(
	loginUser.getUserId(), 
	today
).orElseThrow(
		() -> new IllegalArgumentException(NOT_FOUND_TODAYMANITO));

만약 해당 User를 가져왔으면 쪽지를 보내준다.

사실 보낸다는 의미는 맞지 않는 것 같다.
message table에 저장이 되면 해당 마니또에게만 GET으로 확인할 수 있도록 구현하였기 때문이다...

Message message = new Message(messageRequestDto, loginUser, myManito.getManitoReceiver());
messageRepository.save(message);

이렇게 "쪽지를 보낸다" 라는 것을 구현하였다(?)

✅ Message SendBox (GET)

보낸 쪽지함도 마찬가지로 로그인한 사용자의 token에서 userId를 가져와서 해당 User를 가져온다.

return messageRepository.findByMessageGiverOrderByCreatedAtDesc(loginUser)
	.stream().limit(20).map(SendMessageResponseDto::new).toList();

20개만 가져올 수 있도록 .limit(20)을 해주었다.

✅ Message ReceiveBox (GET)

받은 쪽지함도 로그인한 사용자의 token에서 userId를 가져와 User를 가져온다.

return  messageRepository.findByMessageReceiverOrderByCreatedAtDesc(loginUser)
	.stream().limit(20).map(ReceiveMessageResponseDto::new).toList();

20개만 가져올 수 있도록 .limit(20)을 해주었다.


이렇게 해서 쪽지에 대한 API를 구현하였다.

profile
💻🌾시골소녀의 엉망징창 개발 성장일지🌾💻 (2023.05.23 ~)

0개의 댓글