Skip to content

Commit

Permalink
Merge pull request #32 from Att-ies/feat/31-withdraw-member
Browse files Browse the repository at this point in the history
feat/31-withdraw-member
  • Loading branch information
JunYoung-C authored Jan 5, 2023
2 parents b8d861b + 9e5ccae commit 78caadb
Show file tree
Hide file tree
Showing 9 changed files with 211 additions and 1 deletion.
34 changes: 34 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}

plugins {
id 'java'
id 'org.springframework.boot' version '2.7.6'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}

group = 'com.sptp'
Expand Down Expand Up @@ -46,8 +53,35 @@ dependencies {
//gson
implementation 'com.google.code.gson:gson:2.9.0'

//QueryDsl
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "com.querydsl:querydsl-apt:${queryDslVersion}"

//H2
runtimeOnly 'com.h2database:h2'
}

tasks.named('test') {
useJUnitPlatform()
}

//querydsl 추가 시작
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
//querydsl 추가 끝
15 changes: 15 additions & 0 deletions src/main/java/com/sptp/backend/common/config/DBConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.sptp.backend.common.config;

import com.querydsl.jpa.impl.JPAQueryFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.persistence.EntityManager;

@Configuration
public class DBConfig {
@Bean
public JPAQueryFactory jpaQueryFactory(EntityManager entityManager) {
return new JPAQueryFactory(entityManager);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,13 @@ public void updateUser(Long loginMemberId, MemberUpdateRequest dto) {
findMember.updateUser(dto);
}

@Transactional
public void withdrawUser(Long loginMemberId) {

memberKeywordRepository.deleteByMemberId(loginMemberId);
memberRepository.deleteById(loginMemberId);
}

@Transactional
public void updateArtist(Long loginMemberId, ArtistUpdateRequest dto) {

Expand Down
11 changes: 11 additions & 0 deletions src/main/java/com/sptp/backend/member/web/MemberController.java
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,17 @@ public ResponseEntity<?> updateUser(@AuthenticationPrincipal CustomUserDetails u
return new ResponseEntity(HttpStatus.OK);
}

@DeleteMapping("/members")
public ResponseEntity<?> withdrawUser(
@RequestHeader("accessToken") String accessToken,
@AuthenticationPrincipal CustomUserDetails userDetails) {

memberService.logout(accessToken);
memberService.withdrawUser(userDetails.getMember().getId());

return ResponseEntity.status(HttpStatus.OK).build();
}

// 작가 정보 수정
@PatchMapping("/artists")
public ResponseEntity<?> updateArtist(@AuthenticationPrincipal CustomUserDetails userDetails, @RequestBody ArtistUpdateRequest artistUpdateRequest) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.sptp.backend.memberkeyword.repository;

public interface MemberKeywordCustomRepository {
void deleteByMemberId(Long memberId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.sptp.backend.memberkeyword.repository;

import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;

import static com.sptp.backend.memberkeyword.repository.QMemberKeyword.*;

@RequiredArgsConstructor
public class MemberKeywordCustomRepositoryImpl implements MemberKeywordCustomRepository {

private final JPAQueryFactory queryFactory;

@Override
public void deleteByMemberId(Long memberId) {
queryFactory.delete(memberKeyword)
.where(memberKeyword.member.id.eq(memberId))
.execute();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@

import org.springframework.data.jpa.repository.JpaRepository;

public interface MemberKeywordRepository extends JpaRepository<MemberKeyword, Long> {
public interface MemberKeywordRepository extends JpaRepository<MemberKeyword, Long>, MemberKeywordCustomRepository {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.sptp.backend.memberkeyword.repository;

import com.sptp.backend.common.config.DBConfig;
import com.sptp.backend.common.config.PropertyConfig;
import com.sptp.backend.member.repository.Member;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.context.annotation.Import;

import javax.persistence.EntityManager;

@DataJpaTest
@Import({DBConfig.class, PropertyConfig.class})
class MemberKeywordRepositoryTest {

@Autowired
EntityManager entityManager;

@Autowired
MemberKeywordRepository memberKeywordRepository;

@Nested
class deleteByMemberIdTest {

Member member = createMember();

@BeforeEach
void init() {
// 테스트용 데이터 삽입
entityManager.persist(member);
for (int keywordId = 1; keywordId < 3; keywordId++) {
entityManager.persist(createMemberKeyword(member, keywordId));
}
}

@Test
void success() {
//given
long memberId = member.getId();
long count = memberKeywordRepository.count();

//when
memberKeywordRepository.deleteByMemberId(memberId);
long currentCount = memberKeywordRepository.count();

//then
Assertions.assertThat(count).isNotEqualTo(currentCount);
Assertions.assertThat(currentCount).isEqualTo(0L);
}
}

private static MemberKeyword createMemberKeyword(Member member, int keywordId) {
return MemberKeyword.builder()
.member(member)
.keywordId(keywordId)
.build();
}

private static Member createMember() {

return Member.builder()
.userId("test")
.password("12345678")
.build();
}
}
49 changes: 49 additions & 0 deletions src/test/resources/application.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
spring:
redis:
host: localhost
port: ${application.spring.redis.port}

jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: true

security:
oauth2:
client:
registration:
kakao:
client-id: ${application.spring.security.kakao.client-id}
client-secret: ${application.spring.security.kakao.client-secret}
redirect-uri: ${application.spring.security.kakao.redirect-uri}
authorization-grant-type: authorization_code
client-authentication-method: POST
client-name: Kakao
scope:
- profile_nickname
- account_email
naver:
client-id: ${application.spring.security.naver.client-id}
client-secret: ${application.spring.security.naver.client-secret}
redirect-uri: ${application.spring.security.naver.redirect-uri}
authorization-grant-type: authorization_code
scope:
- name
- email
provider:
kakao:
authorization-uri: https://kauth.kakao.com/oauth/authorize
token-uri: https://kauth.kakao.com/oauth/token
user-info-uri: https://kapi.kakao.com/v2/user/me
user-name-attribute: id
naver:
authorization-uri: https://nid.naver.com/oauth2.0/authorize
token-uri: https://nid.naver.com/oauth2.0/token
user-info-uri: https://openapi.naver.com/v1/nid/me
user-name-attribute: response

jwt:
secret: ${application.jwt.secret}
secret_refresh: ${application.jwt.secret_refresh}

0 comments on commit 78caadb

Please sign in to comment.