diff --git a/photo-service/src/main/java/kr/mafoo/photo/controller/SumoneController.java b/photo-service/src/main/java/kr/mafoo/photo/controller/SumoneController.java new file mode 100644 index 00000000..ebdb6edf --- /dev/null +++ b/photo-service/src/main/java/kr/mafoo/photo/controller/SumoneController.java @@ -0,0 +1,68 @@ +package kr.mafoo.photo.controller; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import kr.mafoo.photo.annotation.RequestMemberId; +import kr.mafoo.photo.controller.dto.request.ObjectStoragePreSignedUrlRequest; +import kr.mafoo.photo.controller.dto.response.AlbumResponse; +import kr.mafoo.photo.controller.dto.response.PhotoResponse; +import kr.mafoo.photo.controller.dto.response.PreSignedUrlResponse; +import kr.mafoo.photo.controller.dto.response.SumoneBulkUrlRequest; +import kr.mafoo.photo.controller.dto.response.SumoneSummaryResponse; +import kr.mafoo.photo.domain.enums.AlbumType; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +@RequiredArgsConstructor +@Validated +@Tag(name = "썸원 이벤트용 API") +@RestController +@RequestMapping("/v1/sumone") +public class SumoneController { + @Operation(summary = "통계 api") + @GetMapping("/summary") + public SumoneSummaryResponse getSummary() { + return new SumoneSummaryResponse(1024); + } + + @Operation(summary = "앨범 생성 api") + @PostMapping("/albums") + public Mono createAlbum() { + return Mono.just(new AlbumResponse("test_album_id", "야뿌들", AlbumType.SUMONE, "6")); + } + + @Operation(summary = "앨범에 이미지 url 추가") + @PostMapping("/albums/{albumId}/photos") + public Flux addPhotos( + @PathVariable String albumId, + @RequestBody SumoneBulkUrlRequest request + ) { + return Flux.empty(); + } + + @Operation(summary = "앨범에 이미지 조회") + @GetMapping("/albums/{albumId}/photos") + public Flux getPhotos( + @PathVariable String albumId + ) { + return Flux.empty(); + } + + @Operation(summary = "Pre-signed Url 요청", description = "Pre-signed Url 목록을 발급합니다.") + @PostMapping("/albums/{albumId}/presigned-urls") + Mono createPreSignedUrls( + @PathVariable String albumId, + @RequestBody + ObjectStoragePreSignedUrlRequest request + ) { + return Mono.empty(); + } +} diff --git a/photo-service/src/main/java/kr/mafoo/photo/controller/dto/response/SumoneBulkUrlRequest.java b/photo-service/src/main/java/kr/mafoo/photo/controller/dto/response/SumoneBulkUrlRequest.java new file mode 100644 index 00000000..f65753e5 --- /dev/null +++ b/photo-service/src/main/java/kr/mafoo/photo/controller/dto/response/SumoneBulkUrlRequest.java @@ -0,0 +1,15 @@ +package kr.mafoo.photo.controller.dto.response; + +import io.swagger.v3.oas.annotations.media.ArraySchema; +import io.swagger.v3.oas.annotations.media.Schema; + +@Schema(description = "파일(url) 사진 n건 업로드 요청") +public record SumoneBulkUrlRequest( + @ArraySchema( + schema = @Schema(description = "파일 URL 목록"), + arraySchema = @Schema(example = "[\"file_url_1\", \"file_url_2\", \"file_url_3\"]") + ) + String[] fileUrls +) { + +} diff --git a/photo-service/src/main/java/kr/mafoo/photo/controller/dto/response/SumoneSummaryResponse.java b/photo-service/src/main/java/kr/mafoo/photo/controller/dto/response/SumoneSummaryResponse.java new file mode 100644 index 00000000..af559f33 --- /dev/null +++ b/photo-service/src/main/java/kr/mafoo/photo/controller/dto/response/SumoneSummaryResponse.java @@ -0,0 +1,11 @@ +package kr.mafoo.photo.controller.dto.response; + +import io.swagger.v3.oas.annotations.media.Schema; + +@Schema(description = "리캡 응답") +public record SumoneSummaryResponse( + @Schema(description = "사용자 수", example = "1565") + int userCount +){ + +} diff --git a/photo-service/src/main/java/kr/mafoo/photo/domain/enums/AlbumType.java b/photo-service/src/main/java/kr/mafoo/photo/domain/enums/AlbumType.java index d2ecd336..7495679c 100644 --- a/photo-service/src/main/java/kr/mafoo/photo/domain/enums/AlbumType.java +++ b/photo-service/src/main/java/kr/mafoo/photo/domain/enums/AlbumType.java @@ -6,5 +6,6 @@ public enum AlbumType { BASKETBALL, BUILDING, STARFALL, - SMILE_FACE + SMILE_FACE, + SUMONE }