Skip to content

Commit

Permalink
Merge pull request #20 from SMWU-POCHAK/feat/17-check-handle-duplicate
Browse files Browse the repository at this point in the history
[feat/17-check-handle-duplicate] 핸들 중복 검사 API
  • Loading branch information
5jisoo authored Jun 30, 2024
2 parents 16ffd97 + 5a9b191 commit c9d1c72
Show file tree
Hide file tree
Showing 8 changed files with 69 additions and 6 deletions.
17 changes: 16 additions & 1 deletion src/docs/asciidoc/profile.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,19 @@ include::{snippets}/get-uploaded-post/query-parameters.adoc[]
=== Response
==== response body
include::{snippets}/get-uploaded-post/response-body.adoc[]
include::{snippets}/get-uploaded-post/response-fields.adoc[]
include::{snippets}/get-uploaded-post/response-fields.adoc[]

== `GET` Check Duplicate Handle API

중복되는 아이디 (handle) 검사용 API

=== Request
include::{snippets}/check-duplicate-handle/http-request.adoc[]

==== query parameters
include::{snippets}/check-duplicate-handle/query-parameters.adoc[]

=== Response
==== response body
include::{snippets}/check-duplicate-handle/response-body.adoc[]
include::{snippets}/check-duplicate-handle/response-fields.adoc[]
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ public enum ErrorStatus implements BaseErrorCode {

// Member
INVALID_MEMBER_HANDLE(BAD_REQUEST, "MEMBER4001", "유효하지 않은 멤버의 handle입니다."),
DUPLICATE_HANDLE(BAD_REQUEST, "MEMBER4002", "중복되는 handle(아이디) 입니다."),

// Post
INVALID_POST_ID(BAD_REQUEST, "POST4001", "유효하지 않은 게시물 아이디입니다."),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public enum SuccessStatus implements BaseCode {
SUCCESS_SIGN_OUT(NO_CONTENT, "LOGIN2002", "성공적으로 탈퇴하였습니다."),

// Member
VALID_HANDLE(NO_CONTENT, "MEMBER2001", "사용가능한 handle(아이디)입니다."),

// Post
SUCCESS_UPLOAD_POST(CREATED, "POST2001", "성공적으로 게시물을 등록하였습니다."),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.springframework.web.bind.annotation.*;

import static com.apps.pochak.global.Constant.DEFAULT_PAGING_SIZE;
import static com.apps.pochak.global.api_payload.code.status.SuccessStatus.VALID_HANDLE;

@RestController
@RequiredArgsConstructor
Expand Down Expand Up @@ -44,4 +45,12 @@ public ApiResponse<MemberElements> searchMember(
) {
return ApiResponse.onSuccess(memberService.search(keyword, pageable));
}

@GetMapping("/duplicate")
public ApiResponse<Void> checkDuplicate(
@RequestParam("handle") final String handle
) {
memberService.checkDuplicate(handle);
return ApiResponse.of(VALID_HANDLE);
}
}
7 changes: 3 additions & 4 deletions src/main/java/com/apps/pochak/member/domain/Member.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package com.apps.pochak.member.domain;

import com.apps.pochak.global.BaseEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.*;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand All @@ -14,6 +11,7 @@

import java.util.Objects;

import static jakarta.persistence.EnumType.*;
import static jakarta.persistence.GenerationType.IDENTITY;
import static lombok.AccessLevel.PROTECTED;

Expand Down Expand Up @@ -43,6 +41,7 @@ public class Member extends BaseEntity {

private String socialId;

@Enumerated(STRING)
private SocialType socialType;

private String socialRefreshToken;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import java.util.List;
import java.util.Optional;

import static com.apps.pochak.global.api_payload.code.status.ErrorStatus.INVALID_MEMBER_HANDLE;
import static com.apps.pochak.global.api_payload.code.status.ErrorStatus.*;

public interface MemberRepository extends JpaRepository<Member, Long> {

Expand All @@ -28,6 +28,11 @@ Optional<Member> findMemberByHandle(
@Param("loginMember") final Member loginMember
);

default void checkDuplicateHandle(final String handle) {
if (findMemberByHandle(handle).isPresent())
throw new GeneralException(DUPLICATE_HANDLE);
}

default Member findByHandleWithoutLogin(final String handle) {
return findMemberByHandle(handle).orElseThrow(() -> new GeneralException(INVALID_MEMBER_HANDLE));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,9 @@ public MemberElements search(
Page<Member> memberPage = memberRepository.searchByKeyword(keyword, loginMember, pageable);
return MemberElements.from(memberPage);
}

@Transactional(readOnly = true)
public void checkDuplicate(String handle) {
memberRepository.checkDuplicateHandle(handle);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -241,4 +241,32 @@ void searchMemberTest() throws Exception {
)
);
}

@Test
@DisplayName("check duplicate handle API Document")
void checkDuplicateHandleTest() throws Exception {

String handle = "5ji";

this.mockMvc.perform(
RestDocumentationRequestBuilders
.get("/api/v2/members/duplicate")
.queryParam("handle", handle)
.contentType(APPLICATION_JSON)
).andExpect(status().isOk())
.andDo(
document("check-duplicate-handle",
getDocumentRequest(),
getDocumentResponse(),
queryParameters(
parameterWithName("handle").description("검색하고자 하는 handle")
),
responseFields(
fieldWithPath("isSuccess").type(BOOLEAN).description("성공 여부 (중복시 실패 처리됨)"),
fieldWithPath("code").type(STRING).description("결과 코드"),
fieldWithPath("message").type(STRING).description("결과 메세지")
)
)
);
}
}

0 comments on commit c9d1c72

Please sign in to comment.