→ 라고 생각했으나 기존 이용중인 mongoDB를 통해 user의 fcm 토큰을 관리하고 삭제하는것도 가능하다고 판단하여 MongoDB 처리 방식으로 변경
@Document(collection = "fcm_token")
@Getter
@NoArgsConstructor
public class FcmToken {
@Id
private ObjectId id;
private String uuid;
private String fcmToken;
@Builder
public FcmToken(
ObjectId id,
String uuid,
String fcmToken
) {
this.id = id;
this.uuid = uuid;
this.fcmToken = fcmToken;
}
}
@Override
public void createFcmToken(FcmTokenRequestDto fcmTokenRequestDto) {
// MongoDB에서 UUID로 기존 문서 조회
FcmToken fcmToken = fcmTokenRepository.findByUuid(fcmTokenRequestDto.getUuid());
if (fcmToken != null) {
// 기존 문서 수정
List<String> tokenList = fcmToken.getFcmTokenList();
if (!tokenList.contains(fcmTokenRequestDto.getFcmToken())) {
tokenList.add(fcmTokenRequestDto.getFcmToken());
}
} else {
// 새로운 문서 생성
fcmToken = FcmToken.builder()
.uuid(fcmTokenRequestDto.getUuid())
.fcmTokenList(new ArrayList<>(List.of(fcmTokenRequestDto.getFcmToken())))
.build();
}
// 저장 (MongoDB가 ID 유무에 따라 새로 생성하거나 업데이트함)
fcmTokenRepository.save(fcmToken);
}