Skip to content

Commit

Permalink
Merge pull request #26 from urdego/Feat(#25)
Browse files Browse the repository at this point in the history
Feat(#25): 컨텐츠 수정 api
  • Loading branch information
j-ra1n authored Feb 6, 2025
2 parents f594a5f + 542fc81 commit 5f70516
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import io.urdego.urdego_content_service.api.controller.dto.request.ContentMultiSaveRequest;
import io.urdego.urdego_content_service.api.controller.dto.request.ContentSaveRequest;
import io.urdego.urdego_content_service.api.controller.dto.request.ContentUpdateRequest;
import io.urdego.urdego_content_service.api.controller.dto.response.UserContentListAndCursorIdxResponse;
import io.urdego.urdego_content_service.domain.service.ContentService;
import jakarta.validation.constraints.Min;
Expand Down Expand Up @@ -51,6 +52,19 @@ public ResponseEntity<Void> saveContentMulti(@ModelAttribute ContentMultiSaveReq
return ResponseEntity.ok().build();
}

// 컨텐츠 수정
@Tag(name = "컨텐츠 API")
@Operation(summary = "컨텐츠 수정", description = "contentId로 컨텐츠 개별 수정")
@PatchMapping(value = "{userId}/content/{contentId}")
public ResponseEntity<Void> updateContent(@PathVariable Long userId,
@PathVariable Long contentId,
@RequestBody ContentUpdateRequest request) {


contentService.updateContent(userId, contentId, request);
return ResponseEntity.ok().build();
}


// 컨텐츠 삭제
@Tag(name = "컨텐츠 API")
Expand All @@ -59,7 +73,7 @@ public ResponseEntity<Void> saveContentMulti(@ModelAttribute ContentMultiSaveReq
public ResponseEntity<Void> deleteContent(@PathVariable Long userId,
@PathVariable Long contentId) {

contentService.deleteContent(contentId);
contentService.deleteContent(userId, contentId);
return ResponseEntity.ok().build();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package io.urdego.urdego_content_service.api.controller.dto.request;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

@Getter
@AllArgsConstructor
@Builder
public class ContentUpdateRequest {

private String contentName;

private String address;

private Double latitude;

private Double longitude;

private String hint;
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public enum ExceptionMessage {
DIRECTORY_CREATION_FAILED("상위 폴더 생성 중 예외가 발생했습니다."),
CONTENT_NOT_ALLOWED("컨텐츠에 유해성이 감지되어 저장에 실패했습니다."),
CONTENT_ANALYSIS_FAILED("컨텐츠 분석에 실패했습니다."),
CONTENT_UPDATE_FAILED("컨텐츠 수정에 실패했습니다."),

// Tensorflow
GRAPH_LOAD_FAILED("GraphDef 파일을 로드하는 데 실패했습니다"),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.urdego.urdego_content_service.domain.entity;

import io.urdego.urdego_content_service.api.controller.dto.request.ContentUpdateRequest;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
Expand Down Expand Up @@ -52,4 +53,13 @@ public Content(Long userId, String url, String contentName, String address, Doub
this.hint = hint;
this.fileName = fileName;
}

// 컨텐츠 수정
public void updateContent(ContentUpdateRequest request) {
this.contentName = request.getContentName();
this.address = request.getAddress();
this.latitude = request.getLatitude();
this.longitude = request.getLongitude();
this.hint = request.getHint();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import io.urdego.urdego_content_service.api.controller.dto.request.ContentMultiSaveRequest;
import io.urdego.urdego_content_service.api.controller.dto.request.ContentSaveRequest;
import io.urdego.urdego_content_service.api.controller.dto.request.ContentUpdateRequest;
import io.urdego.urdego_content_service.api.controller.dto.response.ContentResponse;
import io.urdego.urdego_content_service.api.controller.dto.response.UserContentListAndCursorIdxResponse;

Expand All @@ -15,8 +16,11 @@ public interface ContentService {
// 컨텐츠 다중 저장
void saveMultiContent(Long userId, ContentMultiSaveRequest request);

// 컨텐츠 수정
void updateContent(Long userId, Long contentId, ContentUpdateRequest request);

// 컨텐츠 삭제
void deleteContent(Long contentId);
void deleteContent(Long userId, Long contentId);

// 컨텐츠 조회
UserContentListAndCursorIdxResponse getUserContents(Long userId, Long cursorIdx, Long limit);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import io.urdego.urdego_content_service.api.controller.dto.request.ContentMultiSaveRequest;
import io.urdego.urdego_content_service.api.controller.dto.request.ContentSaveRequest;
import io.urdego.urdego_content_service.api.controller.dto.request.ContentUpdateRequest;
import io.urdego.urdego_content_service.api.controller.dto.response.ContentResponse;
import io.urdego.urdego_content_service.api.controller.dto.response.UserContentListAndCursorIdxResponse;
import io.urdego.urdego_content_service.common.exception.ExceptionMessage;
Expand All @@ -15,7 +16,10 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@Slf4j
Expand Down Expand Up @@ -81,14 +85,31 @@ public void saveMultiContent(Long userId, ContentMultiSaveRequest request) {
}
}

// 컨텐츠 수정
@Override
@Transactional
public void updateContent(Long userId, Long contentId, ContentUpdateRequest request) {

Content content = findUserContentByIdOrException(contentId);

if (!content.getUserId().equals(userId)) {
throw new UserContentException(ExceptionMessage.CONTENT_UPDATE_FAILED);
}
content.updateContent(request);
}


// 컨텐츠 삭제
@Override
@Transactional
public void deleteContent(Long contentId) {
public void deleteContent(Long userId, Long contentId) {

Content content = findUserContentByIdOrException(contentId);

if (!content.getUserId().equals(userId)) {
throw new UserContentException(ExceptionMessage.CONTENT_DELETE_FAILED);
}

try {
// 파일 삭제
ContentCommander.deleteContent(content.getUserId(), content.getFileName());
Expand Down

0 comments on commit 5f70516

Please sign in to comment.