diff --git a/build.gradle b/build.gradle
index da185495..7e33a036 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,8 +2,7 @@ plugins {
id 'java-library'
id 'org.springframework.boot' apply(false)
id 'io.spring.dependency-management'
- id 'org.sonarqube' version '4.4.1.3373'
-
+ id 'org.sonarqube' version '4.4.1.3373' apply(false)
}
allprojects {
@@ -17,14 +16,6 @@ allprojects {
}
-sonar {
- properties {
- property "sonar.projectKey", "CMC11th-Melly_Melly_Server"
- property "sonar.organization", "cmc11th-melly"
- property "sonar.host.url", "https://sonarcloud.io"
- }
-}
-
subprojects {
apply plugin: 'java-library'
apply plugin: 'org.springframework.boot'
@@ -34,13 +25,24 @@ subprojects {
apply plugin: 'jacoco-report-aggregation'
+ sonar {
+ properties {
+ property "sonar.projectKey", "CMC11th-Melly_Melly_Server"
+ property "sonar.organization", "melly"
+ property "sonar.host.url", "https://sonarcloud.io"
+ property "sonar.coverage.jacoco.xmlReportPaths", "/home/runner/work/Melly_Server/Melly_Server/core/core-api/build/reports/jacoco/testCodeCoverageReport/testCodeCoverageReport.xml"
+ }
+ }
+
+ bootJar.enabled = false // core-api 모듈 이외에는 모두 boot 되지 않는 모듈
+ jar.enabled = true // jar는 필요함
+
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudDependenciesVersion}"
}
}
-
jacoco {
toolVersion = '0.8.8'
}
@@ -50,7 +52,7 @@ subprojects {
// jacoco report 형식 및 경로 설정
reports {
html.required = true
- csv.required = true
+ csv.required = false
xml.required = true
}
@@ -68,7 +70,7 @@ subprojects {
)
}
- finalizedBy 'jacocoTestCoverageVerification'
+ finalizedBy 'jacocoTestCoverageVerification' // jacocoTestReport를 실행 후 jacocoTestCoverageVerification 실행
}
jacocoTestCoverageVerification {
@@ -88,13 +90,13 @@ subprojects {
limit {
counter = 'BRANCH'
value = 'COVEREDRATIO'
- minimum = 0.00
+ minimum = 0.0
}
limit {
counter = 'LINE'
value = 'COVEREDRATIO'
- minimum = 0.00
+ minimum = 0.0
}
limit {
@@ -106,42 +108,28 @@ subprojects {
excludes = [] + Qdomains
}
-
}
}
- sonar {
- properties {
- property 'sonar.core.codeCoveragePlugin', 'jacoco'
- property 'sonar.coverage.jacoco.xmlReportPaths', "${project.buildDir}/reports/jacoco/testCodeCoverageReport/**.xml"
- }
- }
dependencies {
- // Lombok
+ // lombok
implementation 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.20'
-
-
testAnnotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'
+
+ // test
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation group: 'org.testcontainers', name: 'testcontainers', version: '1.17.2'
testImplementation group: 'org.mockito', name: 'mockito-core', version: '4.8.0'
testImplementation "com.h2database:h2"
-
- implementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
- implementation 'org.springframework.restdocs:spring-restdocs-restassured'
- implementation 'io.rest-assured:spring-mock-mvc'
}
- bootJar.enabled = false
- jar.enabled = true
-
test {
useJUnitPlatform()
- finalizedBy 'jacocoTestReport' // test가 끝나면 jacocoTestReport를 실행합니다.
+ finalizedBy 'jacocoTestReport' // test가 끝나면 jacocoTestReport를 실행
}
}
diff --git a/clients/client-auth/build.gradle b/clients/client-auth/build.gradle
index c2331360..e51f4dd7 100644
--- a/clients/client-auth/build.gradle
+++ b/clients/client-auth/build.gradle
@@ -1,3 +1,11 @@
+/*
+Client 기능만을 위한 모듈을 분리함으로써 외부 통신을 위한 의존성만 독립적으로 implementation 할 수 있습니다.
+장점 :
+ - 다른 모듈의 의존성 변화에 영향을 받지 않으므로 모듈을 안정적으로 관리할 수 있습니다.
+ - Client 기능만을 위한 의존성만 남아서 관리가 편하고 쉽게 파악이 가능합니다.
+ - implementation은 compile 단계와 runtime 모두에 의존성이 들어옵니다. 즉, implementation한 의존성이 많아지면 compile시 시간이 오래 걸립니다.
+ client 기능에 필요한 의존성만 compile함으로 compile 시간이 단축됩니다.
+ */
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
@@ -13,4 +21,6 @@ dependencies {
// JSON
implementation 'com.fasterxml.jackson.core:jackson-databind'
+
+ testImplementation "org.springframework.cloud:spring-cloud-starter-contract-stub-runner"
}
diff --git a/clients/client-auth/src/main/java/cmc/mellyserver/clientauth/LoginClient.java b/clients/client-auth/src/main/java/cmc/mellyserver/clientauth/LoginClient.java
index 1c912923..a7749678 100644
--- a/clients/client-auth/src/main/java/cmc/mellyserver/clientauth/LoginClient.java
+++ b/clients/client-auth/src/main/java/cmc/mellyserver/clientauth/LoginClient.java
@@ -2,6 +2,13 @@
import cmc.mellyserver.clientauth.api.LoginClientResult;
+/*
+현재 Melly에서는 카카오, 네이버, 구글, 애플 OAuth를 사용하고 있습니다. 차후 OAuth는 얼마든지 추가될 수 있기에 확장성을 고려한 설계가 필요합니다.
+따라서 LoginClient 인터페이스를 만들어서 구체 클라이언트들이 구현하도록 만들었습니다.
+OAuth 리소스 서버로부터 데이터를 받아와야 하는 쪽에서는 누구에게 요청하는지 관심을 가지지 않아도 됩니다.
+- support : 해당 클라이언트가 어떤 Provider인지 판별합니다
+- getUserData : 실제 유저 데이터를 받아옵니다
+ */
public interface LoginClient {
boolean supports(String provider);
diff --git a/clients/client-auth/src/main/java/cmc/mellyserver/clientauth/api/NaverClient.java b/clients/client-auth/src/main/java/cmc/mellyserver/clientauth/api/NaverClient.java
index f8b29ee5..8cd06e05 100644
--- a/clients/client-auth/src/main/java/cmc/mellyserver/clientauth/api/NaverClient.java
+++ b/clients/client-auth/src/main/java/cmc/mellyserver/clientauth/api/NaverClient.java
@@ -1,11 +1,16 @@
package cmc.mellyserver.clientauth.api;
-import cmc.mellyserver.clientauth.LoginClient;
-import lombok.RequiredArgsConstructor;
+import static cmc.mellyserver.clientauth.api.Provider.*;
+
import org.springframework.stereotype.Component;
-import static cmc.mellyserver.clientauth.api.Provider.NAVER;
+import cmc.mellyserver.clientauth.LoginClient;
+import lombok.RequiredArgsConstructor;
+/*
+타 모듈은 Client 호출이 필요할때 xxClient 객체를 사용해서 호출하면 됩니다.
+OpenFeign 인터페이스에 대한 접근은 패키지 내부로 숨겼습니다.
+ */
@Component
@RequiredArgsConstructor
public class NaverClient implements LoginClient {
diff --git a/clients/client-auth/src/main/java/cmc/mellyserver/clientauth/api/NaverLoginApi.java b/clients/client-auth/src/main/java/cmc/mellyserver/clientauth/api/NaverLoginApi.java
index a3a72679..31aaa8c5 100644
--- a/clients/client-auth/src/main/java/cmc/mellyserver/clientauth/api/NaverLoginApi.java
+++ b/clients/client-auth/src/main/java/cmc/mellyserver/clientauth/api/NaverLoginApi.java
@@ -7,6 +7,10 @@
import cmc.mellyserver.clientauth.model.NaverResource;
+/*
+통신 클라이언트를 호출하는 작업은 OpenFeign 인터페이스가 아닌 NaverClient라는 객체를 통해 수행합니다.
+OpenFeign 인터페이스에 대한 세부 구현은 package default 접근 지시자를 통해 예상치 못한 곳에서의 사용을 차단했습니다.
+ */
@FeignClient(name = "naverLogin", url = "${client.oauth.uri.naver}")
interface NaverLoginApi {
diff --git a/clients/client-auth/src/main/resources/client-auth.yml b/clients/client-auth/src/main/resources/client-auth.yml
index e75b733d..6d884047 100644
--- a/clients/client-auth/src/main/resources/client-auth.yml
+++ b/clients/client-auth/src/main/resources/client-auth.yml
@@ -25,13 +25,13 @@ resilience4j.circuitbreaker:
configs:
default:
slidingWindowType: COUNT_BASED
- minimumNumberOfCalls: 7 # Circuit Open 여부를 판단하기 위해 실행해야 하는 최소 요청 횟수
- slidingWindowSize: 10 # Circuit Open 여부를 체크하는 윈도우 크기
- waitDurationInOpenState: 10s # Circuit이 Open 상태에 머무는 시간
+ minimumNumberOfCalls: 3 # Circuit Open 여부를 판단하기 위해 실행해야 하는 최소 요청 횟수
+ slidingWindowSize: 5 # Circuit Open 여부를 체크하는 윈도우 크기
+ waitDurationInOpenState: 5s # Circuit이 Open 상태에 머무는 시간
failureRateThreshold: 80 # 슬라이딩 윈도우 내에서 몇 %이상되면 Circuit을 Open할지 결정하는 비율
- slowCallDurationThreshold: 3000 # 몇초동안 요청이 지속되면 슬로우 콜로 판별되는지 기준
+ slowCallDurationThreshold: 2000 # 몇초동안 요청이 지속되면 슬로우 콜로 판별되는지 기준
slowCallRateThreshold: 80 # 슬라이딩 윈도우 내 요청 중 몇 %이상 슬로우 콜이 발생하면 Circuit을 Open할지 결정하는 비율
permittedNumberOfCallsInHalfOpenState: 5 # Half Open 상태에서 상태 변화를 위해 테스트 해보는 요청 횟수
diff --git a/core/core-api/build.gradle b/core/core-api/build.gradle
index 035db22e..a4030d6c 100644
--- a/core/core-api/build.gradle
+++ b/core/core-api/build.gradle
@@ -1,6 +1,5 @@
plugins {
id 'org.asciidoctor.jvm.convert' version '3.3.2'
- // Rest Docs는 API 문서화 & 테스트로만 필요합니다. 따라서 core-api 모듈에서만 플러그인을 사용하도록 만들었습니다.
}
bootJar.enabled = true
@@ -13,7 +12,6 @@ configurations {
asciidoctorExt
}
-
dependencies {
// Spring
@@ -22,6 +20,9 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
+ implementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
+ implementation 'org.springframework.restdocs:spring-restdocs-restassured'
+ implementation 'io.rest-assured:spring-mock-mvc'
// JWT
// 해당 라이브러리 또한 client-auth에서 implementation으로 사용 중이기에 compileOnly로 변경했습니다.
@@ -58,7 +59,6 @@ dependencies {
// Rest Docs
asciidoctorExt 'org.springframework.restdocs:spring-restdocs-asciidoctor'
-
// Multi Module
implementation project(":storage:db-core")
implementation project(":storage:db-redis")
@@ -68,7 +68,6 @@ dependencies {
implementation project(":support:logging")
implementation project(":clients:client-auth")
-
jacocoAggregation project(":storage:db-core")
jacocoAggregation project(":storage:db-redis")
jacocoAggregation project(":infra:notification")
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/AuthService.java b/core/core-api/src/main/java/cmc/mellyserver/auth/AuthService.java
index 86cd61fd..101bf157 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/AuthService.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/AuthService.java
@@ -1,26 +1,26 @@
package cmc.mellyserver.auth;
+import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
import cmc.mellyserver.auth.dto.request.AuthLoginRequestDto;
import cmc.mellyserver.auth.dto.request.AuthSignupRequestDto;
import cmc.mellyserver.auth.dto.request.ChangePasswordRequest;
-import cmc.mellyserver.auth.dto.response.RefreshTokenDto;
import cmc.mellyserver.auth.dto.response.TokenResponseDto;
-import cmc.mellyserver.auth.repository.AuthTokenRepository;
import cmc.mellyserver.auth.repository.RefreshToken;
-import cmc.mellyserver.auth.token.TokenProvider;
+import cmc.mellyserver.auth.token.TokenDto;
+import cmc.mellyserver.auth.token.TokenService;
import cmc.mellyserver.dbcore.user.User;
import cmc.mellyserver.dbredis.repository.FcmTokenRepository;
-import cmc.mellyserver.domain.comment.event.SignupCompletedEvent;
+import cmc.mellyserver.domain.comment.event.SignupEvent;
import cmc.mellyserver.domain.user.UserReader;
import cmc.mellyserver.domain.user.UserWriter;
import cmc.mellyserver.support.exception.BusinessException;
import cmc.mellyserver.support.exception.ErrorCode;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.ApplicationEventPublisher;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
@Slf4j
@Service
@@ -33,9 +33,7 @@ public class AuthService {
private final PasswordEncoder passwordEncoder;
- private final TokenProvider tokenProvider;
-
- private final AuthTokenRepository tokenRepository;
+ private final TokenService tokenService;
private final FcmTokenRepository fcmTokenRepository;
@@ -44,35 +42,23 @@ public class AuthService {
@Transactional
public TokenResponseDto signup(AuthSignupRequestDto authSignupRequestDto) {
- checkDuplicatedEmail(authSignupRequestDto);
- User savedUser = userWriter.save(User.createEmailLoginUser(authSignupRequestDto.getEmail(),
- passwordEncoder.encode(authSignupRequestDto.getPassword()), authSignupRequestDto.getNickname(),
- authSignupRequestDto.getAgeGroup(), authSignupRequestDto.getGender()));
-
- String accessToken = tokenProvider.createAccessToken(savedUser.getId(), savedUser.getRoleType());
- RefreshTokenDto refreshToken = tokenProvider.createRefreshToken(savedUser.getId(), savedUser.getRoleType());
+ checkDuplicatedEmail(authSignupRequestDto.getEmail());
+ User user = userWriter.save(authSignupRequestDto.toEntity());
- tokenRepository.saveRefreshToken(new RefreshToken(refreshToken.getToken(), savedUser.getId()),
- refreshToken.getExpiredAt());
- fcmTokenRepository.saveToken(savedUser.getId().toString(), authSignupRequestDto.getFcmToken());
+ TokenDto tokenDto = tokenService.createToken(user);
- publisher.publishEvent(new SignupCompletedEvent(savedUser.getId()));
+ fcmTokenRepository.saveToken(user.getId().toString(), user.getFcmToken());
+ publisher.publishEvent(new SignupEvent(user.getId()));
- return TokenResponseDto.of(accessToken, refreshToken.getToken());
+ return TokenResponseDto.of(tokenDto.accessToken(), tokenDto.refreshToken().getToken());
}
- /**
- * 로그인 요청이 몰리는 상황에서 TPS를 올릴 수 있는 방법들을 고민했습니다.
- *
- * 1. email 컬럼에 대한 인덱스를 생성해서 DB 랜덤 I/O 시간 단축
- *
- * 2. password 비교하는 과정에서 encoder의 암호화 강도가 높아서 CPU 사용량과 처리시간 증가, EC2의 CPU 스펙에 맞춰서 암호화
- * 강도 조절
- *
- * 3. FCM Token을 Redis에 생성하는 부분을 이벤트로 분리. 분산 환경의 Redis를 사용하기에 네트워크 I/O 시간이 추가됩니다. I/O
- * 시간 단축을 위해서 FCM 관련 로직 이벤트 분리
- *
- * 4. @TransactionEventListener를 적용해서 데이터 일관성 보장
+ /*
+ 로그인 요청이 몰리는 상황에서 TPS를 올릴 수 있는 방법들을 고민했습니다.
+ - 1. email 컬럼에 대한 인덱스를 생성해서 DB 랜덤 I/O 시간 단축
+ - 2. password 비교하는 과정에서 encoder의 암호화 강도가 높아서 CPU 사용량과 처리시간 증가, EC2의 CPU 스펙에 맞춰서 암호화 강도 조절
+ - 3. FCM Token을 Redis에 생성하는 부분을 이벤트로 분리. 분산 환경의 Redis를 사용하기에 네트워크 I/O 시간이 추가됩니다. I/O 시간 단축을 위해서 FCM 관련 로직 이벤트 분리
+ - 4. @TransactionEventListener를 적용해서 데이터 일관성 보장
*/
@Transactional
public TokenResponseDto login(AuthLoginRequestDto authLoginRequestDto) {
@@ -80,47 +66,30 @@ public TokenResponseDto login(AuthLoginRequestDto authLoginRequestDto) {
User user = checkEmail(authLoginRequestDto.getEmail());
checkPassword(authLoginRequestDto.getPassword(), user.getPassword());
- String accessToken = tokenProvider.createAccessToken(user.getId(), user.getRoleType());
- RefreshTokenDto refreshToken = tokenProvider.createRefreshToken(user.getId(), user.getRoleType());
-
- // ------ 3. 레디스에 Refresh token 저장, EC2 간 네트워크 I/O 발생
- tokenRepository.saveRefreshToken(new RefreshToken(refreshToken.getToken(), user.getId()),
- refreshToken.getExpiredAt());
+ TokenDto tokenDto = tokenService.createToken(user);
fcmTokenRepository.saveToken(user.getId().toString(), authLoginRequestDto.getFcmToken());
- return TokenResponseDto.of(accessToken, refreshToken.getToken());
+ return TokenResponseDto.of(tokenDto.accessToken(), tokenDto.refreshToken().getToken());
}
// Refresh Token Rotation (RTR) 전략 적용
public TokenResponseDto reIssueAccessTokenAndRefreshToken(final String token) {
- // 1. Claim을 파싱하는 과정에서 유효기간이 지나면 예외 발생
- Long userId = tokenProvider.extractUserId(token);
+ Long userId = tokenService.extractUserId(token);
+ RefreshToken refreshToken = tokenService.findRefreshToken(userId);
- // 2. 만약 해당 ID에 해당하는 리프레시 토큰이 redis에 없으면 재로그인
- RefreshToken refreshToken = tokenRepository.findRefreshToken(userId).orElseThrow(() -> {
- throw new BusinessException(ErrorCode.RELOGIN_REQUIRED);
- });
-
- // 3. Redis에 있는 토큰과 내가 refresh를 위해 가져온 토큰이 다르면 변조됐다고 판단 후 재로그인
checkAbnormalUserAccess(token, userId, refreshToken);
User user = userReader.findById(refreshToken.getUserId());
+ TokenDto tokenDto = tokenService.createToken(user);
- String newAccessToken = tokenProvider.createAccessToken(refreshToken.getUserId(), user.getRoleType());
- RefreshTokenDto newRefreshToken = tokenProvider.createRefreshToken(refreshToken.getUserId(),
- user.getRoleType());
- tokenRepository.saveRefreshToken(new RefreshToken(newRefreshToken.getToken(), user.getId()),
- newRefreshToken.getExpiredAt());
-
- return TokenResponseDto.of(newAccessToken, newRefreshToken.getToken());
+ return TokenResponseDto.of(tokenDto.accessToken(), tokenDto.refreshToken().getToken());
}
public void logout(final Long userId, final String accessToken) {
- tokenRepository.makeAccessTokenDisabled(accessToken);
- tokenRepository.removeRefreshToken(userId);
-
+ tokenService.makeAccessTokenDisabled(accessToken);
+ tokenService.removeRefreshToken(userId);
fcmTokenRepository.deleteToken(userId.toString());
}
@@ -128,10 +97,9 @@ public void withdraw(final Long userId, final String accessToken) {
User user = userReader.findById(userId);
user.remove();
-
- tokenRepository.makeAccessTokenDisabled(accessToken);
- tokenRepository.removeRefreshToken(userId);
-
+
+ tokenService.makeAccessTokenDisabled(accessToken);
+ tokenService.removeRefreshToken(userId);
fcmTokenRepository.deleteToken(userId.toString());
}
@@ -186,18 +154,10 @@ private void checkPassword(final String password, final String originPassword) {
}
}
- private void checkDuplicatedEmail(AuthSignupRequestDto authSignupRequestDto) {
-
- if (userReader.existsByEmail(authSignupRequestDto.getEmail())) {
- throw new BusinessException(ErrorCode.DUPLICATE_EMAIL);
- }
- }
-
private void checkAbnormalUserAccess(final String token, final Long userId, final RefreshToken refreshToken) {
if (!refreshToken.getRefreshToken().equals(token)) {
-
- tokenRepository.removeRefreshToken(userId);
+ tokenService.removeRefreshToken(userId);
throw new BusinessException(ErrorCode.ABNORMAL_ACCESS);
}
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/LoginClientFactory.java b/core/core-api/src/main/java/cmc/mellyserver/auth/LoginClientFactory.java
index 9085bbaa..11307667 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/LoginClientFactory.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/LoginClientFactory.java
@@ -1,21 +1,24 @@
package cmc.mellyserver.auth;
-import cmc.mellyserver.clientauth.LoginClient;
-import cmc.mellyserver.dbcore.user.enums.Provider;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Component;
-
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.springframework.stereotype.Component;
+
+import cmc.mellyserver.clientauth.LoginClient;
+import cmc.mellyserver.dbcore.user.enums.Provider;
+import lombok.RequiredArgsConstructor;
+
@Component
@RequiredArgsConstructor
public class LoginClientFactory {
- // LoginClient 타입의 모든게 다 들어온다.
private final List loginClientList;
+ /*
+ 한번 생성된 Client 객체를 런타임 내에 메모리상에 캐싱합니다
+ */
private final Map factoryCache = new HashMap<>();
public LoginClient find(Provider provider) {
@@ -24,12 +27,6 @@ public LoginClient find(Provider provider) {
return loginClient;
}
- // 이 부분이 중요하다.
- // loginClient = loginClientList.stream()
- // .filter(v -> v.supports(provider))
- // .findFirst()
- // .orElseThrow();
-
loginClient = loginClientList.stream()
.filter(client -> client.supports(provider.name()))
.findFirst()
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/OAuthService.java b/core/core-api/src/main/java/cmc/mellyserver/auth/OAuthService.java
index 216b2349..6a6f5bb4 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/OAuthService.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/OAuthService.java
@@ -1,5 +1,10 @@
package cmc.mellyserver.auth;
+import java.util.Objects;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
import cmc.mellyserver.auth.controller.dto.request.OAuthSignupRequestDto;
import cmc.mellyserver.auth.controller.dto.response.OAuthResponseDto;
import cmc.mellyserver.auth.controller.dto.response.OAuthSignupResponseDto;
@@ -17,10 +22,6 @@
import cmc.mellyserver.domain.user.UserWriter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.Objects;
@Slf4j
@Service
@@ -42,23 +43,11 @@ public class OAuthService {
@Transactional
public OAuthResponseDto login(OAuthLoginRequestDto oAuthLoginRequestDto) {
- LoginClient loginClient = loginClientFactory.find(oAuthLoginRequestDto.getProvider()); // Provider에
- // 맞는
- // 리소스
- // 서버
- // 통신
- // 클라이언트
- // 선택
- LoginClientResult socialUser = loginClient.getUserData(oAuthLoginRequestDto.getAccessToken()); // 실제
- // 통신
- // 후
- // 유저
- // 데이터
- // 반환
-
- User user = userReader.findBySocialId(socialUser.uid()); // 기존에 회원가입한 이력 있는지 체크
-
- // 회원가입이 필요한 유저라면 회원가입 로직으로 넘긴다
+ LoginClient loginClient = loginClientFactory.find(oAuthLoginRequestDto.getProvider());
+ LoginClientResult socialUser = loginClient.getUserData(oAuthLoginRequestDto.getAccessToken());
+
+ User user = userReader.findBySocialId(socialUser.uid());
+
if (Objects.isNull(user)) {
return new OAuthResponseDto(null, new OAuthSignupResponseDto(socialUser.uid(), socialUser.provider()));
}
@@ -66,7 +55,7 @@ public OAuthResponseDto login(OAuthLoginRequestDto oAuthLoginRequestDto) {
String accessToken = tokenProvider.createAccessToken(user.getId(), user.getRoleType());
RefreshTokenDto refreshToken = tokenProvider.createRefreshToken(user.getId(), user.getRoleType());
tokenRepository.saveRefreshToken(new RefreshToken(refreshToken.getToken(), user.getId()),
- refreshToken.getExpiredAt());
+ refreshToken.getExpiredAt());
storeFCMToken(user, oAuthLoginRequestDto.getFcmToken());
@@ -77,19 +66,15 @@ public TokenResponseDto signup(OAuthSignupRequestDto oAuthSignupRequestDto) {
User user = userWriter
.save(User.oauthUser(oAuthSignupRequestDto.getSocialId(), oAuthSignupRequestDto.getProvider(),
- oAuthSignupRequestDto.getEmail(), oAuthSignupRequestDto.getNickname(),
- oAuthSignupRequestDto.getAgeGroup(), oAuthSignupRequestDto.getGender()));
-
- String accessToken = tokenProvider.createAccessToken(user.getId(), user.getRoleType()); // Access
- // Token
- // 생성
- RefreshTokenDto refreshToken = tokenProvider.createRefreshToken(user.getId(), user.getRoleType()); // Refresh
- // Token
- // 생성
+ oAuthSignupRequestDto.getEmail(), oAuthSignupRequestDto.getNickname(),
+ oAuthSignupRequestDto.getAgeGroup(), oAuthSignupRequestDto.getGender()));
+
+ String accessToken = tokenProvider.createAccessToken(user.getId(), user.getRoleType());
+ RefreshTokenDto refreshToken = tokenProvider.createRefreshToken(user.getId(), user.getRoleType());
tokenRepository.saveRefreshToken(new RefreshToken(refreshToken.getToken(), user.getId()),
- refreshToken.getExpiredAt()); // Refresh Token을 Redis에 저장
+ refreshToken.getExpiredAt());
- storeFCMToken(user, oAuthSignupRequestDto.getFcmToken()); // FCM 토큰 Redis에 저장
+ storeFCMToken(user, oAuthSignupRequestDto.getFcmToken());
return TokenResponseDto.of(accessToken, refreshToken.getToken());
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/config/SecurityConfig.java b/core/core-api/src/main/java/cmc/mellyserver/auth/config/SecurityConfig.java
index a9925df2..fa7091e3 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/config/SecurityConfig.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/config/SecurityConfig.java
@@ -1,11 +1,5 @@
package cmc.mellyserver.auth.config;
-import cmc.mellyserver.auth.common.filter.JwtExceptionFilter;
-import cmc.mellyserver.auth.common.filter.RestAuthenticationEntryPoint;
-import cmc.mellyserver.auth.common.filter.TokenAccessDeniedHandler;
-import cmc.mellyserver.auth.common.filter.TokenAuthenticationFilter;
-import cmc.mellyserver.auth.token.JwtTokenProvider;
-import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.RedisTemplate;
@@ -21,6 +15,13 @@
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
+import cmc.mellyserver.auth.common.filter.JwtExceptionFilter;
+import cmc.mellyserver.auth.common.filter.RestAuthenticationEntryPoint;
+import cmc.mellyserver.auth.common.filter.TokenAccessDeniedHandler;
+import cmc.mellyserver.auth.common.filter.TokenAuthenticationFilter;
+import cmc.mellyserver.auth.token.JwtTokenProvider;
+import lombok.RequiredArgsConstructor;
+
@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
@@ -45,14 +46,17 @@ public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Excepti
.cors(CorsConfigurer::disable)
.httpBasic(HttpBasicConfigurer::disable)
.sessionManagement(
- (sessionManagement) -> sessionManagement.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
+ (sessionManagement) -> sessionManagement.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.exceptionHandling(
- (authenticationManager) -> authenticationManager.authenticationEntryPoint(authenticationEntryPoint)
- .accessDeniedHandler(accessDeniedHandler))
+ (authenticationManager) -> authenticationManager.authenticationEntryPoint(authenticationEntryPoint)
+ .accessDeniedHandler(accessDeniedHandler))
.authorizeHttpRequests(authorize -> authorize.requestMatchers(WhiteList.WHITE_LIST)
.permitAll()
.requestMatchers(HttpMethod.OPTIONS, "/**")
- .permitAll())
+ .permitAll()
+ .anyRequest()
+ .authenticated()
+ )
.addFilterBefore(authenticationFilter, UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(jwtExceptionFilter, TokenAuthenticationFilter.class);
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/AuthSignupRequestDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/AuthSignupRequestDto.java
index c09a24f9..9112c0e4 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/AuthSignupRequestDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/AuthSignupRequestDto.java
@@ -1,12 +1,14 @@
package cmc.mellyserver.auth.dto.request;
+import org.hibernate.validator.constraints.Length;
+
+import cmc.mellyserver.dbcore.user.User;
import cmc.mellyserver.dbcore.user.enums.AgeGroup;
import cmc.mellyserver.dbcore.user.enums.Gender;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.Pattern;
import lombok.Builder;
import lombok.Data;
-import org.hibernate.validator.constraints.Length;
@Data
public class AuthSignupRequestDto {
@@ -28,7 +30,7 @@ public class AuthSignupRequestDto {
@Builder
public AuthSignupRequestDto(String email, String password, String nickname, AgeGroup ageGroup, Gender gender,
- String fcmToken) {
+ String fcmToken) {
this.email = email;
this.password = password;
this.nickname = nickname;
@@ -37,4 +39,8 @@ public AuthSignupRequestDto(String email, String password, String nickname, AgeG
this.fcmToken = fcmToken;
}
+ public User toEntity() {
+ return null;
+ }
+
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenDto.java
new file mode 100644
index 00000000..12e363e6
--- /dev/null
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenDto.java
@@ -0,0 +1,10 @@
+package cmc.mellyserver.auth.token;
+
+import cmc.mellyserver.auth.dto.response.RefreshTokenDto;
+
+public record TokenDto(
+ String accessToken,
+ RefreshTokenDto refreshToken
+) {
+
+}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenService.java b/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenService.java
new file mode 100644
index 00000000..f8b7e151
--- /dev/null
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenService.java
@@ -0,0 +1,47 @@
+package cmc.mellyserver.auth.token;
+
+import org.springframework.stereotype.Component;
+
+import cmc.mellyserver.auth.dto.response.RefreshTokenDto;
+import cmc.mellyserver.auth.repository.AuthTokenRepository;
+import cmc.mellyserver.auth.repository.RefreshToken;
+import cmc.mellyserver.dbcore.user.User;
+import cmc.mellyserver.support.exception.BusinessException;
+import cmc.mellyserver.support.exception.ErrorCode;
+import lombok.RequiredArgsConstructor;
+
+@Component
+@RequiredArgsConstructor
+public class TokenService {
+
+ private final TokenProvider tokenProvider;
+
+ private final AuthTokenRepository tokenRepository;
+
+ public TokenDto createToken(User user) {
+ String accessToken = tokenProvider.createAccessToken(user.getId(), user.getRoleType());
+ RefreshTokenDto refreshToken = tokenProvider.createRefreshToken(user.getId(), user.getRoleType());
+ tokenRepository.saveRefreshToken(new RefreshToken(refreshToken.getToken(), user.getId()),
+ refreshToken.getExpiredAt());
+ return new TokenDto(accessToken, refreshToken);
+ }
+
+ public RefreshToken findRefreshToken(Long userId) {
+ return tokenRepository.findRefreshToken(userId).orElseThrow(() -> {
+ throw new BusinessException(ErrorCode.RELOGIN_REQUIRED);
+ });
+ }
+
+ public void makeAccessTokenDisabled(String accessToken) {
+ tokenRepository.makeAccessTokenDisabled(accessToken);
+ }
+
+ public void removeRefreshToken(Long userId) {
+ tokenRepository.removeRefreshToken(userId);
+ }
+
+ public long extractUserId(String accessToken) {
+ return tokenProvider.extractUserId(accessToken);
+ }
+
+}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/common/aop/lock/OptimisticLockAop.java b/core/core-api/src/main/java/cmc/mellyserver/common/aop/lock/OptimisticLockAop.java
deleted file mode 100644
index c39d7ea4..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/common/aop/lock/OptimisticLockAop.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package cmc.mellyserver.common.aop.lock;
-
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.springframework.dao.CannotAcquireLockException;
-import org.springframework.orm.ObjectOptimisticLockingFailureException;
-import org.springframework.stereotype.Component;
-
-import jakarta.persistence.OptimisticLockException;
-import lombok.extern.slf4j.Slf4j;
-
-@Aspect
-@Slf4j
-@Component
-public class OptimisticLockAop {
-
- private static int RETRY_MAX_COUNT = 3;
-
- @Around("@annotation(cmc.mellyserver.common.aop.lock.annotation.OptimisticLock)")
- public Object doOneMoreRetryTransactionIfOptimisticLockExceptionThrow(ProceedingJoinPoint joinPoint)
- throws Throwable {
-
- Exception exceptionHolder = null;
-
- for (int retryCount = 0; retryCount <= RETRY_MAX_COUNT; retryCount++) {
-
- try {
- return joinPoint.proceed();
-
- } catch (OptimisticLockException | ObjectOptimisticLockingFailureException | CannotAcquireLockException e) {
-
- exceptionHolder = e;
- }
- }
-
- // 3번 반복 후에도 실패하면 예외 반환
- throw exceptionHolder;
- }
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/common/aop/lock/annotation/OptimisticLock.java b/core/core-api/src/main/java/cmc/mellyserver/common/aop/lock/annotation/OptimisticLock.java
deleted file mode 100644
index 832d31ce..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/common/aop/lock/annotation/OptimisticLock.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package cmc.mellyserver.common.aop.lock.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface OptimisticLock {
-
-}
\ No newline at end of file
diff --git a/core/core-api/src/main/java/cmc/mellyserver/common/event/SignupCompletedEventHandler.java b/core/core-api/src/main/java/cmc/mellyserver/common/event/SignupCompletedEventHandler.java
index 80a5b998..bd21323b 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/common/event/SignupCompletedEventHandler.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/common/event/SignupCompletedEventHandler.java
@@ -1,17 +1,18 @@
package cmc.mellyserver.common.event;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.event.TransactionPhase;
+import org.springframework.transaction.event.TransactionalEventListener;
+
import cmc.mellyserver.dbcore.user.User;
import cmc.mellyserver.dbcore.user.UserRepository;
-import cmc.mellyserver.domain.comment.event.SignupCompletedEvent;
+import cmc.mellyserver.domain.comment.event.SignupEvent;
import cmc.mellyserver.mail.EmailService;
import cmc.mellyserver.support.exception.BusinessException;
import cmc.mellyserver.support.exception.ErrorCode;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.event.TransactionPhase;
-import org.springframework.transaction.event.TransactionalEventListener;
@Slf4j
@Component
@@ -26,7 +27,7 @@ public class SignupCompletedEventHandler {
@Async
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
- public void signupEvent(SignupCompletedEvent event) {
+ public void signupEvent(SignupEvent event) {
User user = userRepository.findById(event.getUserId())
.orElseThrow(() -> new BusinessException(ErrorCode.USER_NOT_FOUND));
diff --git a/core/core-api/src/main/java/cmc/mellyserver/config/cache/CacheConfig.java b/core/core-api/src/main/java/cmc/mellyserver/config/cache/CacheConfig.java
index c004f7db..b087cd7f 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/config/cache/CacheConfig.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/config/cache/CacheConfig.java
@@ -4,13 +4,16 @@
import java.util.HashMap;
import java.util.Map;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
+import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
@@ -25,8 +28,19 @@
@Configuration
public class CacheConfig {
- @Autowired
- RedisConnectionFactory redisConnectionFactory;
+ @Value("${spring.redis.cache.host}")
+ private String host;
+
+ @Value("${spring.redis.cache.port}")
+ private int port;
+
+ @Bean(name = "redisCacheConnectionFactory")
+ RedisConnectionFactory redisCacheConnectionFactory() {
+ RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
+ redisStandaloneConfiguration.setHostName(host);
+ redisStandaloneConfiguration.setPort(port);
+ return new LettuceConnectionFactory(redisStandaloneConfiguration);
+ }
/*
설정 종류
@@ -54,7 +68,8 @@ public ObjectMapper objectMapper() {
- Group 데이터도 수정이 적을 것으로 예상되어 1시간으로 TTL을 설정했습니다.
*/
@Bean
- public RedisCacheManager redisCacheManager() {
+ public RedisCacheManager redisCacheManager(
+ @Qualifier("redisCacheConnectionFactory") RedisConnectionFactory connectionFactory) {
RedisCacheConfiguration defaultConfig = RedisCacheConfiguration.defaultCacheConfig()
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(
@@ -66,7 +81,7 @@ public RedisCacheManager redisCacheManager() {
redisCacheConfigMap.put(CacheNames.FEED, defaultConfig.entryTtl(Duration.ofMinutes(1)));
redisCacheConfigMap.put(CacheNames.GROUP, defaultConfig.entryTtl(Duration.ofHours(1)));
- return RedisCacheManager.builder(redisConnectionFactory)
+ return RedisCacheManager.builder(connectionFactory)
.withInitialCacheConfigurations(redisCacheConfigMap)
.build();
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/group/dto/request/GroupCreateRequest.java b/core/core-api/src/main/java/cmc/mellyserver/controller/group/dto/request/GroupCreateRequest.java
index 6ebdef6b..3c6544f3 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/group/dto/request/GroupCreateRequest.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/group/dto/request/GroupCreateRequest.java
@@ -1,6 +1,6 @@
package cmc.mellyserver.controller.group.dto.request;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AccessLevel;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/group/dto/request/GroupUpdateRequest.java b/core/core-api/src/main/java/cmc/mellyserver/controller/group/dto/request/GroupUpdateRequest.java
index ebf8fe3c..036f3230 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/group/dto/request/GroupUpdateRequest.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/group/dto/request/GroupUpdateRequest.java
@@ -1,6 +1,6 @@
package cmc.mellyserver.controller.group.dto.request;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import jakarta.validation.constraints.Size;
import lombok.Builder;
import lombok.Data;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/group/dto/response/GroupCreateResponse.java b/core/core-api/src/main/java/cmc/mellyserver/controller/group/dto/response/GroupCreateResponse.java
index eb9116bf..25b36790 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/group/dto/response/GroupCreateResponse.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/group/dto/response/GroupCreateResponse.java
@@ -1,6 +1,6 @@
package cmc.mellyserver.controller.group.dto.response;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/MemoryController.java b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/MemoryController.java
index 182fc792..eb328d54 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/MemoryController.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/MemoryController.java
@@ -22,7 +22,7 @@
import cmc.mellyserver.controller.memory.dto.request.MemoryCreateRequest;
import cmc.mellyserver.controller.memory.dto.request.MemoryUpdateRequest;
import cmc.mellyserver.controller.memory.dto.response.MemoryDetailResponse;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.domain.group.GroupService;
import cmc.mellyserver.domain.group.dto.response.GroupListLoginUserParticipatedResponse;
import cmc.mellyserver.domain.memory.MemoryService;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/request/MemoryCreateRequest.java b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/request/MemoryCreateRequest.java
index fd4e403f..b942e903 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/request/MemoryCreateRequest.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/request/MemoryCreateRequest.java
@@ -1,16 +1,18 @@
package cmc.mellyserver.controller.memory.dto.request;
-import cmc.mellyserver.dbcore.memory.enums.OpenType;
+import java.time.LocalDate;
+import java.util.List;
+
+import org.hibernate.validator.constraints.Length;
+
import com.fasterxml.jackson.annotation.JsonFormat;
+
+import cmc.mellyserver.dbcore.memory.OpenType;
import jakarta.validation.constraints.NotNull;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.hibernate.validator.constraints.Length;
-
-import java.time.LocalDate;
-import java.util.List;
@Data
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@@ -45,7 +47,7 @@ public class MemoryCreateRequest {
@Builder
public MemoryCreateRequest(Double lat, Double lng, String placeName, String placeCategory, String title,
- String content, List keyword, Long groupId, OpenType openType, LocalDate visitedDate, Long star) {
+ String content, List keyword, Long groupId, OpenType openType, LocalDate visitedDate, Long star) {
this.lat = lat;
this.lng = lng;
this.placeName = placeName;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/request/MemoryUpdateRequest.java b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/request/MemoryUpdateRequest.java
index 2519a62f..46ed6e03 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/request/MemoryUpdateRequest.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/request/MemoryUpdateRequest.java
@@ -1,15 +1,16 @@
package cmc.mellyserver.controller.memory.dto.request;
-import cmc.mellyserver.dbcore.memory.enums.OpenType;
+import java.time.LocalDate;
+import java.util.List;
+
import com.fasterxml.jackson.annotation.JsonFormat;
+
+import cmc.mellyserver.dbcore.memory.OpenType;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.time.LocalDate;
-import java.util.List;
-
@Data
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class MemoryUpdateRequest {
@@ -33,7 +34,7 @@ public class MemoryUpdateRequest {
@Builder
public MemoryUpdateRequest(String title, String content, List keyword, Long groupId, OpenType openType,
- LocalDate visitedDate, Long star, List deleteImageList) {
+ LocalDate visitedDate, Long star, List deleteImageList) {
this.title = title;
this.content = content;
this.keyword = keyword;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GetMemoryByMemoryIdResponse.java b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GetMemoryByMemoryIdResponse.java
index dfb6d19a..eb067d2d 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GetMemoryByMemoryIdResponse.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GetMemoryByMemoryIdResponse.java
@@ -1,14 +1,15 @@
package cmc.mellyserver.controller.memory.dto.response;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
-import cmc.mellyserver.domain.memory.query.dto.ImageDto;
+import java.time.LocalDateTime;
+import java.util.List;
+
import com.fasterxml.jackson.annotation.JsonFormat;
+
+import cmc.mellyserver.dbcore.group.GroupType;
+import cmc.mellyserver.domain.memory.query.dto.ImageDto;
import lombok.AllArgsConstructor;
import lombok.Data;
-import java.time.LocalDateTime;
-import java.util.List;
-
@Data
@AllArgsConstructor
public class GetMemoryByMemoryIdResponse {
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GetMemoryForPlaceResponse.java b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GetMemoryForPlaceResponse.java
index c0d20560..bf7c5b0e 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GetMemoryForPlaceResponse.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GetMemoryForPlaceResponse.java
@@ -1,14 +1,15 @@
package cmc.mellyserver.controller.memory.dto.response;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
-import cmc.mellyserver.domain.memory.query.dto.ImageDto;
+import java.time.LocalDateTime;
+import java.util.List;
+
import com.fasterxml.jackson.annotation.JsonFormat;
+
+import cmc.mellyserver.dbcore.group.GroupType;
+import cmc.mellyserver.domain.memory.query.dto.ImageDto;
import lombok.AllArgsConstructor;
import lombok.Data;
-import java.time.LocalDateTime;
-import java.util.List;
-
@Data
@AllArgsConstructor
public class GetMemoryForPlaceResponse {
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GetOtherMemoryForPlaceResponse.java b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GetOtherMemoryForPlaceResponse.java
index fe887a83..d147a2fc 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GetOtherMemoryForPlaceResponse.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GetOtherMemoryForPlaceResponse.java
@@ -1,14 +1,15 @@
package cmc.mellyserver.controller.memory.dto.response;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
-import cmc.mellyserver.domain.memory.query.dto.ImageDto;
+import java.time.LocalDateTime;
+import java.util.List;
+
import com.fasterxml.jackson.annotation.JsonFormat;
+
+import cmc.mellyserver.dbcore.group.GroupType;
+import cmc.mellyserver.domain.memory.query.dto.ImageDto;
import lombok.AllArgsConstructor;
import lombok.Data;
-import java.time.LocalDateTime;
-import java.util.List;
-
@Data
@AllArgsConstructor
public class GetOtherMemoryForPlaceResponse {
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GroupListForSaveMemoryResponse.java b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GroupListForSaveMemoryResponse.java
index 592c4d0e..3df84f4c 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GroupListForSaveMemoryResponse.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/GroupListForSaveMemoryResponse.java
@@ -1,6 +1,6 @@
package cmc.mellyserver.controller.memory.dto.response;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.domain.group.query.dto.GroupLoginUserParticipatedResponseDto;
import lombok.Builder;
import lombok.Data;
@@ -22,7 +22,7 @@ public GroupListForSaveMemoryResponse(Long groupId, String groupName, GroupType
}
public static GroupListForSaveMemoryResponse of(
- GroupLoginUserParticipatedResponseDto groupLoginUserParticipatedResponseDto) {
+ GroupLoginUserParticipatedResponseDto groupLoginUserParticipatedResponseDto) {
return GroupListForSaveMemoryResponse.builder()
.groupId(groupLoginUserParticipatedResponseDto.getGroupId())
.groupName(groupLoginUserParticipatedResponseDto.getGroupName())
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/MemoryDetailResponse.java b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/MemoryDetailResponse.java
index 4a4bb572..dcbacc25 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/MemoryDetailResponse.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/MemoryDetailResponse.java
@@ -1,16 +1,17 @@
package cmc.mellyserver.controller.memory.dto.response;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import java.time.LocalDate;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.domain.memory.query.dto.ImageDto;
import cmc.mellyserver.domain.memory.query.dto.KeywordDto;
import cmc.mellyserver.domain.memory.query.dto.MemoryDetailResponseDto;
-import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Builder;
import lombok.Data;
-import java.time.LocalDate;
-import java.util.List;
-
@Data
public class MemoryDetailResponse {
@@ -48,8 +49,8 @@ public class MemoryDetailResponse {
@Builder
public MemoryDetailResponse(Long placeId, String placeName, Long memoryId, List imageDtos, String title,
- String content, GroupType groupType, int groupIcon, String groupName, Long stars, List keyword,
- Long groupId, LocalDate visitedDate) {
+ String content, GroupType groupType, int groupIcon, String groupName, Long stars, List keyword,
+ Long groupId, LocalDate visitedDate) {
this.placeId = placeId;
this.placeName = placeName;
this.memoryId = memoryId;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/MemoryResponse.java b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/MemoryResponse.java
index 51ec2c7a..e3cf77f4 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/MemoryResponse.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/dto/response/MemoryResponse.java
@@ -1,16 +1,17 @@
package cmc.mellyserver.controller.memory.dto.response;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import java.time.LocalDate;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.domain.memory.query.dto.ImageDto;
import cmc.mellyserver.domain.memory.query.dto.KeywordDto;
import cmc.mellyserver.domain.memory.query.dto.MemoryResponseDto;
-import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Builder;
import lombok.Data;
-import java.time.LocalDate;
-import java.util.List;
-
@Data
public class MemoryResponse {
@@ -48,8 +49,8 @@ public class MemoryResponse {
@Builder
public MemoryResponse(Long placeId, String placeName, Long memoryId, List imageDtos, String title,
- String content, GroupType groupType, String groupName, Long stars, List keyword,
- LocalDate visitedDate) {
+ String content, GroupType groupType, String groupName, Long stars, List keyword,
+ LocalDate visitedDate) {
this.placeId = placeId;
this.placeName = placeName;
this.memoryId = memoryId;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/place/PlaceController.java b/core/core-api/src/main/java/cmc/mellyserver/controller/place/PlaceController.java
index 642ad3e0..19d6ac4c 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/place/PlaceController.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/place/PlaceController.java
@@ -16,7 +16,7 @@
import cmc.mellyserver.controller.place.dto.PlaceAssembler;
import cmc.mellyserver.controller.place.dto.request.PlaceSimpleRequest;
import cmc.mellyserver.controller.place.dto.response.PlaceResponse;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.dbcore.place.Position;
import cmc.mellyserver.domain.memory.query.dto.FindPlaceByMemoryTitleResponseDto;
import cmc.mellyserver.domain.place.PlaceService;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/place/dto/response/MarkedPlaceReponse.java b/core/core-api/src/main/java/cmc/mellyserver/controller/place/dto/response/MarkedPlaceReponse.java
index 6755e773..3b2f1698 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/place/dto/response/MarkedPlaceReponse.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/place/dto/response/MarkedPlaceReponse.java
@@ -1,6 +1,6 @@
package cmc.mellyserver.controller.place.dto.response;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.dbcore.place.Position;
import lombok.Builder;
import lombok.Data;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/scrap/dto/request/ScrapRequest.java b/core/core-api/src/main/java/cmc/mellyserver/controller/scrap/dto/request/ScrapRequest.java
index 197edbcf..50138de9 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/scrap/dto/request/ScrapRequest.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/scrap/dto/request/ScrapRequest.java
@@ -1,6 +1,6 @@
package cmc.mellyserver.controller.scrap.dto.request;
-import cmc.mellyserver.dbcore.scrap.enums.ScrapType;
+import cmc.mellyserver.dbcore.scrap.ScrapType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/user/UserController.java b/core/core-api/src/main/java/cmc/mellyserver/controller/user/UserController.java
index 5e53620d..eb48f86e 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/user/UserController.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/user/UserController.java
@@ -21,8 +21,8 @@
import cmc.mellyserver.controller.user.dto.request.ProfileUpdateRequest;
import cmc.mellyserver.controller.user.dto.response.PlaceScrapCountResponse;
import cmc.mellyserver.controller.user.dto.response.ProfileResponse;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
-import cmc.mellyserver.dbcore.scrap.enums.ScrapType;
+import cmc.mellyserver.dbcore.group.GroupType;
+import cmc.mellyserver.dbcore.scrap.ScrapType;
import cmc.mellyserver.domain.group.GroupService;
import cmc.mellyserver.domain.group.dto.response.GroupListLoginUserParticipatedResponse;
import cmc.mellyserver.domain.memory.MemoryService;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/user/dto/response/GroupLoginUserParticipatedResponse.java b/core/core-api/src/main/java/cmc/mellyserver/controller/user/dto/response/GroupLoginUserParticipatedResponse.java
index 6d6c5685..69d5b226 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/user/dto/response/GroupLoginUserParticipatedResponse.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/user/dto/response/GroupLoginUserParticipatedResponse.java
@@ -2,7 +2,7 @@
import java.util.List;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.dbcore.user.GroupMemberResponseDto;
import lombok.Builder;
import lombok.Data;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/user/dto/response/PlaceScrapCountResponse.java b/core/core-api/src/main/java/cmc/mellyserver/controller/user/dto/response/PlaceScrapCountResponse.java
index 1b7fde03..1fbce7a8 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/user/dto/response/PlaceScrapCountResponse.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/user/dto/response/PlaceScrapCountResponse.java
@@ -1,6 +1,6 @@
package cmc.mellyserver.controller.user.dto.response;
-import cmc.mellyserver.dbcore.scrap.enums.ScrapType;
+import cmc.mellyserver.dbcore.scrap.ScrapType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/user/dto/response/UserCreatedMemoryListResponse.java b/core/core-api/src/main/java/cmc/mellyserver/controller/user/dto/response/UserCreatedMemoryListResponse.java
index e339fcc4..5532e9df 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/user/dto/response/UserCreatedMemoryListResponse.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/user/dto/response/UserCreatedMemoryListResponse.java
@@ -1,14 +1,15 @@
package cmc.mellyserver.controller.user.dto.response;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
-import cmc.mellyserver.domain.memory.query.dto.ImageDto;
+import java.time.LocalDateTime;
+import java.util.List;
+
import com.fasterxml.jackson.annotation.JsonFormat;
+
+import cmc.mellyserver.dbcore.group.GroupType;
+import cmc.mellyserver.domain.memory.query.dto.ImageDto;
import lombok.AllArgsConstructor;
import lombok.Data;
-import java.time.LocalDateTime;
-import java.util.List;
-
@Data
@AllArgsConstructor
public class UserCreatedMemoryListResponse {
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/comment/event/SignupCompletedEvent.java b/core/core-api/src/main/java/cmc/mellyserver/domain/comment/event/SignupEvent.java
similarity index 81%
rename from core/core-api/src/main/java/cmc/mellyserver/domain/comment/event/SignupCompletedEvent.java
rename to core/core-api/src/main/java/cmc/mellyserver/domain/comment/event/SignupEvent.java
index 2e506d15..961d72a3 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/comment/event/SignupCompletedEvent.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/comment/event/SignupEvent.java
@@ -5,7 +5,7 @@
@Data
@AllArgsConstructor
-public class SignupCompletedEvent {
+public class SignupEvent {
private Long userId;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/group/dto/request/CreateGroupRequestDto.java b/core/core-api/src/main/java/cmc/mellyserver/domain/group/dto/request/CreateGroupRequestDto.java
index 76732e0e..d23ea6e2 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/group/dto/request/CreateGroupRequestDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/group/dto/request/CreateGroupRequestDto.java
@@ -1,7 +1,7 @@
package cmc.mellyserver.domain.group.dto.request;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.dbcore.group.UserGroup;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
import lombok.Builder;
import lombok.Data;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/group/dto/request/UpdateGroupRequestDto.java b/core/core-api/src/main/java/cmc/mellyserver/domain/group/dto/request/UpdateGroupRequestDto.java
index 0dbb9ef5..d07cf906 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/group/dto/request/UpdateGroupRequestDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/group/dto/request/UpdateGroupRequestDto.java
@@ -1,6 +1,6 @@
package cmc.mellyserver.domain.group.dto.request;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import lombok.Builder;
import lombok.Data;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/group/query/dto/GroupDetailResponseDto.java b/core/core-api/src/main/java/cmc/mellyserver/domain/group/query/dto/GroupDetailResponseDto.java
index 48810fdd..4ba1f0e4 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/group/query/dto/GroupDetailResponseDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/group/query/dto/GroupDetailResponseDto.java
@@ -3,8 +3,8 @@
import java.io.Serializable;
import java.util.List;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.dbcore.group.UserGroup;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
import cmc.mellyserver.dbcore.user.GroupMemberResponseDto;
import lombok.Builder;
import lombok.Data;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/group/query/dto/GroupListForSaveMemoryResponseDto.java b/core/core-api/src/main/java/cmc/mellyserver/domain/group/query/dto/GroupListForSaveMemoryResponseDto.java
index f71f2190..75f56167 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/group/query/dto/GroupListForSaveMemoryResponseDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/group/query/dto/GroupListForSaveMemoryResponseDto.java
@@ -1,6 +1,6 @@
package cmc.mellyserver.domain.group.query.dto;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/group/query/dto/GroupLoginUserParticipatedResponseDto.java b/core/core-api/src/main/java/cmc/mellyserver/domain/group/query/dto/GroupLoginUserParticipatedResponseDto.java
index 6488f9ac..bd180ce4 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/group/query/dto/GroupLoginUserParticipatedResponseDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/group/query/dto/GroupLoginUserParticipatedResponseDto.java
@@ -1,7 +1,7 @@
package cmc.mellyserver.domain.group.query.dto;
import cmc.mellyserver.dbcore.group.GroupAndUser;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/memory/MemoryReader.java b/core/core-api/src/main/java/cmc/mellyserver/domain/memory/MemoryReader.java
index 8e23a7fa..5605a44a 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/memory/MemoryReader.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/memory/MemoryReader.java
@@ -7,7 +7,7 @@
import org.springframework.data.domain.Slice;
import org.springframework.stereotype.Component;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.dbcore.memory.Memory;
import cmc.mellyserver.dbcore.memory.MemoryRepository;
import cmc.mellyserver.domain.memory.dto.response.MemoryListResponse;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/memory/MemoryService.java b/core/core-api/src/main/java/cmc/mellyserver/domain/memory/MemoryService.java
index 33db11c1..453b24cc 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/memory/MemoryService.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/memory/MemoryService.java
@@ -10,7 +10,7 @@
import cmc.mellyserver.common.aop.place.ValidatePlaceExisted;
import cmc.mellyserver.common.constants.CacheNames;
import cmc.mellyserver.common.event.MemoryCreatedEvent;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.dbcore.memory.Memory;
import cmc.mellyserver.domain.memory.dto.request.CreateMemoryRequestDto;
import cmc.mellyserver.domain.memory.dto.request.UpdateMemoryRequestDto;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/memory/dto/request/CreateMemoryRequestDto.java b/core/core-api/src/main/java/cmc/mellyserver/domain/memory/dto/request/CreateMemoryRequestDto.java
index 47ab8969..441f5e31 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/memory/dto/request/CreateMemoryRequestDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/memory/dto/request/CreateMemoryRequestDto.java
@@ -6,7 +6,7 @@
import org.springframework.web.multipart.MultipartFile;
import cmc.mellyserver.dbcore.memory.Memory;
-import cmc.mellyserver.dbcore.memory.enums.OpenType;
+import cmc.mellyserver.dbcore.memory.OpenType;
import cmc.mellyserver.dbcore.place.Place;
import cmc.mellyserver.dbcore.place.Position;
import lombok.Builder;
@@ -69,7 +69,6 @@ public Memory toMemory() {
return Memory.builder()
.title(title)
.userId(userId)
- .keyword(keyword)
.content(content)
.groupId(groupId)
.openType(openType)
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/memory/dto/request/UpdateMemoryRequestDto.java b/core/core-api/src/main/java/cmc/mellyserver/domain/memory/dto/request/UpdateMemoryRequestDto.java
index d7316654..3025ae97 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/memory/dto/request/UpdateMemoryRequestDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/memory/dto/request/UpdateMemoryRequestDto.java
@@ -1,13 +1,14 @@
package cmc.mellyserver.domain.memory.dto.request;
-import cmc.mellyserver.dbcore.memory.enums.OpenType;
-import lombok.Builder;
-import lombok.Data;
-import org.springframework.web.multipart.MultipartFile;
-
import java.time.LocalDate;
import java.util.List;
+import org.springframework.web.multipart.MultipartFile;
+
+import cmc.mellyserver.dbcore.memory.OpenType;
+import lombok.Builder;
+import lombok.Data;
+
@Data
public class UpdateMemoryRequestDto {
@@ -35,8 +36,8 @@ public class UpdateMemoryRequestDto {
@Builder
public UpdateMemoryRequestDto(Long id, Long memoryId, String title, String content, List keyword,
- Long groupId, OpenType openType, LocalDate visitedDate, Long star, List deleteImageList,
- List images) {
+ Long groupId, OpenType openType, LocalDate visitedDate, Long star, List deleteImageList,
+ List images) {
this.id = id;
this.memoryId = memoryId;
this.title = title;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/memory/query/MemoryQueryRepository.java b/core/core-api/src/main/java/cmc/mellyserver/domain/memory/query/MemoryQueryRepository.java
index c9bfbe4b..b4b331e2 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/memory/query/MemoryQueryRepository.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/memory/query/MemoryQueryRepository.java
@@ -20,8 +20,8 @@
import com.querydsl.jpa.JPAExpressions;
import com.querydsl.jpa.impl.JPAQueryFactory;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
-import cmc.mellyserver.dbcore.memory.enums.OpenType;
+import cmc.mellyserver.dbcore.group.GroupType;
+import cmc.mellyserver.dbcore.memory.OpenType;
import cmc.mellyserver.domain.memory.query.dto.ImageDto;
import cmc.mellyserver.domain.memory.query.dto.MemoryDetailResponseDto;
import cmc.mellyserver.domain.memory.query.dto.MemoryResponseDto;
@@ -237,7 +237,7 @@ private BooleanExpression createdByLoginUser(Long id) {
}
private BooleanExpression isActive() {
- return memory.is_deleted.eq(Boolean.FALSE);
+ return memory.deletedAt.isNull();
}
private BooleanExpression createdByNotCurrentLoginUser(Long id) {
@@ -254,9 +254,4 @@ private SliceImpl transferToSlice(Pageable pageable, List(results, pageable, hasNext);
}
-
- private BooleanExpression checkOpenTypeAllOrGroup() {
- return memory.openType.ne(OpenType.PRIVATE);
- }
-
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/memory/query/dto/MemoryDetailResponseDto.java b/core/core-api/src/main/java/cmc/mellyserver/domain/memory/query/dto/MemoryDetailResponseDto.java
index 7b4e9a9a..28c63d90 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/memory/query/dto/MemoryDetailResponseDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/memory/query/dto/MemoryDetailResponseDto.java
@@ -1,13 +1,13 @@
package cmc.mellyserver.domain.memory.query.dto;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;
+import cmc.mellyserver.dbcore.group.GroupType;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
@Data
@NoArgsConstructor
public class MemoryDetailResponseDto implements Serializable {
@@ -44,7 +44,7 @@ public class MemoryDetailResponseDto implements Serializable {
private int groupIcon;
public MemoryDetailResponseDto(Long placeId, String placeName, Long memoryId, String title, String content,
- Long stars, LocalDate visitedDate, Long groupId, GroupType groupType, String groupName, int groupIcon) {
+ Long stars, LocalDate visitedDate, Long groupId, GroupType groupType, String groupName, int groupIcon) {
this.placeId = placeId;
this.placeName = placeName;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/memory/query/dto/MemoryResponseDto.java b/core/core-api/src/main/java/cmc/mellyserver/domain/memory/query/dto/MemoryResponseDto.java
index 191ca742..79138ff6 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/memory/query/dto/MemoryResponseDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/memory/query/dto/MemoryResponseDto.java
@@ -1,12 +1,12 @@
package cmc.mellyserver.domain.memory.query.dto;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import java.time.LocalDate;
+
+import cmc.mellyserver.dbcore.group.GroupType;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.time.LocalDate;
-
@Data
@NoArgsConstructor
public class MemoryResponseDto {
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/notification/NotificationService.java b/core/core-api/src/main/java/cmc/mellyserver/domain/notification/NotificationService.java
index 1b42a966..d988287c 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/notification/NotificationService.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/notification/NotificationService.java
@@ -42,8 +42,8 @@ public List getNotificationList(Long userId) {
public NotificationOnOffResponseDto getNotificationStatus(Long userId) {
User user = userReader.findById(userId);
- return NotificationOnOffResponseDto.of(user.getEnableAppPush(), user.getEnableCommentPush(),
- user.getEnableCommentLikePush());
+ return NotificationOnOffResponseDto.of(user.isEnableAppPush(), user.isEnableCommentPush(),
+ user.isEnableCommentLikePush());
}
@Transactional
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/place/PlaceReader.java b/core/core-api/src/main/java/cmc/mellyserver/domain/place/PlaceReader.java
index 2c9eae37..1382a8da 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/place/PlaceReader.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/place/PlaceReader.java
@@ -5,7 +5,7 @@
import org.springframework.stereotype.Component;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.dbcore.place.Place;
import cmc.mellyserver.dbcore.place.PlaceRepository;
import cmc.mellyserver.dbcore.place.Position;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/place/PlaceService.java b/core/core-api/src/main/java/cmc/mellyserver/domain/place/PlaceService.java
index 0681f954..fdd8ea93 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/place/PlaceService.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/place/PlaceService.java
@@ -6,7 +6,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.dbcore.place.Place;
import cmc.mellyserver.dbcore.place.Position;
import cmc.mellyserver.domain.memory.MemoryReader;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/place/query/PlaceQueryRepository.java b/core/core-api/src/main/java/cmc/mellyserver/domain/place/query/PlaceQueryRepository.java
index dce1f25b..be1459e7 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/place/query/PlaceQueryRepository.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/place/query/PlaceQueryRepository.java
@@ -11,7 +11,7 @@
import com.querydsl.jpa.JPAExpressions;
import com.querydsl.jpa.impl.JPAQueryFactory;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.dbcore.place.Place;
import cmc.mellyserver.domain.memory.query.dto.FindPlaceByMemoryTitleResponseDto;
import lombok.RequiredArgsConstructor;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/PlaceScrapReader.java b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/PlaceScrapReader.java
index 519e3673..136949d1 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/PlaceScrapReader.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/PlaceScrapReader.java
@@ -6,7 +6,7 @@
import org.springframework.data.domain.Slice;
import org.springframework.stereotype.Component;
-import cmc.mellyserver.dbcore.scrap.enums.ScrapType;
+import cmc.mellyserver.dbcore.scrap.ScrapType;
import cmc.mellyserver.domain.scrap.query.PlaceScrapQueryRepository;
import cmc.mellyserver.domain.scrap.query.dto.PlaceScrapCountResponseDto;
import cmc.mellyserver.domain.scrap.query.dto.ScrapedPlaceResponseDto;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/PlaceScrapService.java b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/PlaceScrapService.java
index b2508645..e5ec25e7 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/PlaceScrapService.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/PlaceScrapService.java
@@ -13,7 +13,7 @@
import cmc.mellyserver.dbcore.place.Place;
import cmc.mellyserver.dbcore.place.Position;
import cmc.mellyserver.dbcore.scrap.PlaceScrap;
-import cmc.mellyserver.dbcore.scrap.enums.ScrapType;
+import cmc.mellyserver.dbcore.scrap.ScrapType;
import cmc.mellyserver.dbcore.user.User;
import cmc.mellyserver.domain.place.PlaceReader;
import cmc.mellyserver.domain.scrap.dto.request.CreatePlaceScrapRequestDto;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/MarkedPlaceResponseDto.java b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/MarkedPlaceResponseDto.java
index 825aeb8d..0385f0dc 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/MarkedPlaceResponseDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/MarkedPlaceResponseDto.java
@@ -1,6 +1,6 @@
package cmc.mellyserver.domain.scrap.dto;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.dbcore.place.Position;
import lombok.AllArgsConstructor;
import lombok.Builder;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/MyMemoryDto.java b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/MyMemoryDto.java
index 49622812..31782681 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/MyMemoryDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/MyMemoryDto.java
@@ -1,13 +1,13 @@
package cmc.mellyserver.domain.scrap.dto;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import java.util.List;
+
+import cmc.mellyserver.dbcore.group.GroupType;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.util.List;
-
@Data
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/OtherMemoryDto.java b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/OtherMemoryDto.java
index 057b10a6..5a84308a 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/OtherMemoryDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/OtherMemoryDto.java
@@ -1,11 +1,11 @@
package cmc.mellyserver.domain.scrap.dto;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
+import java.util.List;
+
+import cmc.mellyserver.dbcore.group.GroupType;
import lombok.AllArgsConstructor;
import lombok.Data;
-import java.util.List;
-
@Data
@AllArgsConstructor
public class OtherMemoryDto {
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/request/CreatePlaceScrapRequestDto.java b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/request/CreatePlaceScrapRequestDto.java
index ece64fc4..fec1ae54 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/request/CreatePlaceScrapRequestDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/dto/request/CreatePlaceScrapRequestDto.java
@@ -2,7 +2,7 @@
import cmc.mellyserver.dbcore.place.Place;
import cmc.mellyserver.dbcore.place.Position;
-import cmc.mellyserver.dbcore.scrap.enums.ScrapType;
+import cmc.mellyserver.dbcore.scrap.ScrapType;
import lombok.Builder;
import lombok.Data;
@@ -11,7 +11,7 @@ public class CreatePlaceScrapRequestDto {
private Long id;
- private Position position;
+ private Position position;
private ScrapType scrapType;
@@ -21,9 +21,9 @@ public class CreatePlaceScrapRequestDto {
@Builder
public CreatePlaceScrapRequestDto(Long id, Double lat, Double lng, ScrapType scrapType, String placeName,
- String placeCategory) {
+ String placeCategory) {
this.id = id;
- this.position = new Position(lat, lng);
+ this.position = new Position(lat, lng);
this.scrapType = scrapType;
this.placeName = placeName;
this.placeCategory = placeCategory;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/query/PlaceScrapQueryRepository.java b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/query/PlaceScrapQueryRepository.java
index 81c1195a..cf85997a 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/query/PlaceScrapQueryRepository.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/query/PlaceScrapQueryRepository.java
@@ -1,23 +1,26 @@
package cmc.mellyserver.domain.scrap.query;
-import static cmc.mellyserver.dbcore.place.QPlace.place;
-import static cmc.mellyserver.dbcore.scrap.QPlaceScrap.placeScrap;
-import static cmc.mellyserver.dbcore.user.QUser.user;
+import static cmc.mellyserver.dbcore.place.QPlace.*;
+import static cmc.mellyserver.dbcore.scrap.QPlaceScrap.*;
+import static cmc.mellyserver.dbcore.user.QUser.*;
-import cmc.mellyserver.dbcore.place.Position;
-import cmc.mellyserver.dbcore.scrap.enums.ScrapType;
-import cmc.mellyserver.domain.scrap.query.dto.PlaceScrapCountResponseDto;
-import cmc.mellyserver.domain.scrap.query.dto.ScrapedPlaceResponseDto;
-import com.querydsl.core.types.Projections;
-import com.querydsl.core.types.dsl.BooleanExpression;
-import com.querydsl.jpa.impl.JPAQueryFactory;
import java.util.List;
-import lombok.RequiredArgsConstructor;
+
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.data.domain.SliceImpl;
import org.springframework.stereotype.Repository;
+import com.querydsl.core.types.Projections;
+import com.querydsl.core.types.dsl.BooleanExpression;
+import com.querydsl.jpa.impl.JPAQueryFactory;
+
+import cmc.mellyserver.dbcore.place.Position;
+import cmc.mellyserver.dbcore.scrap.ScrapType;
+import cmc.mellyserver.domain.scrap.query.dto.PlaceScrapCountResponseDto;
+import cmc.mellyserver.domain.scrap.query.dto.ScrapedPlaceResponseDto;
+import lombok.RequiredArgsConstructor;
+
@Repository
@RequiredArgsConstructor
public class PlaceScrapQueryRepository {
@@ -60,7 +63,7 @@ public List getScrapedPlaceGrouping(Long id) {
return query
.select(Projections.fields(PlaceScrapCountResponseDto.class, placeScrap.scrapType,
- placeScrap.count().as("scrapCount")))
+ placeScrap.count().as("scrapCount")))
.from(placeScrap)
.innerJoin(user)
.on(placeScrap.user.id.eq(user.id))
@@ -71,10 +74,11 @@ public List getScrapedPlaceGrouping(Long id) {
}
public Slice getUserScrapedPlace(Long lastId, Pageable pageable, Long userId,
- ScrapType scrapType) {
+ ScrapType scrapType) {
List results = query
- .select(Projections.fields(ScrapedPlaceResponseDto.class, place.id, place.position, place.placeCategory, place.placeName, place.placeImage))
+ .select(Projections.fields(ScrapedPlaceResponseDto.class, place.id, place.position, place.placeCategory,
+ place.placeName, place.placeImage))
.from(placeScrap)
.innerJoin(placeScrap.place, place)
.innerJoin(placeScrap.user, user)
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/query/dto/PlaceScrapCountResponseDto.java b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/query/dto/PlaceScrapCountResponseDto.java
index d5c2d3e5..95941841 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/query/dto/PlaceScrapCountResponseDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/scrap/query/dto/PlaceScrapCountResponseDto.java
@@ -1,12 +1,12 @@
package cmc.mellyserver.domain.scrap.query.dto;
-import cmc.mellyserver.dbcore.scrap.enums.ScrapType;
+import java.io.Serializable;
+
+import cmc.mellyserver.dbcore.scrap.ScrapType;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.io.Serializable;
-
@Data
@AllArgsConstructor
@NoArgsConstructor
diff --git a/core/core-api/src/main/java/cmc/mellyserver/domain/user/UserWriter.java b/core/core-api/src/main/java/cmc/mellyserver/domain/user/UserWriter.java
index 2fda9843..d79b8f71 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/domain/user/UserWriter.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/domain/user/UserWriter.java
@@ -1,9 +1,10 @@
package cmc.mellyserver.domain.user;
+import org.springframework.stereotype.Component;
+
import cmc.mellyserver.dbcore.user.User;
import cmc.mellyserver.dbcore.user.UserRepository;
import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
diff --git a/core/core-api/src/test/java/cmc/mellyserver/common/db/RedisTestContainers.java b/core/core-api/src/test/java/cmc/mellyserver/common/db/RedisTestContainers.java
index 9b6dfe97..65ec93b3 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/common/db/RedisTestContainers.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/common/db/RedisTestContainers.java
@@ -13,7 +13,6 @@ public class RedisTestContainers {
private static final String REDIS_DOCKER_IMAGE = "redis:5.0.3-alpine";
-
static {
GenericContainer> REDIS_CONTAINER = new GenericContainer<>(DockerImageName.parse(REDIS_DOCKER_IMAGE))
.withExposedPorts(6379)
@@ -21,8 +20,18 @@ public class RedisTestContainers {
REDIS_CONTAINER.start();
+ GenericContainer> REDIS_CONTAINER_CACHE = new GenericContainer<>(DockerImageName.parse(REDIS_DOCKER_IMAGE))
+ .withExposedPorts(6379)
+ .withReuse(true);
+
+ REDIS_CONTAINER_CACHE.start();
+
+ System.setProperty("spring.redis.token.host", REDIS_CONTAINER.getHost());
+ System.setProperty("spring.redis.token.port", REDIS_CONTAINER.getMappedPort(6379).toString());
+ System.setProperty("spring.redis.cache.host", REDIS_CONTAINER.getHost());
+ System.setProperty("spring.redis.cache.port", REDIS_CONTAINER_CACHE.getMappedPort(6379).toString());
System.setProperty("spring.data.redis.host", REDIS_CONTAINER.getHost());
- System.setProperty("spring.data.redis.port", REDIS_CONTAINER.getMappedPort(6379).toString());
+ System.setProperty("spring.data.redis.port", REDIS_CONTAINER_CACHE.getMappedPort(6379).toString());
}
}
\ No newline at end of file
diff --git a/core/core-api/src/test/java/cmc/mellyserver/domain/group/integration/UserGroupServiceTest.java b/core/core-api/src/test/java/cmc/mellyserver/domain/group/integration/UserGroupServiceTest.java
index 05f944e9..c166cff0 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/domain/group/integration/UserGroupServiceTest.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/domain/group/integration/UserGroupServiceTest.java
@@ -12,8 +12,8 @@
import cmc.mellyserver.dbcore.group.GroupAndUserRepository;
import cmc.mellyserver.dbcore.group.GroupRepository;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.dbcore.group.UserGroup;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
import cmc.mellyserver.dbcore.user.GroupMemberResponseDto;
import cmc.mellyserver.dbcore.user.User;
import cmc.mellyserver.dbcore.user.UserRepository;
@@ -145,7 +145,7 @@ public class UserGroupServiceTest extends IntegrationTestSupport {
// then
UserGroup userGroup = groupRepository.findById(친구들.getId()).get();
- Assertions.assertThat(userGroup.getIsDeleted()).isTrue();
+ Assertions.assertThat(userGroup.getDeletedAt()).isNotNull();
}
@DisplayName("그룹에 참여한다")
diff --git a/core/core-api/src/test/java/cmc/mellyserver/domain/memory/integration/MemoryReadServiceTest.java b/core/core-api/src/test/java/cmc/mellyserver/domain/memory/integration/MemoryReadServiceTest.java
index 501e1498..e969bb96 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/domain/memory/integration/MemoryReadServiceTest.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/domain/memory/integration/MemoryReadServiceTest.java
@@ -19,7 +19,7 @@
import cmc.mellyserver.dbcore.group.UserGroup;
import cmc.mellyserver.dbcore.memory.Memory;
import cmc.mellyserver.dbcore.memory.MemoryRepository;
-import cmc.mellyserver.dbcore.memory.enums.OpenType;
+import cmc.mellyserver.dbcore.memory.OpenType;
import cmc.mellyserver.dbcore.place.Place;
import cmc.mellyserver.dbcore.place.PlaceRepository;
import cmc.mellyserver.dbcore.user.User;
diff --git a/core/core-api/src/test/java/cmc/mellyserver/domain/memory/integration/MemoryServiceTest.java b/core/core-api/src/test/java/cmc/mellyserver/domain/memory/integration/MemoryServiceTest.java
index 7c6be157..adbfb13e 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/domain/memory/integration/MemoryServiceTest.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/domain/memory/integration/MemoryServiceTest.java
@@ -12,7 +12,7 @@
import cmc.mellyserver.dbcore.memory.Memory;
import cmc.mellyserver.dbcore.memory.MemoryRepository;
-import cmc.mellyserver.dbcore.memory.enums.OpenType;
+import cmc.mellyserver.dbcore.memory.OpenType;
import cmc.mellyserver.dbcore.place.Place;
import cmc.mellyserver.dbcore.place.PlaceRepository;
import cmc.mellyserver.dbcore.user.User;
@@ -55,7 +55,7 @@ class When_remove_memory {
// then
Memory memory = memoryRepository.findById(메모리.getId()).get();
- assertThat(memory.getIs_deleted()).isTrue();
+ assertThat(memory.getDeletedAt()).isNotNull();
}
@DisplayName("메모리가 없으면 예외를 발생시킨다.")
diff --git a/core/core-api/src/test/java/cmc/mellyserver/domain/place/integration/PlaceServiceTest.java b/core/core-api/src/test/java/cmc/mellyserver/domain/place/integration/PlaceServiceTest.java
index 4f02599c..05c6f304 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/domain/place/integration/PlaceServiceTest.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/domain/place/integration/PlaceServiceTest.java
@@ -18,7 +18,7 @@
import cmc.mellyserver.dbcore.place.Position;
import cmc.mellyserver.dbcore.scrap.PlaceScrap;
import cmc.mellyserver.dbcore.scrap.PlaceScrapRepository;
-import cmc.mellyserver.dbcore.scrap.enums.ScrapType;
+import cmc.mellyserver.dbcore.scrap.ScrapType;
import cmc.mellyserver.dbcore.user.User;
import cmc.mellyserver.dbcore.user.UserRepository;
import cmc.mellyserver.domain.memory.query.dto.FindPlaceByMemoryTitleResponseDto;
diff --git a/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/integration/PlaceScrapServiceTest.java b/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/integration/PlaceScrapServiceTest.java
index d431dce5..c7aa183e 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/integration/PlaceScrapServiceTest.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/integration/PlaceScrapServiceTest.java
@@ -15,7 +15,7 @@
import cmc.mellyserver.dbcore.place.PlaceRepository;
import cmc.mellyserver.dbcore.scrap.PlaceScrap;
import cmc.mellyserver.dbcore.scrap.PlaceScrapRepository;
-import cmc.mellyserver.dbcore.scrap.enums.ScrapType;
+import cmc.mellyserver.dbcore.scrap.ScrapType;
import cmc.mellyserver.dbcore.user.User;
import cmc.mellyserver.dbcore.user.UserRepository;
import cmc.mellyserver.domain.scrap.PlaceScrapService;
diff --git a/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/integration/PlaceScrapValidatorTest.java b/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/integration/PlaceScrapValidatorTest.java
index 03d4c331..b094f796 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/integration/PlaceScrapValidatorTest.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/integration/PlaceScrapValidatorTest.java
@@ -10,7 +10,7 @@
import cmc.mellyserver.dbcore.place.PlaceRepository;
import cmc.mellyserver.dbcore.scrap.PlaceScrap;
import cmc.mellyserver.dbcore.scrap.PlaceScrapRepository;
-import cmc.mellyserver.dbcore.scrap.enums.ScrapType;
+import cmc.mellyserver.dbcore.scrap.ScrapType;
import cmc.mellyserver.dbcore.user.User;
import cmc.mellyserver.dbcore.user.UserRepository;
import cmc.mellyserver.domain.scrap.PlaceScrapValidator;
diff --git a/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/repository/ScrapQueryRepositoryTest.java b/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/repository/ScrapQueryRepositoryTest.java
index 6283b4b5..4f12529b 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/repository/ScrapQueryRepositoryTest.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/repository/ScrapQueryRepositoryTest.java
@@ -10,7 +10,7 @@
import cmc.mellyserver.dbcore.place.Position;
import cmc.mellyserver.dbcore.scrap.PlaceScrap;
import cmc.mellyserver.dbcore.scrap.PlaceScrapRepository;
-import cmc.mellyserver.dbcore.scrap.enums.ScrapType;
+import cmc.mellyserver.dbcore.scrap.ScrapType;
import cmc.mellyserver.dbcore.user.User;
import cmc.mellyserver.dbcore.user.UserRepository;
import cmc.mellyserver.dbcore.user.enums.Provider;
diff --git a/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/repository/ScrapRepositoryTest.java b/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/repository/ScrapRepositoryTest.java
index 1a1ffa5e..0a6d2710 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/repository/ScrapRepositoryTest.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/repository/ScrapRepositoryTest.java
@@ -12,7 +12,7 @@
import cmc.mellyserver.dbcore.place.PlaceRepository;
import cmc.mellyserver.dbcore.scrap.PlaceScrap;
import cmc.mellyserver.dbcore.scrap.PlaceScrapRepository;
-import cmc.mellyserver.dbcore.scrap.enums.ScrapType;
+import cmc.mellyserver.dbcore.scrap.ScrapType;
import cmc.mellyserver.dbcore.user.User;
import cmc.mellyserver.dbcore.user.UserRepository;
import cmc.mellyserver.support.RepositoryTestSupport;
diff --git a/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/unit/ScrapTest.java b/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/unit/ScrapTest.java
index 489c6a40..96084254 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/unit/ScrapTest.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/domain/scrap/unit/ScrapTest.java
@@ -8,7 +8,7 @@
import cmc.mellyserver.dbcore.place.Place;
import cmc.mellyserver.dbcore.scrap.PlaceScrap;
-import cmc.mellyserver.dbcore.scrap.enums.ScrapType;
+import cmc.mellyserver.dbcore.scrap.ScrapType;
import cmc.mellyserver.dbcore.user.User;
public class ScrapTest {
diff --git a/core/core-api/src/test/java/cmc/mellyserver/domain/user/unit/UserTest.java b/core/core-api/src/test/java/cmc/mellyserver/domain/user/unit/UserTest.java
index e4e3d5e3..13322235 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/domain/user/unit/UserTest.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/domain/user/unit/UserTest.java
@@ -8,11 +8,7 @@
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
-import cmc.mellyserver.dbcore.user.Recommend;
import cmc.mellyserver.dbcore.user.User;
-import cmc.mellyserver.dbcore.user.enums.RecommendActivity;
-import cmc.mellyserver.dbcore.user.enums.RecommendGroup;
-import cmc.mellyserver.dbcore.user.enums.RecommendPlace;
public class UserTest {
@@ -45,20 +41,4 @@ public class UserTest {
Assertions.assertThat(user.getGender()).isEqualTo(FEMALE);
Assertions.assertThat(user.getAgeGroup()).isEqualTo(TWO);
}
-
- @DisplayName("유저가 최초 회원가입할때 진행한 설문 조사 결과를 저장한다.")
- @Test
- void 회원가입시_진행한_설문조사결과를_저장한다() {
-
- // given
- User user = 모카();
-
- // when
- user.addSurveyData(RecommendGroup.FRIEND, RecommendPlace.PLACE1, RecommendActivity.CAFE);
-
- // then
- Assertions.assertThat(user.getRecommend())
- .usingRecursiveComparison()
- .isEqualTo(new Recommend(RecommendGroup.FRIEND, RecommendPlace.PLACE1, RecommendActivity.CAFE));
- }
}
diff --git a/core/core-api/src/test/java/cmc/mellyserver/fixtures/GroupFixtures.java b/core/core-api/src/test/java/cmc/mellyserver/fixtures/GroupFixtures.java
index 47e364f6..4fec0249 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/fixtures/GroupFixtures.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/fixtures/GroupFixtures.java
@@ -1,7 +1,7 @@
package cmc.mellyserver.fixtures;
+import cmc.mellyserver.dbcore.group.GroupType;
import cmc.mellyserver.dbcore.group.UserGroup;
-import cmc.mellyserver.dbcore.group.enums.GroupType;
public abstract class GroupFixtures {
diff --git a/core/core-api/src/test/java/cmc/mellyserver/fixtures/MemoryFixtures.java b/core/core-api/src/test/java/cmc/mellyserver/fixtures/MemoryFixtures.java
index 13721a58..b9b48275 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/fixtures/MemoryFixtures.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/fixtures/MemoryFixtures.java
@@ -1,15 +1,12 @@
package cmc.mellyserver.fixtures;
import java.time.LocalDate;
-import java.util.List;
import cmc.mellyserver.dbcore.memory.Memory;
-import cmc.mellyserver.dbcore.memory.enums.OpenType;
+import cmc.mellyserver.dbcore.memory.OpenType;
public abstract class MemoryFixtures {
-
- private final static List keywords = List.of("기뻐요", "슬퍼요");
-
+
public static Memory 메모리(Long placeId, Long userId, Long groupId, String title, OpenType openType) {
return Memory.builder()
@@ -18,7 +15,6 @@ public abstract class MemoryFixtures {
.title(title)
.groupId(groupId)
.openType(openType)
- .keyword(keywords)
.visitedDate(LocalDate.now())
.build();
}
diff --git a/core/core-api/src/test/java/cmc/mellyserver/fixtures/PlaceFixtures.java b/core/core-api/src/test/java/cmc/mellyserver/fixtures/PlaceFixtures.java
index 1f777a17..1908e788 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/fixtures/PlaceFixtures.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/fixtures/PlaceFixtures.java
@@ -29,7 +29,6 @@ public abstract class PlaceFixtures {
.placeName(스타벅스_이름)
.placeCategory(스타벅스_카테고리)
.position(스타벅스_좌표)
- .isDeleted(Boolean.FALSE)
.placeImage(스타벅스_이미지_URL)
.build();
}
@@ -40,7 +39,6 @@ public abstract class PlaceFixtures {
.placeName(이디야_이름)
.placeCategory(이디야_카테고리)
.position(이디야_좌표)
- .isDeleted(Boolean.FALSE)
.placeImage(이디야_이미지_URL)
.build();
}
diff --git a/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/group/QUserGroup.java b/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/group/QUserGroup.java
index d4d9ca9d..2177d40e 100644
--- a/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/group/QUserGroup.java
+++ b/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/group/QUserGroup.java
@@ -24,18 +24,18 @@ public class QUserGroup extends EntityPathBase {
//inherited
public final DateTimePath createdDate = _super.createdDate;
+ public final DateTimePath deletedAt = createDateTime("deletedAt", java.time.LocalDateTime.class);
+
public final NumberPath groupIcon = createNumber("groupIcon", Integer.class);
public final StringPath groupName = createString("groupName");
- public final EnumPath groupType = createEnum("groupType", cmc.mellyserver.dbcore.group.enums.GroupType.class);
+ public final EnumPath groupType = createEnum("groupType", GroupType.class);
public final NumberPath id = createNumber("id", Long.class);
public final StringPath inviteLink = createString("inviteLink");
- public final BooleanPath isDeleted = createBoolean("isDeleted");
-
//inherited
public final DateTimePath lastModifiedDate = _super.lastModifiedDate;
diff --git a/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/memory/QMemory.java b/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/memory/QMemory.java
index 02cb8045..be9f7f84 100644
--- a/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/memory/QMemory.java
+++ b/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/memory/QMemory.java
@@ -27,20 +27,18 @@ public class QMemory extends EntityPathBase {
//inherited
public final DateTimePath createdDate = _super.createdDate;
+ public final DateTimePath deletedAt = createDateTime("deletedAt", java.time.LocalDateTime.class);
+
public final NumberPath groupId = createNumber("groupId", Long.class);
public final NumberPath id = createNumber("id", Long.class);
- public final BooleanPath is_deleted = createBoolean("is_deleted");
-
- public final ListPath keywords = this.createList("keywords", Keyword.class, QKeyword.class, PathInits.DIRECT2);
-
//inherited
public final DateTimePath lastModifiedDate = _super.lastModifiedDate;
public final ListPath memoryImages = this.createList("memoryImages", MemoryImage.class, QMemoryImage.class, PathInits.DIRECT2);
- public final EnumPath openType = createEnum("openType", cmc.mellyserver.dbcore.memory.enums.OpenType.class);
+ public final EnumPath openType = createEnum("openType", OpenType.class);
public final NumberPath placeId = createNumber("placeId", Long.class);
diff --git a/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/place/QPlace.java b/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/place/QPlace.java
index 2f7f6eaf..60c13564 100644
--- a/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/place/QPlace.java
+++ b/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/place/QPlace.java
@@ -29,8 +29,6 @@ public class QPlace extends EntityPathBase {
public final NumberPath id = createNumber("id", Long.class);
- public final BooleanPath isDeleted = createBoolean("isDeleted");
-
//inherited
public final DateTimePath lastModifiedDate = _super.lastModifiedDate;
diff --git a/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/scrap/QPlaceScrap.java b/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/scrap/QPlaceScrap.java
index 883f479a..97f0babf 100644
--- a/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/scrap/QPlaceScrap.java
+++ b/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/scrap/QPlaceScrap.java
@@ -34,7 +34,7 @@ public class QPlaceScrap extends EntityPathBase {
public final cmc.mellyserver.dbcore.place.QPlace place;
- public final EnumPath scrapType = createEnum("scrapType", cmc.mellyserver.dbcore.scrap.enums.ScrapType.class);
+ public final EnumPath scrapType = createEnum("scrapType", ScrapType.class);
public final cmc.mellyserver.dbcore.user.QUser user;
diff --git a/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/user/QUser.java b/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/user/QUser.java
index a761fa3c..1612337d 100644
--- a/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/user/QUser.java
+++ b/storage/db-core/src/main/generated/cmc/mellyserver/dbcore/user/QUser.java
@@ -7,7 +7,6 @@
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
-import com.querydsl.core.types.dsl.PathInits;
/**
@@ -18,8 +17,6 @@ public class QUser extends EntityPathBase {
private static final long serialVersionUID = 1807216892L;
- private static final PathInits INITS = PathInits.DIRECT2;
-
public static final QUser user = new QUser("user");
public final cmc.mellyserver.dbcore.config.jpa.QJpaBaseEntity _super = new cmc.mellyserver.dbcore.config.jpa.QJpaBaseEntity(this);
@@ -37,6 +34,8 @@ public class QUser extends EntityPathBase {
public final BooleanPath enableCommentPush = createBoolean("enableCommentPush");
+ public final StringPath fcmToken = createString("fcmToken");
+
public final EnumPath gender = createEnum("gender", cmc.mellyserver.dbcore.user.enums.Gender.class);
public final NumberPath id = createNumber("id", Long.class);
@@ -52,8 +51,6 @@ public class QUser extends EntityPathBase {
public final EnumPath provider = createEnum("provider", cmc.mellyserver.dbcore.user.enums.Provider.class);
- public final QRecommend recommend;
-
public final EnumPath roleType = createEnum("roleType", cmc.mellyserver.dbcore.user.enums.RoleType.class);
public final StringPath socialId = createString("socialId");
@@ -61,24 +58,15 @@ public class QUser extends EntityPathBase {
public final EnumPath userStatus = createEnum("userStatus", cmc.mellyserver.dbcore.user.enums.UserStatus.class);
public QUser(String variable) {
- this(User.class, forVariable(variable), INITS);
+ super(User.class, forVariable(variable));
}
public QUser(Path extends User> path) {
- this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS));
+ super(path.getType(), path.getMetadata());
}
public QUser(PathMetadata metadata) {
- this(metadata, PathInits.getFor(metadata, INITS));
- }
-
- public QUser(PathMetadata metadata, PathInits inits) {
- this(User.class, metadata, inits);
- }
-
- public QUser(Class extends User> type, PathMetadata metadata, PathInits inits) {
- super(type, metadata, inits);
- this.recommend = inits.isInitialized("recommend") ? new QRecommend(forProperty("recommend")) : null;
+ super(User.class, metadata);
}
}
diff --git a/storage/db-core/src/main/java/cmc/mellyserver/dbcore/config/datasource/DataSourceConfig.java b/storage/db-core/src/main/java/cmc/mellyserver/dbcore/config/datasource/DataSourceConfig.java
index b03bb93b..d69dbdc4 100644
--- a/storage/db-core/src/main/java/cmc/mellyserver/dbcore/config/datasource/DataSourceConfig.java
+++ b/storage/db-core/src/main/java/cmc/mellyserver/dbcore/config/datasource/DataSourceConfig.java
@@ -1,5 +1,11 @@
package cmc.mellyserver.dbcore.config.datasource;
+import static cmc.mellyserver.dbcore.config.datasource.DatabaseType.*;
+
+import java.util.HashMap;
+
+import javax.sql.DataSource;
+
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
@@ -9,13 +15,8 @@
import org.springframework.context.annotation.Profile;
import org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy;
-import javax.sql.DataSource;
-import java.util.HashMap;
-
-import static cmc.mellyserver.dbcore.config.datasource.DatabaseType.SOURCE;
-
@Configuration
-@Profile({ "local", "prod" })
+@Profile({"local", "prod"})
public class DataSourceConfig {
@Bean
@@ -25,13 +26,14 @@ public DataSource sourceDataSource() {
return DataSourceBuilder.create().build();
}
- // @Bean
- // @Qualifier(REPLICA)
- // @ConfigurationProperties(prefix = "spring.datasource.replica1")
- // public DataSource replica1DataSource() {
- // return DataSourceBuilder.create()
- // .build();
- // }
+/*
+ @Bean
+ @Qualifier(REPLICA)
+ @ConfigurationProperties(prefix = "spring.datasource.replica")
+ public DataSource replicaDataSource() {
+ return DataSourceBuilder.create().build();
+ }
+*/
@Bean
public DataSource routingDataSource(@Qualifier(SOURCE) DataSource sourceDataSource) {
@@ -40,7 +42,7 @@ public DataSource routingDataSource(@Qualifier(SOURCE) DataSource sourceDataSour
HashMap