From 41ba382b79bbe8c3a2402d640d4de3d1bf399e8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98jminkkk=E2=80=99?= <102847513+jminkkk@users.noreply.github.com> Date: Wed, 21 Aug 2024 13:23:07 +0900 Subject: [PATCH 1/3] =?UTF-8?q?docs(controller):=20category=20=EA=B8=80?= =?UTF-8?q?=EC=9E=90=20=EC=88=98=20=EC=A0=9C=ED=95=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SpringDocCategoryController.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/backend/src/main/java/codezap/category/controller/SpringDocCategoryController.java b/backend/src/main/java/codezap/category/controller/SpringDocCategoryController.java index 3608e4af5..a14c0796e 100644 --- a/backend/src/main/java/codezap/category/controller/SpringDocCategoryController.java +++ b/backend/src/main/java/codezap/category/controller/SpringDocCategoryController.java @@ -30,7 +30,7 @@ public interface SpringDocCategoryController { @Header(name = "생성된 카테고리의 API 경로", example = "/categories/1")}) @ApiErrorResponse(status = HttpStatus.BAD_REQUEST, instance = "/categories", errorCases = { @ErrorCase(description = "모든 필드 중 null인 값이 있는 경우", exampleMessage = "카테고리 이름이 null 입니다."), - @ErrorCase(description = "카테고리 이름이 255자를 초과한 경우", exampleMessage = "카테고리 이름은 최대 255자까지 입력 가능합니다."), + @ErrorCase(description = "카테고리 이름이 15자를 초과한 경우", exampleMessage = "카테고리 이름은 최대 15자까지 입력 가능합니다."), @ErrorCase(description = "동일한 이름의 카테고리가 존재하는 경우", exampleMessage = "이름이 Spring 인 카테고리가 이미 존재합니다."), }) ResponseEntity createCategory( @@ -48,14 +48,12 @@ ResponseEntity createCategory( @Operation(summary = "카테고리 수정", description = "해당하는 식별자의 카테고리를 수정합니다.") @ApiResponse(responseCode = "200", description = "카테고리 수정 성공") @ApiErrorResponse(status = HttpStatus.BAD_REQUEST, instance = "/categories/1", errorCases = { - @ErrorCase(description = "해당하는 id 값인 카테고리가 없는 경우", - exampleMessage = "식별자 1에 해당하는 카테고리가 존재하지 않습니다."), - @ErrorCase(description = "동일한 이름의 카테고리가 존재하는 경우", - exampleMessage = "이름이 Spring 인 카테고리가 이미 존재합니다."), + @ErrorCase(description = "카테고리 이름이 15자를 초과한 경우", exampleMessage = "카테고리 이름은 최대 15자까지 입력 가능합니다."), + @ErrorCase(description = "해당하는 id 값인 카테고리가 없는 경우", exampleMessage = "식별자 1에 해당하는 카테고리가 존재하지 않습니다."), + @ErrorCase(description = "동일한 이름의 카테고리가 존재하는 경우", exampleMessage = "이름이 Spring 인 카테고리가 이미 존재합니다."), }) @ApiErrorResponse(status = HttpStatus.FORBIDDEN, instance = "/categories/1", errorCases = { - @ErrorCase(description = "카테고리를 수정할 권한이 없는 경우", - exampleMessage = "해당 카테고리를 수정 또는 삭제할 권한이 없는 유저입니다.") + @ErrorCase(description = "카테고리를 수정할 권한이 없는 경우", exampleMessage = "해당 카테고리를 수정 또는 삭제할 권한이 없는 유저입니다.") }) ResponseEntity updateCategory(MemberDto memberDto, Long id, UpdateCategoryRequest updateCategoryRequest); From ada49dfc41ed86aef504a10c588df7c9e1bf9dbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98jminkkk=E2=80=99?= <102847513+jminkkk@users.noreply.github.com> Date: Wed, 21 Aug 2024 13:24:01 +0900 Subject: [PATCH 2/3] =?UTF-8?q?docs(controller):=20=ED=85=9C=ED=94=8C?= =?UTF-8?q?=EB=A6=BF=20=EC=A1=B0=ED=9A=8C=20=EC=8B=9C=20=EC=9E=91=EC=84=B1?= =?UTF-8?q?=EC=9E=90=20=EC=A0=95=EB=B3=B4=20=ED=8F=AC=ED=95=A8=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SpringDocTemplateController.java | 11 ++++------- .../dto/response/FindAllTemplatesResponse.java | 10 ++++++++++ .../template/dto/response/FindMemberResponse.java | 12 ++++++++++++ .../template/dto/response/FindTemplateResponse.java | 5 +++++ 4 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 backend/src/main/java/codezap/template/dto/response/FindMemberResponse.java diff --git a/backend/src/main/java/codezap/template/controller/SpringDocTemplateController.java b/backend/src/main/java/codezap/template/controller/SpringDocTemplateController.java index 245457d9a..087754571 100644 --- a/backend/src/main/java/codezap/template/controller/SpringDocTemplateController.java +++ b/backend/src/main/java/codezap/template/controller/SpringDocTemplateController.java @@ -38,7 +38,8 @@ public interface SpringDocTemplateController { @ApiErrorResponse(status = HttpStatus.BAD_REQUEST, instance = "/templates", errorCases = { @ErrorCase(description = "모든 필드 중 null인 값이 있는 경우", exampleMessage = "템플릿 설명이 null 입니다."), @ErrorCase(description = "템플릿명, 파일명, 소스 코드가 공백일 경우", exampleMessage = "템플릿명이 비어 있거나 공백입니다."), - @ErrorCase(description = "템플릿명, 파일명, 태그명이 255자를 초과한 경우", exampleMessage = "템플릿명은 최대 255자까지 입력 가능합니다."), + @ErrorCase(description = "템플릿명, 파일명이 255자를 초과한 경우", exampleMessage = "템플릿명은 최대 255자까지 입력 가능합니다."), + @ErrorCase(description = "태그명이 30자를 초과한 경우", exampleMessage = "템플릿명은 최대 30자까지 입력 가능합니다."), @ErrorCase(description = "소스 코드가 65,535 byte를 초과한 경우", exampleMessage = "소스 코드는 최대 65,535 Byte까지 입력 가능합니다."), @ErrorCase(description = "소스 코드 순서가 잘못된 경우", exampleMessage = "소스 코드 순서가 잘못되었습니다."), @@ -81,14 +82,9 @@ public interface SpringDocTemplateController { @ErrorCase(description = "태그 ID가 0개인 경우", exampleMessage = "태그 ID가 0개입니다. 필터링 하지 않을 경우 null로 전달해주세요."), @ErrorCase(description = "페이지 번호가 1보다 작을 경우", exampleMessage = "페이지 번호는 1 이상이어야 합니다."), }) - @ApiErrorResponse(status = HttpStatus.UNAUTHORIZED, - instance = "/templates?memberId=1&keyword=\"java\"", errorCases = { - @ErrorCase(description = "인증 정보가 없거나 잘못된 경우", exampleMessage = "인증에 실패했습니다."), - @ErrorCase(description = "인증 정보와 멤버 ID가 다른 경우", exampleMessage = "인증 정보에 포함된 멤버 ID와 파라미터로 받은 멤버 ID가 다릅니다."), - }) @ApiErrorResponse(status = HttpStatus.NOT_FOUND, instance = "/templates?memberId=1&keyword=\"java\"&categoryId=1&tagIds=1,2", errorCases = { - @ErrorCase(description = "인증 정보에 포함된 멤버가 없는 경우", exampleMessage = "식별자 1에 해당하는 멤버가 존재하지 않습니다."), + @ErrorCase(description = "멤버가 없는 경우", exampleMessage = "식별자 1에 해당하는 멤버가 존재하지 않습니다."), @ErrorCase(description = "카테고리가 없는 경우", exampleMessage = "식별자 1에 해당하는 카테고리가 존재하지 않습니다."), @ErrorCase(description = "태그가 없는 경우", exampleMessage = "식별자 1에 해당하는 태그가 존재하지 않습니다."), }) @@ -133,6 +129,7 @@ ResponseEntity getTemplates( @ErrorCase(description = "모든 필드 중 null인 값이 있는 경우", exampleMessage = "템플릿 설명이 null 입니다."), @ErrorCase(description = "템플릿명, 파일명, 소스 코드가 공백일 경우", exampleMessage = "템플릿명이 비어 있거나 공백입니다."), @ErrorCase(description = "템플릿명, 파일명, 태그명이 255자를 초과한 경우", exampleMessage = "템플릿명은 최대 255자까지 입력 가능합니다."), + @ErrorCase(description = "태그명이 30자를 초과한 경우", exampleMessage = "템플릿명은 최대 30자까지 입력 가능합니다."), @ErrorCase(description = "소스 코드가 65,535 byte를 초과한 경우", exampleMessage = "소스 코드는 최대 65,535 Byte까지 입력 가능합니다."), @ErrorCase(description = "소스 코드 순서가 잘못된 경우", exampleMessage = "소스 코드 순서가 잘못되었습니다."), diff --git a/backend/src/main/java/codezap/template/dto/response/FindAllTemplatesResponse.java b/backend/src/main/java/codezap/template/dto/response/FindAllTemplatesResponse.java index a0de66f3a..6e7545984 100644 --- a/backend/src/main/java/codezap/template/dto/response/FindAllTemplatesResponse.java +++ b/backend/src/main/java/codezap/template/dto/response/FindAllTemplatesResponse.java @@ -19,22 +19,32 @@ public record FindAllTemplatesResponse( public record ItemResponse( @Schema(description = "템플릿 ID", example = "0") Long id, + + @Schema(description = "회원 설명") + FindMemberResponse member, + @Schema(description = "템플릿명", example = "스프링 로그인 구현") String title, + @Schema(description = "템플릿 설명", example = "Jwt 토큰을 이용하여 로그인 기능을 구현합니다.") String description, + @Schema(description = "태그 목록") List tags, + @Schema(description = "썸네일") FindThumbnailResponse thumbnail, + @Schema(description = "템플릿 생성 시간", example = "2024-11-10 12:00:00", type = "string") LocalDateTime createdAt, + @Schema(description = "템플릿 수정 시간", example = "2024-11-11 12:00:00", type = "string") LocalDateTime modifiedAt ) { public static ItemResponse of(Template template, List templateTags, SourceCode thumbnailSourceCode) { return new ItemResponse( template.getId(), + null, template.getTitle(), template.getDescription(), templateTags.stream() diff --git a/backend/src/main/java/codezap/template/dto/response/FindMemberResponse.java b/backend/src/main/java/codezap/template/dto/response/FindMemberResponse.java new file mode 100644 index 000000000..9c8b7c3dd --- /dev/null +++ b/backend/src/main/java/codezap/template/dto/response/FindMemberResponse.java @@ -0,0 +1,12 @@ +package codezap.template.dto.response; + +import io.swagger.v3.oas.annotations.media.Schema; + +public record FindMemberResponse( + @Schema(description = "회원 식별자", example = "0") + Long id, + + @Schema(description = "회원 아이디", example = "code") + String name +) { +} diff --git a/backend/src/main/java/codezap/template/dto/response/FindTemplateResponse.java b/backend/src/main/java/codezap/template/dto/response/FindTemplateResponse.java index 897814911..ce49575eb 100644 --- a/backend/src/main/java/codezap/template/dto/response/FindTemplateResponse.java +++ b/backend/src/main/java/codezap/template/dto/response/FindTemplateResponse.java @@ -13,6 +13,9 @@ public record FindTemplateResponse( @Schema(description = "템플릿 식별자", example = "0") Long id, + @Schema(description = "회원 설명") + FindMemberResponse member, + @Schema(description = "템플릿 이름", example = "스프링 로그인 구현") String title, @@ -30,12 +33,14 @@ public record FindTemplateResponse( @Schema(description = "템플릿 생성 시간", example = "2024-11-10 12:00:00", type = "string") LocalDateTime createdAt, + @Schema(description = "템플릿 수정 시간", example = "2024-11-11 12:00:00", type = "string") LocalDateTime modifiedAt ) { public static FindTemplateResponse of(Template template, List sourceCodes, List tags) { return new FindTemplateResponse( template.getId(), + null, template.getTitle(), template.getDescription(), mapToFindAllSourceCodeByTemplateResponse(sourceCodes), From 8672cac90c140416726d83fdaab3b658c35aefa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98jminkkk=E2=80=99?= <102847513+jminkkk@users.noreply.github.com> Date: Wed, 21 Aug 2024 14:02:27 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix(controller):=20=EC=98=A4=ED=83=80=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/controller/SpringDocTemplateController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/codezap/template/controller/SpringDocTemplateController.java b/backend/src/main/java/codezap/template/controller/SpringDocTemplateController.java index 087754571..a8c1f059c 100644 --- a/backend/src/main/java/codezap/template/controller/SpringDocTemplateController.java +++ b/backend/src/main/java/codezap/template/controller/SpringDocTemplateController.java @@ -39,7 +39,7 @@ public interface SpringDocTemplateController { @ErrorCase(description = "모든 필드 중 null인 값이 있는 경우", exampleMessage = "템플릿 설명이 null 입니다."), @ErrorCase(description = "템플릿명, 파일명, 소스 코드가 공백일 경우", exampleMessage = "템플릿명이 비어 있거나 공백입니다."), @ErrorCase(description = "템플릿명, 파일명이 255자를 초과한 경우", exampleMessage = "템플릿명은 최대 255자까지 입력 가능합니다."), - @ErrorCase(description = "태그명이 30자를 초과한 경우", exampleMessage = "템플릿명은 최대 30자까지 입력 가능합니다."), + @ErrorCase(description = "태그명이 30자를 초과한 경우", exampleMessage = "태그명은 최대 30자까지 입력 가능합니다."), @ErrorCase(description = "소스 코드가 65,535 byte를 초과한 경우", exampleMessage = "소스 코드는 최대 65,535 Byte까지 입력 가능합니다."), @ErrorCase(description = "소스 코드 순서가 잘못된 경우", exampleMessage = "소스 코드 순서가 잘못되었습니다."), @@ -129,7 +129,7 @@ ResponseEntity getTemplates( @ErrorCase(description = "모든 필드 중 null인 값이 있는 경우", exampleMessage = "템플릿 설명이 null 입니다."), @ErrorCase(description = "템플릿명, 파일명, 소스 코드가 공백일 경우", exampleMessage = "템플릿명이 비어 있거나 공백입니다."), @ErrorCase(description = "템플릿명, 파일명, 태그명이 255자를 초과한 경우", exampleMessage = "템플릿명은 최대 255자까지 입력 가능합니다."), - @ErrorCase(description = "태그명이 30자를 초과한 경우", exampleMessage = "템플릿명은 최대 30자까지 입력 가능합니다."), + @ErrorCase(description = "태그명이 30자를 초과한 경우", exampleMessage = "태그명은 최대 30자까지 입력 가능합니다."), @ErrorCase(description = "소스 코드가 65,535 byte를 초과한 경우", exampleMessage = "소스 코드는 최대 65,535 Byte까지 입력 가능합니다."), @ErrorCase(description = "소스 코드 순서가 잘못된 경우", exampleMessage = "소스 코드 순서가 잘못되었습니다."),