Skip to content

Commit

Permalink
feat: 여행 정보 삭제 기능 추가
Browse files Browse the repository at this point in the history
feat: 여행 정보 삭제 기능 추가
  • Loading branch information
hellomatia authored May 22, 2024
2 parents 9f09da4 + 9812e65 commit 7bbd20d
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,9 @@ public ApiResult<TravelDetailResult> travelDetailResult(@PathVariable Long trave
public ApiResult<TravelPhotoListResult> travelDetailResultPhoto(@PathVariable Long travelDetailId) {
return success(travelService.findTravelPhotoList(travelDetailId));
}

@DeleteMapping("/{travelId}")
public ApiResult<Boolean> deleteTravel(@PathVariable Long travelId) {
return success(travelService.deleteTravel(travelId));
}
}
9 changes: 9 additions & 0 deletions src/main/java/com/mlog/travel/mapper/TravelMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,13 @@ public interface TravelMapper {
@Insert("insert into travel_photo (photo_url, created_at, travel_detail_id) " +
"values (#{photoUrl}, now(), #{travelDetailId})")
int saveTravelPhoto(TravelPhoto travelDetailPhoto);

@Delete("delete from travel where id = #{travelId}")
int deleteTravelByTravelId(Long travelId);

@Delete("delete from travel_detail where travel_id = #{travelId}")
int deleteTravelDetailByTravelId(Long travelId);

@Delete("delete from travel_photo where travel_detail_id = #{travelDetailId}")
int deleteTravelDetailPhotoByTravelDetailId(Long travelDetailId);
}
3 changes: 2 additions & 1 deletion src/main/java/com/mlog/travel/service/TravelService.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@
import com.mlog.travel.dto.TravelPhotoListResult;

public interface TravelService {
boolean saveTravel(Long id, SaveTravelRequest saveTravelRequest);
Boolean saveTravel(Long id, SaveTravelRequest saveTravelRequest);
TravelListResult findAllTravel(Long userId);
TravelDetailResult findTravelDetail(Long id);
TravelPhotoListResult findTravelPhotoList(Long id);
Boolean deleteTravel(Long travelId);
}
19 changes: 17 additions & 2 deletions src/main/java/com/mlog/travel/service/TravelServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ public class TravelServiceImpl implements TravelService {
private final TravelMapper travelMapper;
private final S3Service s3Service;

public boolean saveTravel(Long userId, SaveTravelRequest saveTravelRequest) {
@Override
public Boolean saveTravel(Long userId, SaveTravelRequest saveTravelRequest) {
Travel travel = Travel.of(
saveTravelRequest,
s3Service.uploadBase64Image(saveTravelRequest.getImage()),
Expand All @@ -42,21 +43,35 @@ public boolean saveTravel(Long userId, SaveTravelRequest saveTravelRequest) {
.build()
));
});
return true;
return Boolean.TRUE;
}

@Override
public TravelListResult findAllTravel(Long userId) {
return TravelListResult.of(travelMapper.findTravelByUserId(userId));
}

@Override
public TravelDetailResult findTravelDetail(Long id) {
return TravelDetailResult
.of(travelMapper.findTravelByTravelId(id), travelMapper.findTravelDetailByTravelId(id));
}

@Override
public TravelPhotoListResult findTravelPhotoList(Long id) {
return TravelPhotoListResult
.of(travelMapper.findTravelDetailPhotoByTravelDetailId(id));

}

@Override
public Boolean deleteTravel(Long travelId) {
travelMapper.deleteTravelByTravelId(travelId);
travelMapper.findTravelDetailByTravelId(travelId)
.forEach(travelDetail ->
travelMapper.deleteTravelDetailPhotoByTravelDetailId(travelDetail.getId())
);
travelMapper.deleteTravelDetailByTravelId(travelId);
return Boolean.TRUE;
}
}
21 changes: 19 additions & 2 deletions src/test/java/com/mlog/travel/controller/TravelControllerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration;
import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
Expand Down Expand Up @@ -167,4 +166,22 @@ void setUp(WebApplicationContext context,
.andDo(document("travel/photos"))
;
}

@Test
@Transactional
public void 사용자_여행정보_지우기() throws Exception {
ResultActions result = mockMvc.perform(delete("/travel/5")
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
);
result.andDo(print())
.andExpect(status().isOk())
.andExpect(handler().handlerType(TravelController.class))
.andExpect(handler().methodName("deleteTravel"))
.andExpect(jsonPath("$.success", is(true)))
.andExpect(jsonPath("$.response", is(true)))
.andExpect(jsonPath("$.error").isEmpty())
.andDo(document("travel/delete"))
;
}
}

0 comments on commit 7bbd20d

Please sign in to comment.