Skip to content

Commit

Permalink
refactor: 응급실 데이터 중복 저장 방지
Browse files Browse the repository at this point in the history
  • Loading branch information
LJW22222 committed Oct 2, 2024
1 parent 83027a9 commit 6a8ad03
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -1,13 +1,6 @@
package com.nbe2.domain.emergencyroom;

import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import jakarta.persistence.Embedded;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.persistence.*;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
Expand All @@ -20,7 +13,11 @@
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name = "emergency_rooms")
@Table(
name = "emergency_rooms",
uniqueConstraints = {
@UniqueConstraint(columnNames = {"hospitalName", "longitude", "latitude"})
})
public class EmergencyRoom extends BaseTimeEntity {

@Id
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package com.nbe2.domain.emergencyroom;

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

import org.springframework.stereotype.Component;

import lombok.RequiredArgsConstructor;
Expand All @@ -11,10 +15,40 @@ public class EmergencyRoomInitializer {
private final EmergencyRoomClient emergencyRoomClient;
private final EmergencyRoomRepository emergencyRoomRepository;

// public void init() {
// emergencyRoomRepository.saveAll(
// emergencyRoomClient.getEmergencyRoomInfoData().stream()
// .map(EmergencyRoomInfo::toEmergencyRoom)
// .toList());
// }
public void init() {
emergencyRoomRepository.saveAll(
emergencyRoomClient.getEmergencyRoomInfoData().stream()
.map(EmergencyRoomInfo::toEmergencyRoom)
.toList());
Set<String> uniqueKeySet = getUniqueKeySet();
List<EmergencyRoom> emergencyRooms = removeDuplicatesEmergencyData(uniqueKeySet);
if (!emergencyRooms.isEmpty()) emergencyRoomRepository.saveAll(emergencyRooms);
}

private Set<String> getUniqueKeySet() {
return emergencyRoomRepository.findAll().stream()
.map(
rooms ->
rooms.getHospitalName()
+ rooms.getLocation().getLongitude()
+ rooms.getLocation().getLatitude())
.collect(Collectors.toSet());
}

private List<EmergencyRoom> removeDuplicatesEmergencyData(Set<String> uniqueKeySet) {
return emergencyRoomClient.getEmergencyRoomInfoData().stream()
.map(EmergencyRoomInfo::toEmergencyRoom)
.filter(
room -> {
String s =
room.getHospitalName()
+ room.getLocation().getLongitude()
+ room.getLocation().getLatitude();
boolean contains = uniqueKeySet.contains(s);
return !contains;
})
.toList();
}
}

0 comments on commit 6a8ad03

Please sign in to comment.