
sql_query와 natural_question 중에서 특정 컬럼이나 여러 개의 컬럼을 한 번에 업데이트하는 요청 이벤트
이 로직에서 특정 한명의 유저가 여러개의 컬럼과 라벨을 동시에 변경하여 업데이트 요청을 한 경우 / 가장 최근에 단 한 개의 컬럼에 대해 요청을 한 경우(두 개의 이벤트) → 원하는 업데이트 내용(이벤트) 만 채택할 수 밖에 없는 로직
natural_question 업데이트 요청이 APPROVE 된 이벤트이므로 위의 이미지 예시로 sql_query 컬럼의 QUERY_A 값(b 샘플)이 최신값이더라도 적용할 수 없음
→ 각 컬럼별 최신 데이터를 취합을 할 수 없음
REQUESTED_UPDATE 상태 = 모든 컬럼의 업데이트 데이터를 모두 조회해서 확인해야하는 낭비
d 샘플을 최종 APPROVE 하고 싶어도, 만약 그 전에 USER A의 natural_question 업데이트 요청이 10개가 있었다면, 모두 조회해 와서 각 컬럼 별 최신 값을 각각 찾아야하는 로직이 필요함// Controller
@GetMapping("api/datasets/requested")
public ResponseEntity<DataResponseDto> getRequestedSamples() {
DataResponseDto responseDto = datasetService.getRequestedSamples();
return new ResponseEntity<>(responseDto, HttpStatus.OK);
}
...
// Service
public DataResponseDto getRequestedSamples() {
List<SampleResponseDto> responseDtoList = sampleRepository.findRequestedSample().stream()
.map(this::toSampleResponseDto)
.collect(Collectors.toList());
return new DataResponseDto(responseDtoList);
}
...
// Repository
@Query("SELECT s FROM Sample s " +
"WHERE s.status IN ('REQUESTED_UPDATE', 'REQUESTED_DELETE')" +
"ORDER BY s.versionId ASC")
List<Sample> findRequestedSample();
...
api/datasets/requested 해당 엔드포인트로 요청을 할 시에 단순하게 샘플 아이디 별로 'REQUESTED_UPDATE', 'REQUESTED_DELETE' 상태인 샘플만 조회@PatchMapping("api/datasets/{id}/approve")
public ResponseEntity<SampleApproveResponseDto> approveSample(@Valid @PathVariable String id) throws JsonProcessingException {
SampleApproveResponseDto responseDto = datasetService.approveSample(id);
return new ResponseEntity<>(responseDto, HttpStatus.OK);
}
UPDATED**로 바꾸는 로직
sql_query natural_question 값 또는 샘플에 할당된 라벨 Updated Request를 진행할 경우 → 각 컬럼 별(Attribution 별) 이벤트를 분리해서 저장
sql_query natural_question 내용을 동시에 업데이트 할 시, b c 로 이벤트가 나눠서 저장APPROVED 상태로, 그리고 최신 값들만 반영하여 UPDATED 값으로 저장