diff --git "a/.github/workflows/\bdeploy.yml" "b/.github/workflows/\bdeploy.yml" index 55f2b99a..4be313b1 100644 --- "a/.github/workflows/\bdeploy.yml" +++ "b/.github/workflows/\bdeploy.yml" @@ -14,8 +14,10 @@ jobs: runs-on: ubuntu-latest steps: - - name: Checkout Repository - uses: actions/checkout@v2 + - name: 리포지토리를 가져옵니다 + uses: actions/checkout@v2 + with: + fetch-depth: 2 - name: JDK 17을 설치합니다 uses: actions/setup-java@v4 @@ -32,8 +34,42 @@ jobs: - name: Gradle 명령 실행을 위한 권한을 부여합니다 run: chmod +x gradlew - - name: Gradle build를 수행합니다 - run: ./gradlew build + - name: 변경된 모듈을 체크한다. + id: check_changes + run: | + git fetch origin main + if git diff --name-only origin/main...HEAD | grep -q "^domain/"; then + echo "domain 모듈이 변경되었습니다." + echo "::set-output name=changes::domain_changed" + elif git diff --name-only origin/main...HEAD | grep -q "^app-api/"; then + echo "api 모듈이 변경되었습니다." + echo "::set-output name=changes::api_changed" + elif git diff --name-only origin/main...HEAD | grep -q "^app-scheduler/"; then + echo "scheduler 모듈이 변경되었습니다." + echo "::set-output name=changes::scheduler_changed" + else + echo "모듈에 변경사항이 없습니다." + fi + + - name: 변경된 모듈을 build한다. + run: | + case "${{ steps.check_changes.outputs.changes }}" in + domain_changed) + echo "전체 모듈을 빌드합니다." + ./gradlew build --parallel + ;; + api_changed) + echo "api 모듈을 빌드합니다." + ./gradlew :app-api:build + ;; + scheduler_changed) + echo "scheduler 모듈을 빌드합니다." + ./gradlew :app-scheduler:build + ;; + *) + echo "모듈에 변경 사항이 없습니다." + ;; + esac - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 @@ -46,11 +82,26 @@ jobs: - name: 도커 이미지 build 후 push uses: docker/build-push-action@v2 + if: | + steps.check_changes.outputs.changes == 'domain_changed' || + steps.check_changes.outputs.changes == 'api_changed' with: context: . - file: Dockerfile + file: app-api/Dockerfile push: true - tags: ${{ secrets.DOCKERHUB_USERNAME }}/pct-backend:${{ github.sha }} + tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.API_IMAGE }}:${{ github.sha }} + platforms: linux/amd64 + + - name: 도커 이미지 build 후 push + uses: docker/build-push-action@v2 + if: | + steps.check_changes.outputs.changes == 'domain_changed' || + steps.check_changes.outputs.changes == 'scheduler_changed' + with: + context: . + file: app-scheduler/Dockerfile + push: true + tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.SCHEDULER_IMAGE }}:${{ github.sha }} platforms: linux/amd64 deploy-to-ec2: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6a0656ea..d1ebc7ad 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,9 @@ jobs: steps: - name: 리포지토리를 가져옵니다 - uses: actions/checkout@v4 + uses: actions/checkout@v2 + with: + fetch-depth: 2 - name: JDK 17을 설치합니다 uses: actions/setup-java@v4 @@ -33,19 +35,55 @@ jobs: - name: Gradle 명령 실행을 위한 권한을 부여합니다 run: chmod +x gradlew - - name: 테스트 수행 - run: ./gradlew test -i + - name: 변경된 모듈을 체크한다. + id: check_changes + run: | + git fetch origin main + if git diff --name-only origin/main...HEAD | grep -q "^domain/"; then + echo "domain 모듈이 변경되었습니다." + echo "::set-output name=changes::domain_changed" + elif git diff --name-only origin/main...HEAD | grep -q "^app-api/"; then + echo "api 모듈이 변경되었습니다." + echo "::set-output name=changes::api_changed" + elif git diff --name-only origin/main...HEAD | grep -q "^app-scheduler/"; then + echo "scheduler 모듈이 변경되었습니다." + echo "::set-output name=changes::scheduler_changed" + else + echo "모듈에 변경사항이 없습니다." + fi + + - name: 변경된 모듈을 테스트한다. + run: | + case "${{ steps.check_changes.outputs.changes }}" in + domain_changed) + echo "도메인 모듈 및 하위 모듈을 테스트합니다." + ./gradlew test --parallel + ;; + api_changed) + echo "api 모듈을 테스트합니다." + ./gradlew :app-api:test -i + ;; + scheduler_changed) + echo "scheduler 모듈을 테스트합니다." + ./gradlew :app-scheduler:test -i + ;; + *) + echo "모듈에 변경 사항이 없습니다." + ;; + esac + echo "테스트 결과를 하나의 디렉토리에 복사합니다." + ./gradlew collectTestResults - name: 테스트 결과를 PR에 코멘트로 등록합니다 uses: EnricoMi/publish-unit-test-result-action@v2 if: github.event_name == 'pull_request' with: - files: '**/build/test-results/test/TEST-*.xml' + files: '**/build/allTestResults/TEST-*.xml' - name: 테스트 실패 시, 실패한 코드 라인에 Check 코멘트를 등록합니다 uses: mikepenz/action-junit-report@v3 with: - report_paths: '**/build/test-results/test/TEST-*.xml' + report_paths: '**/build/allTestResults/TEST-*.xml' token: ${{ github.token }} - name: build 실패 시 Slack으로 알립니다 diff --git a/app-api/.gitignore b/app-api/.gitignore new file mode 100644 index 00000000..b63da455 --- /dev/null +++ b/app-api/.gitignore @@ -0,0 +1,42 @@ +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/Dockerfile b/app-api/Dockerfile similarity index 55% rename from Dockerfile rename to app-api/Dockerfile index de65fcf8..90cb346d 100644 --- a/Dockerfile +++ b/app-api/Dockerfile @@ -1,5 +1,5 @@ FROM amazoncorretto:17-alpine -COPY build/libs/parking-0.0.1-SNAPSHOT.jar app.jar +COPY build/libs/app-api-0.0.1-SNAPSHOT.jar app.jar CMD ["java", "-jar", "app.jar"] diff --git a/app-api/build.gradle b/app-api/build.gradle new file mode 100644 index 00000000..f20cea52 --- /dev/null +++ b/app-api/build.gradle @@ -0,0 +1,23 @@ +dependencies { + implementation project(':domain') + + testImplementation platform('org.junit:junit-bom:5.9.1') + testImplementation 'org.junit.jupiter:junit-jupiter' + + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' + implementation group: 'org.hibernate.orm', name: 'hibernate-spatial', version: '6.3.1.Final' + + // 메일 + implementation 'org.springframework.boot:spring-boot-starter-mail' + + // redis + implementation 'org.springframework.boot:spring-boot-starter-data-redis' + + // testcontainer + testImplementation "org.testcontainers:testcontainers:1.19.6" + testImplementation "org.testcontainers:junit-jupiter:1.19.6" + testImplementation "com.redis:testcontainers-redis:2.2.0" + testImplementation "org.testcontainers:mysql:1.19.6" + + testImplementation(testFixtures(project(":domain"))) +} diff --git a/src/main/java/com/example/parking/ParkingApplication.java b/app-api/src/main/java/com/parkingcomestrue/ApiApplication.java similarity index 68% rename from src/main/java/com/example/parking/ParkingApplication.java rename to app-api/src/main/java/com/parkingcomestrue/ApiApplication.java index 7e894bec..07d7198c 100644 --- a/src/main/java/com/example/parking/ParkingApplication.java +++ b/app-api/src/main/java/com/parkingcomestrue/ApiApplication.java @@ -1,16 +1,14 @@ -package com.example.parking; +package com.parkingcomestrue; import jakarta.annotation.PostConstruct; import java.util.TimeZone; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.springframework.scheduling.annotation.EnableScheduling; -@EnableJpaAuditing @EnableScheduling @SpringBootApplication -public class ParkingApplication { +public class ApiApplication { @PostConstruct public void started() { @@ -18,6 +16,6 @@ public void started() { } public static void main(String[] args) { - SpringApplication.run(ParkingApplication.class, args); + SpringApplication.run(ApiApplication.class, args); } } diff --git a/src/main/java/com/example/parking/auth/authcode/api/AuthCodeController.java b/app-api/src/main/java/com/parkingcomestrue/parking/api/auth/authcode/AuthCodeController.java similarity index 75% rename from src/main/java/com/example/parking/auth/authcode/api/AuthCodeController.java rename to app-api/src/main/java/com/parkingcomestrue/parking/api/auth/authcode/AuthCodeController.java index f106a7c9..dba87144 100644 --- a/src/main/java/com/example/parking/auth/authcode/api/AuthCodeController.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/api/auth/authcode/AuthCodeController.java @@ -1,9 +1,9 @@ -package com.example.parking.auth.authcode.api; +package com.parkingcomestrue.parking.api.auth.authcode; -import com.example.parking.auth.AuthService; -import com.example.parking.auth.authcode.application.dto.AuthCodeCertificateRequest; -import com.example.parking.auth.authcode.application.dto.AuthCodeRequest; -import com.example.parking.auth.authcode.application.dto.AuthCodeResponse; +import com.parkingcomestrue.parking.application.auth.AuthService; +import com.parkingcomestrue.parking.application.auth.authcode.dto.AuthCodeCertificateRequest; +import com.parkingcomestrue.parking.application.auth.authcode.dto.AuthCodeRequest; +import com.parkingcomestrue.parking.application.auth.authcode.dto.AuthCodeResponse; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; diff --git a/src/main/java/com/example/parking/api/favorite/FavoriteController.java b/app-api/src/main/java/com/parkingcomestrue/parking/api/favorite/FavoriteController.java similarity index 81% rename from src/main/java/com/example/parking/api/favorite/FavoriteController.java rename to app-api/src/main/java/com/parkingcomestrue/parking/api/favorite/FavoriteController.java index 9566cee1..073e798d 100644 --- a/src/main/java/com/example/parking/api/favorite/FavoriteController.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/api/favorite/FavoriteController.java @@ -1,9 +1,9 @@ -package com.example.parking.api.favorite; +package com.parkingcomestrue.parking.api.favorite; -import com.example.parking.application.favorite.FavoriteService; -import com.example.parking.application.favorite.dto.FavoriteCreateRequest; -import com.example.parking.application.favorite.dto.FavoriteDeleteRequest; -import com.example.parking.config.argumentresolver.MemberAuth; +import com.parkingcomestrue.parking.application.favorite.FavoriteService; +import com.parkingcomestrue.parking.application.favorite.dto.FavoriteCreateRequest; +import com.parkingcomestrue.parking.application.favorite.dto.FavoriteDeleteRequest; +import com.parkingcomestrue.parking.config.argumentresolver.MemberAuth; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/src/main/java/com/example/parking/api/member/MemberController.java b/app-api/src/main/java/com/parkingcomestrue/parking/api/member/MemberController.java similarity index 81% rename from src/main/java/com/example/parking/api/member/MemberController.java rename to app-api/src/main/java/com/parkingcomestrue/parking/api/member/MemberController.java index 463a64ea..c74b6c90 100644 --- a/src/main/java/com/example/parking/api/member/MemberController.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/api/member/MemberController.java @@ -1,11 +1,11 @@ -package com.example.parking.api.member; - -import com.example.parking.application.member.MemberService; -import com.example.parking.application.member.dto.MemberLoginRequest; -import com.example.parking.application.member.dto.MemberSignupRequest; -import com.example.parking.application.member.dto.PasswordChangeRequest; -import com.example.parking.auth.AuthService; -import com.example.parking.config.argumentresolver.MemberAuth; +package com.parkingcomestrue.parking.api.member; + +import com.parkingcomestrue.parking.application.auth.AuthService; +import com.parkingcomestrue.parking.application.member.MemberService; +import com.parkingcomestrue.parking.application.member.dto.MemberLoginRequest; +import com.parkingcomestrue.parking.application.member.dto.MemberSignupRequest; +import com.parkingcomestrue.parking.application.member.dto.PasswordChangeRequest; +import com.parkingcomestrue.parking.config.argumentresolver.MemberAuth; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/src/main/java/com/example/parking/api/parking/ParkingController.java b/app-api/src/main/java/com/parkingcomestrue/parking/api/parking/ParkingController.java similarity index 70% rename from src/main/java/com/example/parking/api/parking/ParkingController.java rename to app-api/src/main/java/com/parkingcomestrue/parking/api/parking/ParkingController.java index 00bfe8f4..fbbdef4b 100644 --- a/src/main/java/com/example/parking/api/parking/ParkingController.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/api/parking/ParkingController.java @@ -1,13 +1,13 @@ -package com.example.parking.api.parking; +package com.parkingcomestrue.parking.api.parking; -import com.example.parking.application.parking.ParkingService; -import com.example.parking.application.parking.dto.ParkingDetailInfoResponse; -import com.example.parking.application.parking.dto.ParkingLotsResponse; -import com.example.parking.application.parking.dto.ParkingQueryRequest; -import com.example.parking.application.parking.dto.ParkingSearchConditionRequest; -import com.example.parking.config.argumentresolver.MemberAuth; -import com.example.parking.config.argumentresolver.parking.ParkingQuery; -import com.example.parking.config.argumentresolver.parking.ParkingSearchCondition; +import com.parkingcomestrue.parking.application.parking.ParkingService; +import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse; +import com.parkingcomestrue.parking.application.parking.dto.ParkingLotsResponse; +import com.parkingcomestrue.parking.application.parking.dto.ParkingQueryRequest; +import com.parkingcomestrue.parking.application.parking.dto.ParkingSearchConditionRequest; +import com.parkingcomestrue.parking.config.argumentresolver.MemberAuth; +import com.parkingcomestrue.parking.config.argumentresolver.parking.ParkingQuery; +import com.parkingcomestrue.parking.config.argumentresolver.parking.ParkingSearchCondition; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/src/main/java/com/example/parking/api/review/ReviewController.java b/app-api/src/main/java/com/parkingcomestrue/parking/api/review/ReviewController.java similarity index 81% rename from src/main/java/com/example/parking/api/review/ReviewController.java rename to app-api/src/main/java/com/parkingcomestrue/parking/api/review/ReviewController.java index 5c6edb33..15519927 100644 --- a/src/main/java/com/example/parking/api/review/ReviewController.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/api/review/ReviewController.java @@ -1,8 +1,8 @@ -package com.example.parking.api.review; +package com.parkingcomestrue.parking.api.review; -import com.example.parking.application.review.ReviewService; -import com.example.parking.application.review.dto.ReviewCreateRequest; -import com.example.parking.config.argumentresolver.MemberAuth; +import com.parkingcomestrue.parking.application.review.ReviewService; +import com.parkingcomestrue.parking.application.review.dto.ReviewCreateRequest; +import com.parkingcomestrue.parking.config.argumentresolver.MemberAuth; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/src/main/java/com/example/parking/api/searchcondition/SearchConditionController.java b/app-api/src/main/java/com/parkingcomestrue/parking/api/searchcondition/SearchConditionController.java similarity index 83% rename from src/main/java/com/example/parking/api/searchcondition/SearchConditionController.java rename to app-api/src/main/java/com/parkingcomestrue/parking/api/searchcondition/SearchConditionController.java index 37ed11b7..c2d231e0 100644 --- a/src/main/java/com/example/parking/api/searchcondition/SearchConditionController.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/api/searchcondition/SearchConditionController.java @@ -1,8 +1,8 @@ -package com.example.parking.api.searchcondition; +package com.parkingcomestrue.parking.api.searchcondition; -import com.example.parking.application.searchcondition.SearchConditionService; -import com.example.parking.application.searchcondition.dto.SearchConditionDto; -import com.example.parking.config.argumentresolver.MemberAuth; +import com.parkingcomestrue.parking.application.searchcondition.SearchConditionService; +import com.parkingcomestrue.parking.application.searchcondition.dto.SearchConditionDto; +import com.parkingcomestrue.parking.config.argumentresolver.MemberAuth; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/src/main/java/com/example/parking/application/SearchConditionMapper.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/SearchConditionMapper.java similarity index 77% rename from src/main/java/com/example/parking/application/SearchConditionMapper.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/SearchConditionMapper.java index 82c700d5..0b9f6208 100644 --- a/src/main/java/com/example/parking/application/SearchConditionMapper.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/SearchConditionMapper.java @@ -1,8 +1,8 @@ -package com.example.parking.application; +package com.parkingcomestrue.parking.application; -import com.example.parking.domain.searchcondition.SearchConditionAvailable; -import com.example.parking.support.exception.ClientException; -import com.example.parking.support.exception.ExceptionInformation; +import com.parkingcomestrue.common.domain.searchcondition.SearchConditionAvailable; +import com.parkingcomestrue.parking.support.exception.ClientException; +import com.parkingcomestrue.parking.support.exception.ClientExceptionInformation; import java.util.Arrays; import java.util.List; import org.springframework.stereotype.Component; @@ -24,7 +24,7 @@ public & SearchConditionAvailable> E toEnum(Class searchCo return Arrays.stream(conditions) .filter(condition -> description.startsWith(condition.getDescription())) .findAny() - .orElseThrow(() -> new ClientException(ExceptionInformation.INVALID_DESCRIPTION)); + .orElseThrow(() -> new ClientException(ClientExceptionInformation.INVALID_DESCRIPTION)); } public & SearchConditionAvailable> List getValues( diff --git a/src/main/java/com/example/parking/auth/AuthService.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/AuthService.java similarity index 76% rename from src/main/java/com/example/parking/auth/AuthService.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/AuthService.java index 4c487c65..94e6f5a7 100644 --- a/src/main/java/com/example/parking/auth/AuthService.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/AuthService.java @@ -1,17 +1,17 @@ -package com.example.parking.auth; +package com.parkingcomestrue.parking.application.auth; -import com.example.parking.auth.authcode.AuthCodeCategory; -import com.example.parking.auth.authcode.AuthCodePlatform; -import com.example.parking.auth.authcode.application.AuthCodeValidator; -import com.example.parking.auth.authcode.application.dto.AuthCodeCertificateRequest; -import com.example.parking.auth.authcode.application.dto.AuthCodeRequest; -import com.example.parking.auth.authcode.event.AuthCodeCreateEvent; -import com.example.parking.auth.authcode.util.AuthCodeKeyConverter; -import com.example.parking.auth.session.MemberSession; -import com.example.parking.auth.session.MemberSessionRepository; -import com.example.parking.support.exception.ClientException; -import com.example.parking.support.exception.ExceptionInformation; -import com.example.parking.util.authcode.AuthCodeGenerator; +import com.parkingcomestrue.parking.application.auth.authcode.AuthCodeCategory; +import com.parkingcomestrue.parking.application.auth.authcode.AuthCodePlatform; +import com.parkingcomestrue.parking.application.auth.authcode.AuthCodeValidator; +import com.parkingcomestrue.parking.application.auth.authcode.dto.AuthCodeCertificateRequest; +import com.parkingcomestrue.parking.application.auth.authcode.dto.AuthCodeRequest; +import com.parkingcomestrue.parking.application.auth.authcode.dto.AuthCodeCreateEvent; +import com.parkingcomestrue.parking.application.auth.authcode.util.AuthCodeGenerator; +import com.parkingcomestrue.parking.application.auth.authcode.util.AuthCodeKeyConverter; +import com.parkingcomestrue.common.domain.session.MemberSession; +import com.parkingcomestrue.common.domain.session.repository.MemberSessionRepository; +import com.parkingcomestrue.parking.support.exception.ClientException; +import com.parkingcomestrue.parking.support.exception.ClientExceptionInformation; import java.time.LocalDateTime; import java.util.UUID; import java.util.concurrent.TimeUnit; @@ -47,7 +47,7 @@ public String createSession(Long memberId) { public MemberSession findSession(String sessionId) { return memberSessionRepository.findBySessionIdAndExpiredAtIsGreaterThanEqual(sessionId, LocalDateTime.now()) - .orElseThrow(() -> new ClientException(ExceptionInformation.UNAUTHORIZED)); + .orElseThrow(() -> new ClientException(ClientExceptionInformation.UNAUTHORIZED)); } @Transactional @@ -95,7 +95,7 @@ public void certificateAuthCode(AuthCodeCertificateRequest authCodeCertificateRe authCodeCategory.getCategoryName()); String findResult = redisTemplate.opsForValue().getAndDelete(authCodeKey); if (findResult == null) { - throw new ClientException(ExceptionInformation.INVALID_AUTH_CODE); + throw new ClientException(ClientExceptionInformation.INVALID_AUTH_CODE); } } } diff --git a/src/main/java/com/example/parking/auth/authcode/AuthCodeCategory.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/AuthCodeCategory.java similarity index 91% rename from src/main/java/com/example/parking/auth/authcode/AuthCodeCategory.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/AuthCodeCategory.java index d3e2efc8..379456b6 100644 --- a/src/main/java/com/example/parking/auth/authcode/AuthCodeCategory.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/AuthCodeCategory.java @@ -1,4 +1,4 @@ -package com.example.parking.auth.authcode; +package com.parkingcomestrue.parking.application.auth.authcode; import java.util.Arrays; import lombok.Getter; diff --git a/src/main/java/com/example/parking/auth/authcode/application/AuthCodeEventListener.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/AuthCodeEventListener.java similarity index 83% rename from src/main/java/com/example/parking/auth/authcode/application/AuthCodeEventListener.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/AuthCodeEventListener.java index 4c8021b1..1129465e 100644 --- a/src/main/java/com/example/parking/auth/authcode/application/AuthCodeEventListener.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/AuthCodeEventListener.java @@ -1,9 +1,9 @@ -package com.example.parking.auth.authcode.application; +package com.parkingcomestrue.parking.application.auth.authcode; -import com.example.parking.auth.authcode.event.AuthCodeCreateEvent; -import com.example.parking.auth.authcode.infrastructure.AuthCodeSender; -import com.example.parking.auth.authcode.util.AuthCodeKeyConverter; +import com.parkingcomestrue.parking.application.auth.authcode.dto.AuthCodeCreateEvent; +import com.parkingcomestrue.parking.application.auth.authcode.infrastructure.AuthCodeSender; +import com.parkingcomestrue.parking.application.auth.authcode.util.AuthCodeKeyConverter; import java.time.Instant; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; diff --git a/src/main/java/com/example/parking/auth/authcode/AuthCodePlatform.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/AuthCodePlatform.java similarity index 90% rename from src/main/java/com/example/parking/auth/authcode/AuthCodePlatform.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/AuthCodePlatform.java index 823685b8..65e7aa9d 100644 --- a/src/main/java/com/example/parking/auth/authcode/AuthCodePlatform.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/AuthCodePlatform.java @@ -1,4 +1,4 @@ -package com.example.parking.auth.authcode; +package com.parkingcomestrue.parking.application.auth.authcode; import java.util.Arrays; diff --git a/src/main/java/com/example/parking/auth/authcode/application/AuthCodeValidator.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/AuthCodeValidator.java similarity index 79% rename from src/main/java/com/example/parking/auth/authcode/application/AuthCodeValidator.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/AuthCodeValidator.java index 2ea904e7..b570305d 100644 --- a/src/main/java/com/example/parking/auth/authcode/application/AuthCodeValidator.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/AuthCodeValidator.java @@ -1,7 +1,5 @@ -package com.example.parking.auth.authcode.application; +package com.parkingcomestrue.parking.application.auth.authcode; -import com.example.parking.auth.authcode.AuthCodePlatform; -import com.example.parking.auth.authcode.InValidAuthCodeException; import java.util.EnumMap; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/example/parking/auth/authcode/InValidAuthCodeException.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/InValidAuthCodeException.java similarity index 77% rename from src/main/java/com/example/parking/auth/authcode/InValidAuthCodeException.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/InValidAuthCodeException.java index 72f5a2e7..7bc88881 100644 --- a/src/main/java/com/example/parking/auth/authcode/InValidAuthCodeException.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/InValidAuthCodeException.java @@ -1,4 +1,4 @@ -package com.example.parking.auth.authcode; +package com.parkingcomestrue.parking.application.auth.authcode; public class InValidAuthCodeException extends RuntimeException { diff --git a/src/main/java/com/example/parking/auth/authcode/application/MailPlatformValidator.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/MailPlatformValidator.java similarity index 88% rename from src/main/java/com/example/parking/auth/authcode/application/MailPlatformValidator.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/MailPlatformValidator.java index e023ec4b..695a0b47 100644 --- a/src/main/java/com/example/parking/auth/authcode/application/MailPlatformValidator.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/MailPlatformValidator.java @@ -1,4 +1,4 @@ -package com.example.parking.auth.authcode.application; +package com.parkingcomestrue.parking.application.auth.authcode; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/src/main/java/com/example/parking/auth/authcode/application/PlatformValidator.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/PlatformValidator.java similarity index 57% rename from src/main/java/com/example/parking/auth/authcode/application/PlatformValidator.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/PlatformValidator.java index 2c72f19b..d33eaac9 100644 --- a/src/main/java/com/example/parking/auth/authcode/application/PlatformValidator.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/PlatformValidator.java @@ -1,4 +1,4 @@ -package com.example.parking.auth.authcode.application; +package com.parkingcomestrue.parking.application.auth.authcode; public interface PlatformValidator { diff --git a/src/main/java/com/example/parking/auth/authcode/application/dto/AuthCodeCertificateRequest.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/dto/AuthCodeCertificateRequest.java similarity index 89% rename from src/main/java/com/example/parking/auth/authcode/application/dto/AuthCodeCertificateRequest.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/dto/AuthCodeCertificateRequest.java index ff689c76..ea2d85ff 100644 --- a/src/main/java/com/example/parking/auth/authcode/application/dto/AuthCodeCertificateRequest.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/dto/AuthCodeCertificateRequest.java @@ -1,4 +1,4 @@ -package com.example.parking.auth.authcode.application.dto; +package com.parkingcomestrue.parking.application.auth.authcode.dto; import lombok.Getter; diff --git a/src/main/java/com/example/parking/auth/authcode/event/AuthCodeCreateEvent.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/dto/AuthCodeCreateEvent.java similarity index 88% rename from src/main/java/com/example/parking/auth/authcode/event/AuthCodeCreateEvent.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/dto/AuthCodeCreateEvent.java index 2aad93fb..eba65049 100644 --- a/src/main/java/com/example/parking/auth/authcode/event/AuthCodeCreateEvent.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/dto/AuthCodeCreateEvent.java @@ -1,4 +1,4 @@ -package com.example.parking.auth.authcode.event; +package com.parkingcomestrue.parking.application.auth.authcode.dto; import lombok.Getter; diff --git a/src/main/java/com/example/parking/auth/authcode/application/dto/AuthCodeRequest.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/dto/AuthCodeRequest.java similarity index 86% rename from src/main/java/com/example/parking/auth/authcode/application/dto/AuthCodeRequest.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/dto/AuthCodeRequest.java index eddcd68f..0b49d45a 100644 --- a/src/main/java/com/example/parking/auth/authcode/application/dto/AuthCodeRequest.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/dto/AuthCodeRequest.java @@ -1,4 +1,4 @@ -package com.example.parking.auth.authcode.application.dto; +package com.parkingcomestrue.parking.application.auth.authcode.dto; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/example/parking/auth/authcode/application/dto/AuthCodeResponse.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/dto/AuthCodeResponse.java similarity index 73% rename from src/main/java/com/example/parking/auth/authcode/application/dto/AuthCodeResponse.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/dto/AuthCodeResponse.java index 4c44603d..c030750e 100644 --- a/src/main/java/com/example/parking/auth/authcode/application/dto/AuthCodeResponse.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/dto/AuthCodeResponse.java @@ -1,4 +1,4 @@ -package com.example.parking.auth.authcode.application.dto; +package com.parkingcomestrue.parking.application.auth.authcode.dto; import lombok.Getter; diff --git a/src/main/java/com/example/parking/auth/authcode/infrastructure/AuthCodeSender.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/infrastructure/AuthCodeSender.java similarity index 53% rename from src/main/java/com/example/parking/auth/authcode/infrastructure/AuthCodeSender.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/infrastructure/AuthCodeSender.java index 4e69d603..e51d045b 100644 --- a/src/main/java/com/example/parking/auth/authcode/infrastructure/AuthCodeSender.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/infrastructure/AuthCodeSender.java @@ -1,4 +1,4 @@ -package com.example.parking.auth.authcode.infrastructure; +package com.parkingcomestrue.parking.application.auth.authcode.infrastructure; public interface AuthCodeSender { diff --git a/src/main/java/com/example/parking/auth/authcode/infrastructure/MailAuthCodeSender.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/infrastructure/MailAuthCodeSender.java similarity index 89% rename from src/main/java/com/example/parking/auth/authcode/infrastructure/MailAuthCodeSender.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/infrastructure/MailAuthCodeSender.java index 69af06af..051bee8a 100644 --- a/src/main/java/com/example/parking/auth/authcode/infrastructure/MailAuthCodeSender.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/infrastructure/MailAuthCodeSender.java @@ -1,4 +1,4 @@ -package com.example.parking.auth.authcode.infrastructure; +package com.parkingcomestrue.parking.application.auth.authcode.infrastructure; import lombok.RequiredArgsConstructor; import org.springframework.mail.SimpleMailMessage; diff --git a/src/main/java/com/example/parking/util/authcode/AuthCodeGenerator.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/util/AuthCodeGenerator.java similarity index 51% rename from src/main/java/com/example/parking/util/authcode/AuthCodeGenerator.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/util/AuthCodeGenerator.java index d505a434..0bfa0711 100644 --- a/src/main/java/com/example/parking/util/authcode/AuthCodeGenerator.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/util/AuthCodeGenerator.java @@ -1,4 +1,4 @@ -package com.example.parking.util.authcode; +package com.parkingcomestrue.parking.application.auth.authcode.util; public interface AuthCodeGenerator { diff --git a/src/main/java/com/example/parking/auth/authcode/util/AuthCodeKeyConverter.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/util/AuthCodeKeyConverter.java similarity index 87% rename from src/main/java/com/example/parking/auth/authcode/util/AuthCodeKeyConverter.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/util/AuthCodeKeyConverter.java index 86dc10d8..0b8a9743 100644 --- a/src/main/java/com/example/parking/auth/authcode/util/AuthCodeKeyConverter.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/util/AuthCodeKeyConverter.java @@ -1,4 +1,5 @@ -package com.example.parking.auth.authcode.util; + +package com.parkingcomestrue.parking.application.auth.authcode.util; import java.util.StringJoiner; diff --git a/src/main/java/com/example/parking/util/authcode/NumberAuthCodeGenerator.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/util/NumberAuthCodeGenerator.java similarity index 88% rename from src/main/java/com/example/parking/util/authcode/NumberAuthCodeGenerator.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/util/NumberAuthCodeGenerator.java index 0a26bc9e..56ae56de 100644 --- a/src/main/java/com/example/parking/util/authcode/NumberAuthCodeGenerator.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/auth/authcode/util/NumberAuthCodeGenerator.java @@ -1,4 +1,4 @@ -package com.example.parking.util.authcode; +package com.parkingcomestrue.parking.application.auth.authcode.util; import java.util.Random; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/example/parking/application/favorite/FavoriteService.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/favorite/FavoriteService.java similarity index 75% rename from src/main/java/com/example/parking/application/favorite/FavoriteService.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/favorite/FavoriteService.java index 5dff0b87..b8205282 100644 --- a/src/main/java/com/example/parking/application/favorite/FavoriteService.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/favorite/FavoriteService.java @@ -1,10 +1,10 @@ -package com.example.parking.application.favorite; +package com.parkingcomestrue.parking.application.favorite; -import com.example.parking.application.favorite.dto.FavoriteCreateRequest; -import com.example.parking.application.favorite.dto.FavoriteDeleteRequest; -import com.example.parking.domain.favorite.Favorite; -import com.example.parking.domain.favorite.FavoriteRepository; -import com.example.parking.support.Association; +import com.parkingcomestrue.parking.application.favorite.dto.FavoriteCreateRequest; +import com.parkingcomestrue.parking.application.favorite.dto.FavoriteDeleteRequest; +import com.parkingcomestrue.common.domain.favorite.Favorite; +import com.parkingcomestrue.common.domain.favorite.repository.FavoriteRepository; +import com.parkingcomestrue.common.support.Association; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.dao.DataIntegrityViolationException; diff --git a/src/main/java/com/example/parking/application/favorite/dto/FavoriteCreateRequest.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/favorite/dto/FavoriteCreateRequest.java similarity index 79% rename from src/main/java/com/example/parking/application/favorite/dto/FavoriteCreateRequest.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/favorite/dto/FavoriteCreateRequest.java index 11d349c0..1b89faf9 100644 --- a/src/main/java/com/example/parking/application/favorite/dto/FavoriteCreateRequest.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/favorite/dto/FavoriteCreateRequest.java @@ -1,4 +1,4 @@ -package com.example.parking.application.favorite.dto; +package com.parkingcomestrue.parking.application.favorite.dto; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/example/parking/application/favorite/dto/FavoriteDeleteRequest.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/favorite/dto/FavoriteDeleteRequest.java similarity index 79% rename from src/main/java/com/example/parking/application/favorite/dto/FavoriteDeleteRequest.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/favorite/dto/FavoriteDeleteRequest.java index c76fadcc..22936742 100644 --- a/src/main/java/com/example/parking/application/favorite/dto/FavoriteDeleteRequest.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/favorite/dto/FavoriteDeleteRequest.java @@ -1,4 +1,4 @@ -package com.example.parking.application.favorite.dto; +package com.parkingcomestrue.parking.application.favorite.dto; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/example/parking/application/member/MemberService.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/member/MemberService.java similarity index 63% rename from src/main/java/com/example/parking/application/member/MemberService.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/member/MemberService.java index d87dfa2e..b5bee195 100644 --- a/src/main/java/com/example/parking/application/member/MemberService.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/member/MemberService.java @@ -1,14 +1,14 @@ -package com.example.parking.application.member; +package com.parkingcomestrue.parking.application.member; -import com.example.parking.application.member.dto.MemberInfoResponse; -import com.example.parking.application.member.dto.MemberLoginRequest; -import com.example.parking.application.member.dto.MemberSignupRequest; -import com.example.parking.application.member.dto.PasswordChangeRequest; -import com.example.parking.domain.member.Member; -import com.example.parking.domain.member.MemberRepository; -import com.example.parking.domain.member.Password; -import com.example.parking.support.exception.ClientException; -import com.example.parking.support.exception.ExceptionInformation; +import com.parkingcomestrue.parking.application.member.dto.MemberInfoResponse; +import com.parkingcomestrue.parking.application.member.dto.MemberLoginRequest; +import com.parkingcomestrue.parking.application.member.dto.MemberSignupRequest; +import com.parkingcomestrue.parking.application.member.dto.PasswordChangeRequest; +import com.parkingcomestrue.common.domain.member.Member; +import com.parkingcomestrue.common.domain.member.repository.MemberRepository; +import com.parkingcomestrue.common.domain.member.Password; +import com.parkingcomestrue.parking.support.exception.ClientException; +import com.parkingcomestrue.parking.support.exception.ClientExceptionInformation; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -35,26 +35,20 @@ public Long signup(MemberSignupRequest dto) { private void validateDuplicatedEmail(Member member) { if (memberRepository.existsByEmail(member.getEmail())) { - throw new ClientException(ExceptionInformation.DUPLICATE_MAIL); + throw new ClientException(ClientExceptionInformation.DUPLICATE_MAIL); } } @Transactional(readOnly = true) public Long login(MemberLoginRequest dto) { Member member = findMemberByEmail(dto.getEmail()); - validatePassword(member, dto.getPassword()); + member.validatePassword(dto.getPassword()); return member.getId(); } private Member findMemberByEmail(String email) { return memberRepository.findByEmail(email) - .orElseThrow(() -> new ClientException(ExceptionInformation.INVALID_EMAIL)); - } - - private void validatePassword(Member member, String password) { - if (!member.checkPassword(password)) { - throw new ClientException(ExceptionInformation.INVALID_PASSWORD); - } + .orElseThrow(() -> new ClientException(ClientExceptionInformation.INVALID_EMAIL)); } @Transactional diff --git a/src/main/java/com/example/parking/application/member/dto/MemberInfoResponse.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/member/dto/MemberInfoResponse.java similarity index 85% rename from src/main/java/com/example/parking/application/member/dto/MemberInfoResponse.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/member/dto/MemberInfoResponse.java index b6734fcc..01f29c39 100644 --- a/src/main/java/com/example/parking/application/member/dto/MemberInfoResponse.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/member/dto/MemberInfoResponse.java @@ -1,4 +1,4 @@ -package com.example.parking.application.member.dto; +package com.parkingcomestrue.parking.application.member.dto; import lombok.AccessLevel; import lombok.Getter; diff --git a/src/main/java/com/example/parking/application/member/dto/MemberLoginRequest.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/member/dto/MemberLoginRequest.java similarity index 83% rename from src/main/java/com/example/parking/application/member/dto/MemberLoginRequest.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/member/dto/MemberLoginRequest.java index b94367f4..f218b066 100644 --- a/src/main/java/com/example/parking/application/member/dto/MemberLoginRequest.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/member/dto/MemberLoginRequest.java @@ -1,4 +1,4 @@ -package com.example.parking.application.member.dto; +package com.parkingcomestrue.parking.application.member.dto; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/example/parking/application/member/dto/MemberSignupRequest.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/member/dto/MemberSignupRequest.java similarity index 88% rename from src/main/java/com/example/parking/application/member/dto/MemberSignupRequest.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/member/dto/MemberSignupRequest.java index f7276320..66fbb7c9 100644 --- a/src/main/java/com/example/parking/application/member/dto/MemberSignupRequest.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/member/dto/MemberSignupRequest.java @@ -1,4 +1,4 @@ -package com.example.parking.application.member.dto; +package com.parkingcomestrue.parking.application.member.dto; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/example/parking/application/member/dto/PasswordChangeRequest.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/member/dto/PasswordChangeRequest.java similarity index 85% rename from src/main/java/com/example/parking/application/member/dto/PasswordChangeRequest.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/member/dto/PasswordChangeRequest.java index 9d04c1ec..0f3f72ab 100644 --- a/src/main/java/com/example/parking/application/member/dto/PasswordChangeRequest.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/member/dto/PasswordChangeRequest.java @@ -1,4 +1,4 @@ -package com.example.parking.application.member.dto; +package com.parkingcomestrue.parking.application.member.dto; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/example/parking/application/parking/ParkingService.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/parking/ParkingService.java similarity index 78% rename from src/main/java/com/example/parking/application/parking/ParkingService.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/parking/ParkingService.java index d0dffef5..a3d30a03 100644 --- a/src/main/java/com/example/parking/application/parking/ParkingService.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/parking/ParkingService.java @@ -1,30 +1,31 @@ -package com.example.parking.application.parking; - -import com.example.parking.application.SearchConditionMapper; -import com.example.parking.application.parking.dto.ParkingDetailInfoResponse; -import com.example.parking.application.parking.dto.ParkingDetailInfoResponse.FeeInfo; -import com.example.parking.application.parking.dto.ParkingDetailInfoResponse.HolidayOperatingTime; -import com.example.parking.application.parking.dto.ParkingDetailInfoResponse.SaturdayOperatingTime; -import com.example.parking.application.parking.dto.ParkingDetailInfoResponse.WeekdayOperatingTime; -import com.example.parking.application.parking.dto.ParkingLotsResponse; -import com.example.parking.application.parking.dto.ParkingLotsResponse.ParkingResponse; -import com.example.parking.application.parking.dto.ParkingQueryRequest; -import com.example.parking.application.parking.dto.ParkingSearchConditionRequest; -import com.example.parking.application.review.ReviewService; -import com.example.parking.application.review.dto.ReviewInfoResponse; -import com.example.parking.domain.favorite.Favorite; -import com.example.parking.domain.favorite.FavoriteRepository; -import com.example.parking.domain.parking.Fee; -import com.example.parking.domain.parking.Location; -import com.example.parking.domain.parking.OperationType; -import com.example.parking.domain.parking.Parking; -import com.example.parking.domain.parking.ParkingFeeCalculator; -import com.example.parking.domain.parking.ParkingType; -import com.example.parking.domain.parking.PayType; -import com.example.parking.domain.parking.SearchingCondition; -import com.example.parking.domain.parking.repository.ParkingRepository; -import com.example.parking.domain.searchcondition.FeeType; -import com.example.parking.support.Association; +package com.parkingcomestrue.parking.application.parking; + +import com.parkingcomestrue.parking.application.SearchConditionMapper; +import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse; +import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.FeeInfo; +import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.HolidayOperatingTime; +import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.SaturdayOperatingTime; +import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.WeekdayOperatingTime; +import com.parkingcomestrue.parking.application.parking.dto.ParkingLotsResponse; +import com.parkingcomestrue.parking.application.parking.dto.ParkingLotsResponse.ParkingResponse; +import com.parkingcomestrue.parking.application.parking.dto.ParkingQueryRequest; +import com.parkingcomestrue.parking.application.parking.dto.ParkingSearchConditionRequest; +import com.parkingcomestrue.parking.application.review.ReviewService; +import com.parkingcomestrue.parking.application.review.dto.ReviewInfoResponse; +import com.parkingcomestrue.common.domain.favorite.Favorite; +import com.parkingcomestrue.common.domain.favorite.repository.FavoriteRepository; +import com.parkingcomestrue.common.domain.parking.Fee; +import com.parkingcomestrue.common.domain.parking.Location; +import com.parkingcomestrue.common.domain.parking.OperationType; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.parking.ParkingFeeCalculator; +import com.parkingcomestrue.common.domain.parking.ParkingType; +import com.parkingcomestrue.common.domain.parking.PayType; +import com.parkingcomestrue.common.domain.parking.SearchingCondition; +import com.parkingcomestrue.common.domain.parking.repository.ParkingRepository; +import com.parkingcomestrue.common.domain.parking.service.ParkingFilteringService; +import com.parkingcomestrue.common.domain.searchcondition.FeeType; +import com.parkingcomestrue.common.support.Association; import java.time.LocalDateTime; import java.util.Collections; import java.util.List; @@ -141,11 +142,6 @@ public void saveAll(List parkingLots) { parkingRepository.saveAll(parkingLots); } - @Transactional(readOnly = true) - public Set getParkingLots(Set parkingNames) { - return parkingRepository.findAllByBaseInformationNameIn(parkingNames); - } - @Transactional(readOnly = true) public ParkingDetailInfoResponse findParking(Long parkingId) { LocalDateTime now = LocalDateTime.now(); diff --git a/src/main/java/com/example/parking/application/parking/dto/ParkingDetailInfoResponse.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/parking/dto/ParkingDetailInfoResponse.java similarity index 95% rename from src/main/java/com/example/parking/application/parking/dto/ParkingDetailInfoResponse.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/parking/dto/ParkingDetailInfoResponse.java index 7f46f805..29dc9517 100644 --- a/src/main/java/com/example/parking/application/parking/dto/ParkingDetailInfoResponse.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/parking/dto/ParkingDetailInfoResponse.java @@ -1,6 +1,6 @@ -package com.example.parking.application.parking.dto; +package com.parkingcomestrue.parking.application.parking.dto; -import com.example.parking.application.review.dto.ReviewInfoResponse; +import com.parkingcomestrue.parking.application.review.dto.ReviewInfoResponse; import java.time.LocalTime; import lombok.AccessLevel; import lombok.Getter; diff --git a/src/main/java/com/example/parking/application/parking/dto/ParkingLotsResponse.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/parking/dto/ParkingLotsResponse.java similarity index 95% rename from src/main/java/com/example/parking/application/parking/dto/ParkingLotsResponse.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/parking/dto/ParkingLotsResponse.java index aa4f05cd..5996b478 100644 --- a/src/main/java/com/example/parking/application/parking/dto/ParkingLotsResponse.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/parking/dto/ParkingLotsResponse.java @@ -1,4 +1,4 @@ -package com.example.parking.application.parking.dto; +package com.parkingcomestrue.parking.application.parking.dto; import java.util.List; import lombok.Getter; diff --git a/src/main/java/com/example/parking/application/parking/dto/ParkingQueryRequest.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/parking/dto/ParkingQueryRequest.java similarity index 85% rename from src/main/java/com/example/parking/application/parking/dto/ParkingQueryRequest.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/parking/dto/ParkingQueryRequest.java index e0590f4d..f5f322b0 100644 --- a/src/main/java/com/example/parking/application/parking/dto/ParkingQueryRequest.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/parking/dto/ParkingQueryRequest.java @@ -1,4 +1,4 @@ -package com.example.parking.application.parking.dto; +package com.parkingcomestrue.parking.application.parking.dto; import lombok.Getter; diff --git a/src/main/java/com/example/parking/application/parking/dto/ParkingSearchConditionRequest.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/parking/dto/ParkingSearchConditionRequest.java similarity index 92% rename from src/main/java/com/example/parking/application/parking/dto/ParkingSearchConditionRequest.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/parking/dto/ParkingSearchConditionRequest.java index 8ff8ccb3..e710426b 100644 --- a/src/main/java/com/example/parking/application/parking/dto/ParkingSearchConditionRequest.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/parking/dto/ParkingSearchConditionRequest.java @@ -1,4 +1,4 @@ -package com.example.parking.application.parking.dto; +package com.parkingcomestrue.parking.application.parking.dto; import java.util.List; import lombok.Getter; diff --git a/src/main/java/com/example/parking/application/review/ReviewService.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/review/ReviewService.java similarity index 71% rename from src/main/java/com/example/parking/application/review/ReviewService.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/review/ReviewService.java index 5e965f25..3f5040fa 100644 --- a/src/main/java/com/example/parking/application/review/ReviewService.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/review/ReviewService.java @@ -1,13 +1,13 @@ -package com.example.parking.application.review; +package com.parkingcomestrue.parking.application.review; -import com.example.parking.application.review.dto.ReviewCountResponse; -import com.example.parking.application.review.dto.ReviewCreateRequest; -import com.example.parking.application.review.dto.ReviewInfoResponse; -import com.example.parking.support.Association; -import com.example.parking.domain.review.Content; -import com.example.parking.domain.review.Review; -import com.example.parking.domain.review.ReviewRepository; -import com.example.parking.domain.review.service.ReviewDomainService; +import com.parkingcomestrue.parking.application.review.dto.ReviewCountResponse; +import com.parkingcomestrue.parking.application.review.dto.ReviewCreateRequest; +import com.parkingcomestrue.parking.application.review.dto.ReviewInfoResponse; +import com.parkingcomestrue.common.domain.review.Content; +import com.parkingcomestrue.common.domain.review.Review; +import com.parkingcomestrue.common.domain.review.repository.ReviewRepository; +import com.parkingcomestrue.common.domain.review.service.ReviewDomainService; +import com.parkingcomestrue.common.support.Association; import java.util.Comparator; import java.util.List; import java.util.Map; diff --git a/src/main/java/com/example/parking/application/review/dto/ReviewCountResponse.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/review/dto/ReviewCountResponse.java similarity index 52% rename from src/main/java/com/example/parking/application/review/dto/ReviewCountResponse.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/review/dto/ReviewCountResponse.java index 19acd3b3..255b15f2 100644 --- a/src/main/java/com/example/parking/application/review/dto/ReviewCountResponse.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/review/dto/ReviewCountResponse.java @@ -1,4 +1,4 @@ -package com.example.parking.application.review.dto; +package com.parkingcomestrue.parking.application.review.dto; public record ReviewCountResponse(String content, int count) { diff --git a/src/main/java/com/example/parking/application/review/dto/ReviewCreateRequest.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/review/dto/ReviewCreateRequest.java similarity index 65% rename from src/main/java/com/example/parking/application/review/dto/ReviewCreateRequest.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/review/dto/ReviewCreateRequest.java index 689a22f9..c14deb08 100644 --- a/src/main/java/com/example/parking/application/review/dto/ReviewCreateRequest.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/review/dto/ReviewCreateRequest.java @@ -1,6 +1,6 @@ -package com.example.parking.application.review.dto; +package com.parkingcomestrue.parking.application.review.dto; -import com.example.parking.domain.review.Content; +import com.parkingcomestrue.common.domain.review.Content; import java.util.List; public record ReviewCreateRequest(List contents) { diff --git a/src/main/java/com/example/parking/application/review/dto/ReviewInfoResponse.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/review/dto/ReviewInfoResponse.java similarity index 66% rename from src/main/java/com/example/parking/application/review/dto/ReviewInfoResponse.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/review/dto/ReviewInfoResponse.java index fe4ed110..3f69b913 100644 --- a/src/main/java/com/example/parking/application/review/dto/ReviewInfoResponse.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/review/dto/ReviewInfoResponse.java @@ -1,4 +1,4 @@ -package com.example.parking.application.review.dto; +package com.parkingcomestrue.parking.application.review.dto; import java.util.List; diff --git a/src/main/java/com/example/parking/application/searchcondition/SearchConditionService.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/searchcondition/SearchConditionService.java similarity index 73% rename from src/main/java/com/example/parking/application/searchcondition/SearchConditionService.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/searchcondition/SearchConditionService.java index 5649eb99..e4869e04 100644 --- a/src/main/java/com/example/parking/application/searchcondition/SearchConditionService.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/searchcondition/SearchConditionService.java @@ -1,17 +1,17 @@ -package com.example.parking.application.searchcondition; +package com.parkingcomestrue.parking.application.searchcondition; -import com.example.parking.application.SearchConditionMapper; -import com.example.parking.application.searchcondition.dto.SearchConditionDto; -import com.example.parking.domain.parking.OperationType; -import com.example.parking.domain.parking.ParkingType; -import com.example.parking.domain.parking.PayType; -import com.example.parking.domain.searchcondition.FeeType; -import com.example.parking.domain.searchcondition.Hours; -import com.example.parking.domain.searchcondition.Priority; -import com.example.parking.domain.searchcondition.SearchCondition; -import com.example.parking.domain.searchcondition.SearchConditionAvailable; -import com.example.parking.domain.searchcondition.SearchConditionRepository; -import com.example.parking.support.Association; +import com.parkingcomestrue.parking.application.SearchConditionMapper; +import com.parkingcomestrue.parking.application.searchcondition.dto.SearchConditionDto; +import com.parkingcomestrue.common.domain.parking.OperationType; +import com.parkingcomestrue.common.domain.parking.ParkingType; +import com.parkingcomestrue.common.domain.parking.PayType; +import com.parkingcomestrue.common.domain.searchcondition.FeeType; +import com.parkingcomestrue.common.domain.searchcondition.Hours; +import com.parkingcomestrue.common.domain.searchcondition.Priority; +import com.parkingcomestrue.common.domain.searchcondition.SearchCondition; +import com.parkingcomestrue.common.domain.searchcondition.SearchConditionAvailable; +import com.parkingcomestrue.common.domain.searchcondition.repository.SearchConditionRepository; +import com.parkingcomestrue.common.support.Association; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/example/parking/application/searchcondition/dto/SearchConditionDto.java b/app-api/src/main/java/com/parkingcomestrue/parking/application/searchcondition/dto/SearchConditionDto.java similarity index 90% rename from src/main/java/com/example/parking/application/searchcondition/dto/SearchConditionDto.java rename to app-api/src/main/java/com/parkingcomestrue/parking/application/searchcondition/dto/SearchConditionDto.java index 6cda8ad8..cb991b0c 100644 --- a/src/main/java/com/example/parking/application/searchcondition/dto/SearchConditionDto.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/application/searchcondition/dto/SearchConditionDto.java @@ -1,4 +1,4 @@ -package com.example.parking.application.searchcondition.dto; +package com.parkingcomestrue.parking.application.searchcondition.dto; import java.util.List; import lombok.Getter; diff --git a/src/main/java/com/example/parking/external/config/RedisConfig.java b/app-api/src/main/java/com/parkingcomestrue/parking/config/RedisConfig.java similarity index 96% rename from src/main/java/com/example/parking/external/config/RedisConfig.java rename to app-api/src/main/java/com/parkingcomestrue/parking/config/RedisConfig.java index 40fe88b3..f4ef7089 100644 --- a/src/main/java/com/example/parking/external/config/RedisConfig.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/config/RedisConfig.java @@ -1,4 +1,4 @@ -package com.example.parking.external.config; +package com.parkingcomestrue.parking.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; diff --git a/src/main/java/com/example/parking/config/SwaggerConfig.java b/app-api/src/main/java/com/parkingcomestrue/parking/config/SwaggerConfig.java similarity index 96% rename from src/main/java/com/example/parking/config/SwaggerConfig.java rename to app-api/src/main/java/com/parkingcomestrue/parking/config/SwaggerConfig.java index a3a5230a..3a1c838c 100644 --- a/src/main/java/com/example/parking/config/SwaggerConfig.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/config/SwaggerConfig.java @@ -1,4 +1,4 @@ -package com.example.parking.config; +package com.parkingcomestrue.parking.config; import io.swagger.v3.oas.annotations.OpenAPIDefinition; import io.swagger.v3.oas.annotations.info.Info; diff --git a/src/main/java/com/example/parking/config/WebMvcConfig.java b/app-api/src/main/java/com/parkingcomestrue/parking/config/WebMvcConfig.java similarity index 85% rename from src/main/java/com/example/parking/config/WebMvcConfig.java rename to app-api/src/main/java/com/parkingcomestrue/parking/config/WebMvcConfig.java index 628c0431..cb8f0f84 100644 --- a/src/main/java/com/example/parking/config/WebMvcConfig.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/config/WebMvcConfig.java @@ -1,9 +1,9 @@ -package com.example.parking.config; +package com.parkingcomestrue.parking.config; -import com.example.parking.config.argumentresolver.AuthArgumentResolver; -import com.example.parking.config.argumentresolver.parking.ParkingQueryArgumentResolver; -import com.example.parking.config.argumentresolver.parking.ParkingSearchConditionArgumentResolver; -import com.example.parking.config.interceptor.AuthInterceptor; +import com.parkingcomestrue.parking.config.argumentresolver.AuthArgumentResolver; +import com.parkingcomestrue.parking.config.argumentresolver.parking.ParkingQueryArgumentResolver; +import com.parkingcomestrue.parking.config.argumentresolver.parking.ParkingSearchConditionArgumentResolver; +import com.parkingcomestrue.parking.config.interceptor.AuthInterceptor; import io.swagger.v3.oas.models.PathItem; import java.util.List; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/example/parking/config/argumentresolver/AuthArgumentResolver.java b/app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/AuthArgumentResolver.java similarity index 87% rename from src/main/java/com/example/parking/config/argumentresolver/AuthArgumentResolver.java rename to app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/AuthArgumentResolver.java index 8a4ae81f..fa28a409 100644 --- a/src/main/java/com/example/parking/config/argumentresolver/AuthArgumentResolver.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/AuthArgumentResolver.java @@ -1,7 +1,7 @@ -package com.example.parking.config.argumentresolver; +package com.parkingcomestrue.parking.config.argumentresolver; -import com.example.parking.auth.AuthService; -import com.example.parking.auth.session.MemberSession; +import com.parkingcomestrue.parking.application.auth.AuthService; +import com.parkingcomestrue.common.domain.session.MemberSession; import lombok.RequiredArgsConstructor; import org.springframework.core.MethodParameter; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/example/parking/config/argumentresolver/MemberAuth.java b/app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/MemberAuth.java similarity index 82% rename from src/main/java/com/example/parking/config/argumentresolver/MemberAuth.java rename to app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/MemberAuth.java index 4fdcee5a..6f4ea2bf 100644 --- a/src/main/java/com/example/parking/config/argumentresolver/MemberAuth.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/MemberAuth.java @@ -1,4 +1,4 @@ -package com.example.parking.config.argumentresolver; +package com.parkingcomestrue.parking.config.argumentresolver; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/src/main/java/com/example/parking/config/argumentresolver/parking/ParkingQuery.java b/app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/parking/ParkingQuery.java similarity index 79% rename from src/main/java/com/example/parking/config/argumentresolver/parking/ParkingQuery.java rename to app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/parking/ParkingQuery.java index e328d4e7..ad3d7bcc 100644 --- a/src/main/java/com/example/parking/config/argumentresolver/parking/ParkingQuery.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/parking/ParkingQuery.java @@ -1,4 +1,4 @@ -package com.example.parking.config.argumentresolver.parking; +package com.parkingcomestrue.parking.config.argumentresolver.parking; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/src/main/java/com/example/parking/config/argumentresolver/parking/ParkingQueryArgumentResolver.java b/app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/parking/ParkingQueryArgumentResolver.java similarity index 88% rename from src/main/java/com/example/parking/config/argumentresolver/parking/ParkingQueryArgumentResolver.java rename to app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/parking/ParkingQueryArgumentResolver.java index 082db669..a3f3dc24 100644 --- a/src/main/java/com/example/parking/config/argumentresolver/parking/ParkingQueryArgumentResolver.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/parking/ParkingQueryArgumentResolver.java @@ -1,6 +1,6 @@ -package com.example.parking.config.argumentresolver.parking; +package com.parkingcomestrue.parking.config.argumentresolver.parking; -import com.example.parking.application.parking.dto.ParkingQueryRequest; +import com.parkingcomestrue.parking.application.parking.dto.ParkingQueryRequest; import org.springframework.core.MethodParameter; import org.springframework.stereotype.Component; import org.springframework.web.bind.support.WebDataBinderFactory; diff --git a/src/main/java/com/example/parking/config/argumentresolver/parking/ParkingSearchCondition.java b/app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/parking/ParkingSearchCondition.java similarity index 79% rename from src/main/java/com/example/parking/config/argumentresolver/parking/ParkingSearchCondition.java rename to app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/parking/ParkingSearchCondition.java index 275cf05e..347f710d 100644 --- a/src/main/java/com/example/parking/config/argumentresolver/parking/ParkingSearchCondition.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/parking/ParkingSearchCondition.java @@ -1,4 +1,4 @@ -package com.example.parking.config.argumentresolver.parking; +package com.parkingcomestrue.parking.config.argumentresolver.parking; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/src/main/java/com/example/parking/config/argumentresolver/parking/ParkingSearchConditionArgumentResolver.java b/app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/parking/ParkingSearchConditionArgumentResolver.java similarity index 87% rename from src/main/java/com/example/parking/config/argumentresolver/parking/ParkingSearchConditionArgumentResolver.java rename to app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/parking/ParkingSearchConditionArgumentResolver.java index 4514e6bb..a4698554 100644 --- a/src/main/java/com/example/parking/config/argumentresolver/parking/ParkingSearchConditionArgumentResolver.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/config/argumentresolver/parking/ParkingSearchConditionArgumentResolver.java @@ -1,10 +1,10 @@ -package com.example.parking.config.argumentresolver.parking; +package com.parkingcomestrue.parking.config.argumentresolver.parking; -import com.example.parking.application.SearchConditionMapper; -import com.example.parking.application.parking.dto.ParkingSearchConditionRequest; -import com.example.parking.domain.parking.OperationType; -import com.example.parking.domain.parking.ParkingType; -import com.example.parking.domain.parking.PayType; +import com.parkingcomestrue.parking.application.SearchConditionMapper; +import com.parkingcomestrue.parking.application.parking.dto.ParkingSearchConditionRequest; +import com.parkingcomestrue.common.domain.parking.OperationType; +import com.parkingcomestrue.common.domain.parking.ParkingType; +import com.parkingcomestrue.common.domain.parking.PayType; import java.util.Arrays; import java.util.List; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/example/parking/config/interceptor/AuthInterceptor.java b/app-api/src/main/java/com/parkingcomestrue/parking/config/interceptor/AuthInterceptor.java similarity index 82% rename from src/main/java/com/example/parking/config/interceptor/AuthInterceptor.java rename to app-api/src/main/java/com/parkingcomestrue/parking/config/interceptor/AuthInterceptor.java index 71f09d76..848879ce 100644 --- a/src/main/java/com/example/parking/config/interceptor/AuthInterceptor.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/config/interceptor/AuthInterceptor.java @@ -1,7 +1,7 @@ -package com.example.parking.config.interceptor; +package com.parkingcomestrue.parking.config.interceptor; -import com.example.parking.auth.AuthService; -import com.example.parking.auth.session.MemberSession; +import com.parkingcomestrue.parking.application.auth.AuthService; +import com.parkingcomestrue.common.domain.session.MemberSession; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/example/parking/support/controlleradvice/GlobalExceptionHandler.java b/app-api/src/main/java/com/parkingcomestrue/parking/controlleradvice/GlobalExceptionHandler.java similarity index 74% rename from src/main/java/com/example/parking/support/controlleradvice/GlobalExceptionHandler.java rename to app-api/src/main/java/com/parkingcomestrue/parking/controlleradvice/GlobalExceptionHandler.java index f144b70a..6d1a67d9 100644 --- a/src/main/java/com/example/parking/support/controlleradvice/GlobalExceptionHandler.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/controlleradvice/GlobalExceptionHandler.java @@ -1,12 +1,12 @@ -package com.example.parking.support.controlleradvice; +package com.parkingcomestrue.parking.controlleradvice; import static org.springframework.http.HttpStatus.BAD_REQUEST; import static org.springframework.http.HttpStatus.UNAUTHORIZED; -import com.example.parking.support.controlleradvice.dto.ExceptionResponse; -import com.example.parking.support.exception.ClientException; -import com.example.parking.support.exception.ExceptionInformation; -import com.example.parking.support.exception.DomainException; +import com.parkingcomestrue.parking.controlleradvice.dto.ExceptionResponse; +import com.parkingcomestrue.parking.support.exception.ClientException; +import com.parkingcomestrue.common.support.exception.DomainException; +import com.parkingcomestrue.parking.support.exception.ClientExceptionInformation; import java.util.EnumMap; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; @@ -18,11 +18,11 @@ @RestControllerAdvice public class GlobalExceptionHandler { - private final EnumMap exceptionInfoToHttpStatus = new EnumMap<>( - ExceptionInformation.class); + private final EnumMap exceptionInfoToHttpStatus = new EnumMap<>( + ClientExceptionInformation.class); public GlobalExceptionHandler() { - exceptionInfoToHttpStatus.put(ExceptionInformation.UNAUTHORIZED, UNAUTHORIZED); + exceptionInfoToHttpStatus.put(ClientExceptionInformation.UNAUTHORIZED, UNAUTHORIZED); } @ExceptionHandler(Exception.class) diff --git a/src/main/java/com/example/parking/support/controlleradvice/dto/ExceptionResponse.java b/app-api/src/main/java/com/parkingcomestrue/parking/controlleradvice/dto/ExceptionResponse.java similarity index 50% rename from src/main/java/com/example/parking/support/controlleradvice/dto/ExceptionResponse.java rename to app-api/src/main/java/com/parkingcomestrue/parking/controlleradvice/dto/ExceptionResponse.java index 7ee9cf6a..4f132e31 100644 --- a/src/main/java/com/example/parking/support/controlleradvice/dto/ExceptionResponse.java +++ b/app-api/src/main/java/com/parkingcomestrue/parking/controlleradvice/dto/ExceptionResponse.java @@ -1,4 +1,4 @@ -package com.example.parking.support.controlleradvice.dto; +package com.parkingcomestrue.parking.controlleradvice.dto; public record ExceptionResponse(String errorMessage) { diff --git a/app-api/src/main/java/com/parkingcomestrue/parking/support/exception/ClientException.java b/app-api/src/main/java/com/parkingcomestrue/parking/support/exception/ClientException.java new file mode 100644 index 00000000..afbcbb7b --- /dev/null +++ b/app-api/src/main/java/com/parkingcomestrue/parking/support/exception/ClientException.java @@ -0,0 +1,19 @@ +package com.parkingcomestrue.parking.support.exception; + +import lombok.Getter; + +@Getter +public class ClientException extends RuntimeException { + + private final ClientExceptionInformation exceptionInformation; + + public ClientException(ClientExceptionInformation exceptionInformation) { + super(); + this.exceptionInformation = exceptionInformation; + } + + @Override + public String getMessage() { + return exceptionInformation.getMessage(); + } +} diff --git a/app-api/src/main/java/com/parkingcomestrue/parking/support/exception/ClientExceptionInformation.java b/app-api/src/main/java/com/parkingcomestrue/parking/support/exception/ClientExceptionInformation.java new file mode 100644 index 00000000..d70d7b78 --- /dev/null +++ b/app-api/src/main/java/com/parkingcomestrue/parking/support/exception/ClientExceptionInformation.java @@ -0,0 +1,22 @@ +package com.parkingcomestrue.parking.support.exception; + +import lombok.Getter; + +@Getter +public enum ClientExceptionInformation { + + DUPLICATE_MAIL("중복된 이메일이라 회원가입이 불가능합니다."), + INVALID_EMAIL("회원가입되지 않은 이메일입니다."), + UNAUTHORIZED("존재하지 않는 sessionId 입니다."), + + INVALID_AUTH_CODE("존재하지 않는 인증코드 입니다."), + + INVALID_DESCRIPTION("해당하는 내용의 검색 조건이 존재하지 않습니다."); + + + private final String message; + + ClientExceptionInformation(String message) { + this.message = message; + } +} diff --git a/src/main/resources/application-prod.yml b/app-api/src/main/resources/application-prod.yml similarity index 57% rename from src/main/resources/application-prod.yml rename to app-api/src/main/resources/application-prod.yml index c7a26256..494fa049 100644 --- a/src/main/resources/application-prod.yml +++ b/app-api/src/main/resources/application-prod.yml @@ -12,11 +12,3 @@ spring: username: ${DB_USERNAME} password: ${DB_PASSWORD} driver-class-name: com.mysql.cj.jdbc.Driver - # flyway - flyway: - enabled: true - url: ${DB_URL} - user: ${DB_USERNAME} - password: ${DB_PASSWORD} - baseline-on-migrate: true - locations: classpath:db/migration/mysql diff --git a/src/main/resources/application.yml b/app-api/src/main/resources/application.yml similarity index 79% rename from src/main/resources/application.yml rename to app-api/src/main/resources/application.yml index ec3a02f9..b9554ae4 100644 --- a/src/main/resources/application.yml +++ b/app-api/src/main/resources/application.yml @@ -24,12 +24,6 @@ spring: authcode: expired-time: 300 -# API KEY -kakao: - key: ${KAKAO_API_KEY:kakao} -seoul-public-parking-key: ${SEOUL_API_KEY:seoul} -pusan-public-parking-key: ${PUSAN_API_KEY:pusan} - # Allow origin cors: allowedOrigins: ${ORIGIN:http://localhost:3000} diff --git a/src/test/java/com/example/parking/ParkingApplicationTests.java b/app-api/src/test/java/com/parkingcomestrue/ApiApplicationTests.java similarity index 72% rename from src/test/java/com/example/parking/ParkingApplicationTests.java rename to app-api/src/test/java/com/parkingcomestrue/ApiApplicationTests.java index db6c30db..94d62f51 100644 --- a/src/test/java/com/example/parking/ParkingApplicationTests.java +++ b/app-api/src/test/java/com/parkingcomestrue/ApiApplicationTests.java @@ -1,10 +1,10 @@ -package com.example.parking; +package com.parkingcomestrue; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest -class ParkingApplicationTests { +class ApiApplicationTests { @Test void contextLoads() { diff --git a/src/test/java/com/example/parking/container/ContainerTest.java b/app-api/src/test/java/com/parkingcomestrue/parking/application/ContainerTest.java similarity index 85% rename from src/test/java/com/example/parking/container/ContainerTest.java rename to app-api/src/test/java/com/parkingcomestrue/parking/application/ContainerTest.java index 636188db..040715e3 100644 --- a/src/test/java/com/example/parking/container/ContainerTest.java +++ b/app-api/src/test/java/com/parkingcomestrue/parking/application/ContainerTest.java @@ -1,10 +1,10 @@ -package com.example.parking.container; +package com.parkingcomestrue.parking.application; -import com.example.parking.application.parking.ParkingService; -import com.example.parking.application.review.ReviewService; -import com.example.parking.auth.AuthService; -import com.example.parking.config.TestConfig; -import com.example.parking.domain.member.MemberRepository; +import com.parkingcomestrue.parking.application.auth.AuthService; +import com.parkingcomestrue.parking.application.container.MySQLDataCleaner; +import com.parkingcomestrue.parking.application.parking.ParkingService; +import com.parkingcomestrue.parking.application.review.ReviewService; +import com.parkingcomestrue.common.domain.member.repository.MemberRepository; import com.redis.testcontainers.RedisContainer; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; diff --git a/src/test/java/com/example/parking/domain/searchcondition/SearchConditionMapperTest.java b/app-api/src/test/java/com/parkingcomestrue/parking/application/SearchConditionMapperTest.java similarity index 87% rename from src/test/java/com/example/parking/domain/searchcondition/SearchConditionMapperTest.java rename to app-api/src/test/java/com/parkingcomestrue/parking/application/SearchConditionMapperTest.java index 948796ae..d3c93612 100644 --- a/src/test/java/com/example/parking/domain/searchcondition/SearchConditionMapperTest.java +++ b/app-api/src/test/java/com/parkingcomestrue/parking/application/SearchConditionMapperTest.java @@ -1,15 +1,18 @@ -package com.example.parking.domain.searchcondition; +package com.parkingcomestrue.parking.application; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.params.provider.Arguments.arguments; -import com.example.parking.application.SearchConditionMapper; -import com.example.parking.domain.parking.OperationType; -import com.example.parking.domain.parking.ParkingType; -import com.example.parking.domain.parking.PayType; -import com.example.parking.support.exception.ClientException; -import com.example.parking.support.exception.ExceptionInformation; +import com.parkingcomestrue.parking.support.exception.ClientException; +import com.parkingcomestrue.parking.support.exception.ClientExceptionInformation; +import com.parkingcomestrue.common.domain.parking.OperationType; +import com.parkingcomestrue.common.domain.parking.ParkingType; +import com.parkingcomestrue.common.domain.parking.PayType; +import com.parkingcomestrue.common.domain.searchcondition.FeeType; +import com.parkingcomestrue.common.domain.searchcondition.Priority; +import com.parkingcomestrue.common.domain.searchcondition.SearchConditionAvailable; + import java.util.List; import java.util.stream.Stream; import org.junit.Test; @@ -51,7 +54,7 @@ static Stream parametersProvider1() { //given, when, then assertThatThrownBy(() -> searchConditionMapper.toEnum(PayType.class, "아무거나 입력")) .isInstanceOf(ClientException.class) - .hasMessage(ExceptionInformation.INVALID_DESCRIPTION.getMessage()); + .hasMessage(ClientExceptionInformation.INVALID_DESCRIPTION.getMessage()); } @ParameterizedTest diff --git a/src/test/java/com/example/parking/config/TestConfig.java b/app-api/src/test/java/com/parkingcomestrue/parking/application/TestConfig.java similarity index 76% rename from src/test/java/com/example/parking/config/TestConfig.java rename to app-api/src/test/java/com/parkingcomestrue/parking/application/TestConfig.java index dfd75c64..2df3f36c 100644 --- a/src/test/java/com/example/parking/config/TestConfig.java +++ b/app-api/src/test/java/com/parkingcomestrue/parking/application/TestConfig.java @@ -1,6 +1,6 @@ -package com.example.parking.config; +package com.parkingcomestrue.parking.application; -import com.example.parking.auth.authcode.infrastructure.AuthCodeSender; +import com.parkingcomestrue.parking.application.auth.authcode.infrastructure.AuthCodeSender; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Primary; diff --git a/src/test/java/com/example/parking/auth/AuthServiceTest.java b/app-api/src/test/java/com/parkingcomestrue/parking/application/auth/AuthServiceTest.java similarity index 86% rename from src/test/java/com/example/parking/auth/AuthServiceTest.java rename to app-api/src/test/java/com/parkingcomestrue/parking/application/auth/AuthServiceTest.java index 23992a21..cd4ed735 100644 --- a/src/test/java/com/example/parking/auth/AuthServiceTest.java +++ b/app-api/src/test/java/com/parkingcomestrue/parking/application/auth/AuthServiceTest.java @@ -1,27 +1,24 @@ -package com.example.parking.auth; +package com.parkingcomestrue.parking.application.auth; -import static com.example.parking.support.exception.ExceptionInformation.INVALID_AUTH_CODE; -import static com.example.parking.support.exception.ExceptionInformation.UNAUTHORIZED; +import static com.parkingcomestrue.parking.support.exception.ClientExceptionInformation.INVALID_AUTH_CODE; +import static com.parkingcomestrue.parking.support.exception.ClientExceptionInformation.UNAUTHORIZED; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatNoException; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import com.example.parking.auth.authcode.AuthCodeCategory; -import com.example.parking.auth.authcode.AuthCodePlatform; -import com.example.parking.auth.authcode.application.dto.AuthCodeCertificateRequest; -import com.example.parking.auth.authcode.application.dto.AuthCodeRequest; -import com.example.parking.auth.session.MemberSession; -import com.example.parking.container.ContainerTest; -import com.example.parking.support.exception.ClientException; +import com.parkingcomestrue.parking.application.ContainerTest; +import com.parkingcomestrue.parking.application.auth.authcode.AuthCodeCategory; +import com.parkingcomestrue.parking.application.auth.authcode.AuthCodePlatform; +import com.parkingcomestrue.parking.application.auth.authcode.dto.AuthCodeCertificateRequest; +import com.parkingcomestrue.parking.application.auth.authcode.dto.AuthCodeRequest; +import com.parkingcomestrue.common.domain.session.MemberSession; +import com.parkingcomestrue.parking.support.exception.ClientException; import java.time.LocalDateTime; import org.junit.jupiter.api.Test; class AuthServiceTest extends ContainerTest { - private static final String AUTH_CODE = "111111"; - - @Test void 세션_아이디에_해당하는_세션을_찾는다() { // given diff --git a/src/test/java/com/example/parking/container/MySQLDataCleaner.java b/app-api/src/test/java/com/parkingcomestrue/parking/application/container/MySQLDataCleaner.java similarity index 94% rename from src/test/java/com/example/parking/container/MySQLDataCleaner.java rename to app-api/src/test/java/com/parkingcomestrue/parking/application/container/MySQLDataCleaner.java index 38893521..b358ef7e 100644 --- a/src/test/java/com/example/parking/container/MySQLDataCleaner.java +++ b/app-api/src/test/java/com/parkingcomestrue/parking/application/container/MySQLDataCleaner.java @@ -1,4 +1,4 @@ -package com.example.parking.container; +package com.parkingcomestrue.parking.application.container; import jakarta.persistence.EntityManager; import java.util.List; diff --git a/src/test/java/com/example/parking/container/RedisDataCleaner.java b/app-api/src/test/java/com/parkingcomestrue/parking/application/container/RedisDataCleaner.java similarity index 89% rename from src/test/java/com/example/parking/container/RedisDataCleaner.java rename to app-api/src/test/java/com/parkingcomestrue/parking/application/container/RedisDataCleaner.java index e4707ee9..10f82d01 100644 --- a/src/test/java/com/example/parking/container/RedisDataCleaner.java +++ b/app-api/src/test/java/com/parkingcomestrue/parking/application/container/RedisDataCleaner.java @@ -1,4 +1,4 @@ -package com.example.parking.container; +package com.parkingcomestrue.parking.application.container; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; diff --git a/src/test/java/com/example/parking/application/member/MemberServiceTest.java b/app-api/src/test/java/com/parkingcomestrue/parking/application/member/MemberServiceTest.java similarity index 78% rename from src/test/java/com/example/parking/application/member/MemberServiceTest.java rename to app-api/src/test/java/com/parkingcomestrue/parking/application/member/MemberServiceTest.java index f4e19a83..53635f62 100644 --- a/src/test/java/com/example/parking/application/member/MemberServiceTest.java +++ b/app-api/src/test/java/com/parkingcomestrue/parking/application/member/MemberServiceTest.java @@ -1,16 +1,15 @@ -package com.example.parking.application.member; +package com.parkingcomestrue.parking.application.member; -import static com.example.parking.support.exception.ExceptionInformation.INVALID_MEMBER; -import static com.example.parking.support.exception.ExceptionInformation.INVALID_PASSWORD; +import static com.parkingcomestrue.common.support.exception.DomainExceptionInformation.INVALID_MEMBER; +import static com.parkingcomestrue.common.support.exception.DomainExceptionInformation.INVALID_PASSWORD; import static org.assertj.core.api.Assertions.assertThat; -import com.example.parking.application.member.dto.MemberLoginRequest; -import com.example.parking.application.member.dto.MemberSignupRequest; -import com.example.parking.application.member.dto.PasswordChangeRequest; -import com.example.parking.domain.member.Member; -import com.example.parking.domain.member.MemberRepository; -import com.example.parking.support.exception.ClientException; -import com.example.parking.support.exception.DomainException; +import com.parkingcomestrue.parking.application.member.dto.MemberLoginRequest; +import com.parkingcomestrue.parking.application.member.dto.MemberSignupRequest; +import com.parkingcomestrue.parking.application.member.dto.PasswordChangeRequest; +import com.parkingcomestrue.common.domain.member.Member; +import com.parkingcomestrue.common.domain.member.repository.MemberRepository; +import com.parkingcomestrue.common.support.exception.DomainException; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -69,7 +68,7 @@ class MemberServiceTest { // then Assertions.assertThatThrownBy(() -> memberService.login(new MemberLoginRequest(email, previousPassword))) - .isInstanceOf(ClientException.class) + .isInstanceOf(DomainException.class) .hasMessage(INVALID_PASSWORD.getMessage()); } diff --git a/src/test/java/com/example/parking/application/parking/ParkingServiceTest.java b/app-api/src/test/java/com/parkingcomestrue/parking/application/parking/ParkingServiceTest.java similarity index 65% rename from src/test/java/com/example/parking/application/parking/ParkingServiceTest.java rename to app-api/src/test/java/com/parkingcomestrue/parking/application/parking/ParkingServiceTest.java index 1379c902..b5e56930 100644 --- a/src/test/java/com/example/parking/application/parking/ParkingServiceTest.java +++ b/app-api/src/test/java/com/parkingcomestrue/parking/application/parking/ParkingServiceTest.java @@ -1,28 +1,28 @@ -package com.example.parking.application.parking; +package com.parkingcomestrue.parking.application.parking; import static org.junit.jupiter.api.Assertions.assertAll; -import com.example.parking.application.parking.dto.ParkingDetailInfoResponse; -import com.example.parking.application.review.dto.ReviewCreateRequest; -import com.example.parking.container.ContainerTest; -import com.example.parking.domain.member.Member; -import com.example.parking.domain.member.Password; -import com.example.parking.domain.parking.BaseInformation; -import com.example.parking.domain.parking.Fee; -import com.example.parking.domain.parking.FeePolicy; -import com.example.parking.domain.parking.FreeOperatingTime; -import com.example.parking.domain.parking.Location; -import com.example.parking.domain.parking.OperatingTime; -import com.example.parking.domain.parking.OperationType; -import com.example.parking.domain.parking.Parking; -import com.example.parking.domain.parking.ParkingType; -import com.example.parking.domain.parking.PayTypes; -import com.example.parking.domain.parking.Space; -import com.example.parking.domain.parking.TimeInfo; -import com.example.parking.domain.parking.TimeUnit; -import com.example.parking.domain.review.Content; -import com.example.parking.support.exception.DomainException; -import com.example.parking.support.exception.ExceptionInformation; +import com.parkingcomestrue.parking.application.ContainerTest; +import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse; +import com.parkingcomestrue.parking.application.review.dto.ReviewCreateRequest; +import com.parkingcomestrue.common.domain.member.Member; +import com.parkingcomestrue.common.domain.member.Password; +import com.parkingcomestrue.common.domain.parking.BaseInformation; +import com.parkingcomestrue.common.domain.parking.Fee; +import com.parkingcomestrue.common.domain.parking.FeePolicy; +import com.parkingcomestrue.common.domain.parking.FreeOperatingTime; +import com.parkingcomestrue.common.domain.parking.Location; +import com.parkingcomestrue.common.domain.parking.OperatingTime; +import com.parkingcomestrue.common.domain.parking.OperationType; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.parking.ParkingType; +import com.parkingcomestrue.common.domain.parking.PayTypes; +import com.parkingcomestrue.common.domain.parking.Space; +import com.parkingcomestrue.common.domain.parking.TimeInfo; +import com.parkingcomestrue.common.domain.parking.TimeUnit; +import com.parkingcomestrue.common.domain.review.Content; +import com.parkingcomestrue.common.support.exception.DomainException; +import com.parkingcomestrue.common.support.exception.DomainExceptionInformation; import java.time.LocalTime; import java.util.List; import org.assertj.core.api.Assertions; @@ -35,7 +35,7 @@ class ParkingServiceTest extends ContainerTest { //given Assertions.assertThatThrownBy(() -> parkingService.findParking(1L)) .isInstanceOf(DomainException.class) - .hasMessage(ExceptionInformation.INVALID_PARKING.getMessage()); + .hasMessage(DomainExceptionInformation.INVALID_PARKING.getMessage()); } @Test diff --git a/src/test/java/com/example/parking/application/review/ReviewServiceTest.java b/app-api/src/test/java/com/parkingcomestrue/parking/application/review/ReviewServiceTest.java similarity index 80% rename from src/test/java/com/example/parking/application/review/ReviewServiceTest.java rename to app-api/src/test/java/com/parkingcomestrue/parking/application/review/ReviewServiceTest.java index 2d5f6ad2..1d981c06 100644 --- a/src/test/java/com/example/parking/application/review/ReviewServiceTest.java +++ b/app-api/src/test/java/com/parkingcomestrue/parking/application/review/ReviewServiceTest.java @@ -1,24 +1,24 @@ -package com.example.parking.application.review; +package com.parkingcomestrue.parking.application.review; -import static com.example.parking.support.exception.ExceptionInformation.DUPLICATE_REVIEW; +import static com.parkingcomestrue.common.support.exception.DomainExceptionInformation.DUPLICATE_REVIEW; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.SoftAssertions.assertSoftly; -import com.example.parking.application.review.dto.ReviewCreateRequest; -import com.example.parking.application.review.dto.ReviewInfoResponse; -import com.example.parking.support.Association; -import com.example.parking.domain.member.Member; -import com.example.parking.domain.parking.Parking; -import com.example.parking.domain.review.Content; -import com.example.parking.domain.review.Review; -import com.example.parking.domain.review.service.ReviewDomainService; -import com.example.parking.fake.BasicMemberRepository; -import com.example.parking.fake.BasicParkingRepository; -import com.example.parking.fake.BasicReviewRepository; -import com.example.parking.support.exception.DomainException; +import com.parkingcomestrue.parking.application.review.dto.ReviewCreateRequest; +import com.parkingcomestrue.parking.application.review.dto.ReviewInfoResponse; +import com.parkingcomestrue.common.domain.member.Member; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.review.Content; +import com.parkingcomestrue.common.domain.review.Review; +import com.parkingcomestrue.common.domain.review.service.ReviewDomainService; +import com.parkingcomestrue.common.support.Association; +import com.parkingcomestrue.common.support.exception.DomainException; import java.util.List; import org.junit.jupiter.api.Test; +import repository.BasicMemberRepository; +import repository.BasicParkingRepository; +import repository.BasicReviewRepository; class ReviewServiceTest { diff --git a/src/test/resources/application.yml b/app-api/src/test/resources/application.yml similarity index 100% rename from src/test/resources/application.yml rename to app-api/src/test/resources/application.yml diff --git a/app-scheduler/.gitignore b/app-scheduler/.gitignore new file mode 100644 index 00000000..b63da455 --- /dev/null +++ b/app-scheduler/.gitignore @@ -0,0 +1,42 @@ +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/app-scheduler/Dockerfile b/app-scheduler/Dockerfile new file mode 100644 index 00000000..9cb96438 --- /dev/null +++ b/app-scheduler/Dockerfile @@ -0,0 +1,5 @@ +FROM amazoncorretto:17-alpine + +COPY build/libs/app-scheduler-0.0.1-SNAPSHOT.jar app.jar + +CMD ["java", "-jar", "app.jar"] diff --git a/app-scheduler/build.gradle b/app-scheduler/build.gradle new file mode 100644 index 00000000..cdd7d6ee --- /dev/null +++ b/app-scheduler/build.gradle @@ -0,0 +1,8 @@ +dependencies { + implementation project(':domain') + + testImplementation platform('org.junit:junit-bom:5.9.1') + testImplementation 'org.junit.jupiter:junit-jupiter' + + testImplementation(testFixtures(project(":domain"))) +} diff --git a/app-scheduler/src/main/java/com/parkingcomestrue/SchedulerApplication.java b/app-scheduler/src/main/java/com/parkingcomestrue/SchedulerApplication.java new file mode 100644 index 00000000..dc27d71e --- /dev/null +++ b/app-scheduler/src/main/java/com/parkingcomestrue/SchedulerApplication.java @@ -0,0 +1,21 @@ +package com.parkingcomestrue; + +import jakarta.annotation.PostConstruct; +import java.util.TimeZone; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; + +@EnableScheduling +@SpringBootApplication +public class SchedulerApplication { + + @PostConstruct + public void started() { + TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul")); + } + + public static void main(String[] args) { + SpringApplication.run(SchedulerApplication.class, args); + } +} diff --git a/src/main/java/com/example/parking/config/ParkingApiErrorHandler.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/config/ParkingApiErrorHandler.java similarity index 92% rename from src/main/java/com/example/parking/config/ParkingApiErrorHandler.java rename to app-scheduler/src/main/java/com/parkingcomestrue/external/config/ParkingApiErrorHandler.java index 58840087..51b09734 100644 --- a/src/main/java/com/example/parking/config/ParkingApiErrorHandler.java +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/config/ParkingApiErrorHandler.java @@ -1,4 +1,4 @@ -package com.example.parking.config; +package com.parkingcomestrue.external.config; import java.io.IOException; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/com/example/parking/config/RestTemplateConfig.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/config/RestTemplateConfig.java similarity index 61% rename from src/main/java/com/example/parking/config/RestTemplateConfig.java rename to app-scheduler/src/main/java/com/parkingcomestrue/external/config/RestTemplateConfig.java index 80abb3b7..d9d50635 100644 --- a/src/main/java/com/example/parking/config/RestTemplateConfig.java +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/config/RestTemplateConfig.java @@ -1,11 +1,13 @@ -package com.example.parking.config; +package com.parkingcomestrue.external.config; -import com.example.parking.external.coordinate.CoordinateErrorHandler; +import com.parkingcomestrue.external.coordinate.CoordinateErrorHandler; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; import org.springframework.web.client.RestTemplate; @Configuration @@ -22,4 +24,13 @@ public RestTemplate coordinateRestTemplate(RestTemplateBuilder restTemplateBuild .defaultHeader(AUTH_HEADER, kakaoUrl) .build(); } + + @Bean + @Qualifier("parkingApiRestTemplate") + public RestTemplate parkingApiRestTemplate(RestTemplateBuilder restTemplateBuilder) { + return restTemplateBuilder + .errorHandler(new ParkingApiErrorHandler()) + .defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE) + .build(); + } } diff --git a/src/main/java/com/example/parking/external/coordinate/CoordinateService.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/coordinate/CoordinateApiService.java similarity index 83% rename from src/main/java/com/example/parking/external/coordinate/CoordinateService.java rename to app-scheduler/src/main/java/com/parkingcomestrue/external/coordinate/CoordinateApiService.java index ca6abd81..d1d8d3b3 100644 --- a/src/main/java/com/example/parking/external/coordinate/CoordinateService.java +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/coordinate/CoordinateApiService.java @@ -1,8 +1,8 @@ -package com.example.parking.external.coordinate; +package com.parkingcomestrue.external.coordinate; -import com.example.parking.external.coordinate.dto.CoordinateResponse; -import com.example.parking.external.coordinate.dto.CoordinateResponse.ExactLocation; -import com.example.parking.domain.parking.Location; +import com.parkingcomestrue.common.domain.parking.Location; +import com.parkingcomestrue.external.coordinate.dto.CoordinateResponse; +import com.parkingcomestrue.external.coordinate.dto.CoordinateResponse.ExactLocation; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -13,14 +13,14 @@ import org.springframework.web.util.UriComponentsBuilder; @Component -public class CoordinateService { +public class CoordinateApiService { private static final String KAKAO_URL = "https://dapi.kakao.com/v2/local/search/address.json"; private final RestTemplate restTemplate; @Autowired - public CoordinateService(@Qualifier("coordinateRestTemplate") RestTemplate restTemplate) { + public CoordinateApiService(@Qualifier("coordinateRestTemplate") RestTemplate restTemplate) { this.restTemplate = restTemplate; } diff --git a/src/main/java/com/example/parking/external/coordinate/CoordinateErrorHandler.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/coordinate/CoordinateErrorHandler.java similarity index 66% rename from src/main/java/com/example/parking/external/coordinate/CoordinateErrorHandler.java rename to app-scheduler/src/main/java/com/parkingcomestrue/external/coordinate/CoordinateErrorHandler.java index 56806996..83114fac 100644 --- a/src/main/java/com/example/parking/external/coordinate/CoordinateErrorHandler.java +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/coordinate/CoordinateErrorHandler.java @@ -1,7 +1,7 @@ -package com.example.parking.external.coordinate; +package com.parkingcomestrue.external.coordinate; -import com.example.parking.support.exception.ClientException; -import com.example.parking.support.exception.ExceptionInformation; +import com.parkingcomestrue.external.support.exception.SchedulerException; +import com.parkingcomestrue.external.support.exception.SchedulerExceptionInformation; import java.io.IOException; import lombok.extern.slf4j.Slf4j; import org.springframework.http.client.ClientHttpResponse; @@ -18,6 +18,6 @@ public boolean hasError(ClientHttpResponse response) throws IOException { @Override public void handleError(ClientHttpResponse response) throws IOException { log.warn("fail while extracting coordinate by address code: {}", response.getStatusCode()); - throw new ClientException(ExceptionInformation.COORDINATE_EXCEPTION); + throw new SchedulerException(SchedulerExceptionInformation.COORDINATE_EXCEPTION); } } diff --git a/src/main/java/com/example/parking/external/coordinate/dto/CoordinateResponse.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/coordinate/dto/CoordinateResponse.java similarity index 94% rename from src/main/java/com/example/parking/external/coordinate/dto/CoordinateResponse.java rename to app-scheduler/src/main/java/com/parkingcomestrue/external/coordinate/dto/CoordinateResponse.java index 9de28a14..b91f2831 100644 --- a/src/main/java/com/example/parking/external/coordinate/dto/CoordinateResponse.java +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/coordinate/dto/CoordinateResponse.java @@ -1,4 +1,4 @@ -package com.example.parking.external.coordinate.dto; +package com.parkingcomestrue.external.coordinate.dto; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.List; diff --git a/src/main/java/com/example/parking/external/parkingapi/ParkingApiService.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/ParkingApiService.java similarity index 62% rename from src/main/java/com/example/parking/external/parkingapi/ParkingApiService.java rename to app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/ParkingApiService.java index e7f4989a..877d6a69 100644 --- a/src/main/java/com/example/parking/external/parkingapi/ParkingApiService.java +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/ParkingApiService.java @@ -1,6 +1,6 @@ -package com.example.parking.external.parkingapi; +package com.parkingcomestrue.external.parkingapi; -import com.example.parking.domain.parking.Parking; +import com.parkingcomestrue.common.domain.parking.Parking; import java.util.List; public interface ParkingApiService { diff --git a/src/main/java/com/example/parking/external/parkingapi/pusan/PusanPublicParkingAdapter.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/pusan/PusanPublicParkingAdapter.java similarity index 64% rename from src/main/java/com/example/parking/external/parkingapi/pusan/PusanPublicParkingAdapter.java rename to app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/pusan/PusanPublicParkingAdapter.java index 732696b1..387c8b32 100644 --- a/src/main/java/com/example/parking/external/parkingapi/pusan/PusanPublicParkingAdapter.java +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/pusan/PusanPublicParkingAdapter.java @@ -1,20 +1,18 @@ -package com.example.parking.external.parkingapi.pusan; +package com.parkingcomestrue.external.parkingapi.pusan; -import static com.example.parking.external.parkingapi.pusan.PusanPublicParkingResponse.ParkingInfo.*; - -import com.example.parking.domain.parking.BaseInformation; -import com.example.parking.domain.parking.Fee; -import com.example.parking.domain.parking.FeePolicy; -import com.example.parking.domain.parking.FreeOperatingTime; -import com.example.parking.domain.parking.Location; -import com.example.parking.domain.parking.OperatingTime; -import com.example.parking.domain.parking.OperationType; -import com.example.parking.domain.parking.Parking; -import com.example.parking.domain.parking.ParkingType; -import com.example.parking.domain.parking.PayTypes; -import com.example.parking.domain.parking.Space; -import com.example.parking.domain.parking.TimeInfo; -import com.example.parking.domain.parking.TimeUnit; +import com.parkingcomestrue.common.domain.parking.BaseInformation; +import com.parkingcomestrue.common.domain.parking.Fee; +import com.parkingcomestrue.common.domain.parking.FeePolicy; +import com.parkingcomestrue.common.domain.parking.FreeOperatingTime; +import com.parkingcomestrue.common.domain.parking.Location; +import com.parkingcomestrue.common.domain.parking.OperatingTime; +import com.parkingcomestrue.common.domain.parking.OperationType; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.parking.ParkingType; +import com.parkingcomestrue.common.domain.parking.PayTypes; +import com.parkingcomestrue.common.domain.parking.Space; +import com.parkingcomestrue.common.domain.parking.TimeInfo; +import com.parkingcomestrue.common.domain.parking.TimeUnit; import java.time.DateTimeException; import java.time.LocalTime; import java.time.format.DateTimeFormatter; @@ -34,7 +32,7 @@ public List convert(PusanPublicParkingResponse response) { .toList(); } - private Parking toParking(final Item response) { + private Parking toParking(final PusanPublicParkingResponse.ParkingInfo.Item response) { return new Parking( getBaseInformation(response), getLocation(response), @@ -45,7 +43,7 @@ private Parking toParking(final Item response) { ); } - private BaseInformation getBaseInformation(final Item response) { + private BaseInformation getBaseInformation(final PusanPublicParkingResponse.ParkingInfo.Item response) { return new BaseInformation( response.getParkingName(), response.getTelephoneNumber(), @@ -56,22 +54,22 @@ private BaseInformation getBaseInformation(final Item response) { ); } - private String filterAddress(Item response) { + private String filterAddress(PusanPublicParkingResponse.ParkingInfo.Item response) { if (response.getOldAddress().equals(EMPTY)) { return response.getNewAddress(); } return response.getOldAddress(); } - private Location getLocation(final Item response) { + private Location getLocation(final PusanPublicParkingResponse.ParkingInfo.Item response) { return Location.of(response.getLongitude(), response.getLatitude()); } - private Space getSpace(final Item response) { + private Space getSpace(final PusanPublicParkingResponse.ParkingInfo.Item response) { return Space.of(response.getCapacity(), response.getCurParking()); } - private OperatingTime getOperatingTime(final Item response) { + private OperatingTime getOperatingTime(final PusanPublicParkingResponse.ParkingInfo.Item response) { return new OperatingTime( new TimeInfo(parsingOperationTime(response.getWeekdayBeginTime()), parsingOperationTime(response.getWeekdayEndTime())), @@ -93,7 +91,7 @@ private LocalTime parsingOperationTime(String time) { } } - private FeePolicy getFeePolicy(final Item response) { + private FeePolicy getFeePolicy(final PusanPublicParkingResponse.ParkingInfo.Item response) { return new FeePolicy( Fee.from(response.getRates()), Fee.from(response.getAddRates()), @@ -103,7 +101,7 @@ private FeePolicy getFeePolicy(final Item response) { ); } - private FreeOperatingTime getFreeOperatingTime(final Item response) { + private FreeOperatingTime getFreeOperatingTime(final PusanPublicParkingResponse.ParkingInfo.Item response) { if (response.getRates().equals("0") && response.getAddRates().equals("0")) { return FreeOperatingTime.ALWAYS_FREE; } diff --git a/src/main/java/com/example/parking/external/parkingapi/pusan/PusanPublicParkingApiService.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/pusan/PusanPublicParkingApiService.java similarity index 92% rename from src/main/java/com/example/parking/external/parkingapi/pusan/PusanPublicParkingApiService.java rename to app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/pusan/PusanPublicParkingApiService.java index 099d8b6b..3685b99c 100644 --- a/src/main/java/com/example/parking/external/parkingapi/pusan/PusanPublicParkingApiService.java +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/pusan/PusanPublicParkingApiService.java @@ -1,7 +1,7 @@ -package com.example.parking.external.parkingapi.pusan; +package com.parkingcomestrue.external.parkingapi.pusan; -import com.example.parking.domain.parking.Parking; -import com.example.parking.external.parkingapi.ParkingApiService; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.external.parkingapi.ParkingApiService; import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.List; diff --git a/src/main/java/com/example/parking/external/parkingapi/pusan/PusanPublicParkingResponse.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/pusan/PusanPublicParkingResponse.java similarity index 97% rename from src/main/java/com/example/parking/external/parkingapi/pusan/PusanPublicParkingResponse.java rename to app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/pusan/PusanPublicParkingResponse.java index 392053f5..c79d2130 100644 --- a/src/main/java/com/example/parking/external/parkingapi/pusan/PusanPublicParkingResponse.java +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/pusan/PusanPublicParkingResponse.java @@ -1,4 +1,4 @@ -package com.example.parking.external.parkingapi.pusan; +package com.parkingcomestrue.external.parkingapi.pusan; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.List; @@ -43,13 +43,12 @@ public static class Item { @JsonProperty("jibunAddr") private String oldAddress; - @JsonProperty("xCdnt") + @JsonProperty("yCdnt") private String latitude; - @JsonProperty("yCdnt") + @JsonProperty("xCdnt") private String longitude; - @JsonProperty("pkCnt") private String capacity; diff --git a/src/main/java/com/example/parking/external/parkingapi/seoul/SeoulPublicParkingAdapter.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/seoul/SeoulPublicParkingAdapter.java similarity index 61% rename from src/main/java/com/example/parking/external/parkingapi/seoul/SeoulPublicParkingAdapter.java rename to app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/seoul/SeoulPublicParkingAdapter.java index 640f663c..a0918d7b 100644 --- a/src/main/java/com/example/parking/external/parkingapi/seoul/SeoulPublicParkingAdapter.java +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/seoul/SeoulPublicParkingAdapter.java @@ -1,19 +1,18 @@ -package com.example.parking.external.parkingapi.seoul; - -import com.example.parking.domain.parking.BaseInformation; -import com.example.parking.domain.parking.Fee; -import com.example.parking.domain.parking.FeePolicy; -import com.example.parking.domain.parking.FreeOperatingTime; -import com.example.parking.domain.parking.Location; -import com.example.parking.domain.parking.OperatingTime; -import com.example.parking.domain.parking.OperationType; -import com.example.parking.domain.parking.Parking; -import com.example.parking.domain.parking.ParkingType; -import com.example.parking.domain.parking.PayTypes; -import com.example.parking.domain.parking.Space; -import com.example.parking.domain.parking.TimeInfo; -import com.example.parking.domain.parking.TimeUnit; -import com.example.parking.external.parkingapi.seoul.SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking; +package com.parkingcomestrue.external.parkingapi.seoul; + +import com.parkingcomestrue.common.domain.parking.BaseInformation; +import com.parkingcomestrue.common.domain.parking.Fee; +import com.parkingcomestrue.common.domain.parking.FeePolicy; +import com.parkingcomestrue.common.domain.parking.FreeOperatingTime; +import com.parkingcomestrue.common.domain.parking.Location; +import com.parkingcomestrue.common.domain.parking.OperatingTime; +import com.parkingcomestrue.common.domain.parking.OperationType; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.parking.ParkingType; +import com.parkingcomestrue.common.domain.parking.PayTypes; +import com.parkingcomestrue.common.domain.parking.Space; +import com.parkingcomestrue.common.domain.parking.TimeInfo; +import com.parkingcomestrue.common.domain.parking.TimeUnit; import java.time.DateTimeException; import java.time.LocalTime; import java.time.format.DateTimeFormatter; @@ -33,26 +32,26 @@ public class SeoulPublicParkingAdapter { private static final String HOURS_24 = "2400"; public List convert(SeoulPublicParkingResponse response) { - List rows = response.getParkingInfo().getRows(); - List seoulCityParkingLots = calculateCapacity(filterByOperation(rows)); + List rows = response.getParkingInfo().getRows(); + List seoulCityParkingLots = calculateCapacity(filterByOperation(rows)); return seoulCityParkingLots.stream() .map(this::toParking) .toList(); } - private List filterByOperation(final List rows) { + private List filterByOperation(final List rows) { return rows.stream() .filter(result -> TIMED_PARKING_RULES.contains(result.getOperationRule())) .toList(); } - private List calculateCapacity(final List results) { - final Map> collect = results.stream() + private List calculateCapacity(final List results) { + final Map> collect = results.stream() .collect(Collectors.groupingBy(a -> a.getParkingCode())); return collect.values().stream().map(parkingLots -> { - final SeoulCityParking parking = parkingLots.get(0); + final SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking parking = parkingLots.get(0); if (parking.getParkingTypeNM().equals(STREET_PARKING_TYPE)) { parking.setCapacity(parkingLots.size()); return parking; @@ -61,7 +60,7 @@ private List calculateCapacity(final List re }).toList(); } - private Parking toParking(final SeoulCityParking response) { + private Parking toParking(final SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking response) { return new Parking( getBaseInformation(response), getLocation(response), @@ -72,7 +71,7 @@ private Parking toParking(final SeoulCityParking response) { ); } - private BaseInformation getBaseInformation(final SeoulCityParking response) { + private BaseInformation getBaseInformation(final SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking response) { return new BaseInformation( response.getParkingName(), response.getTel(), @@ -83,18 +82,18 @@ private BaseInformation getBaseInformation(final SeoulCityParking response) { ); } - private Location getLocation(final SeoulCityParking response) { + private Location getLocation(final SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking response) { return Location.of(response.getLng(), response.getLat()); } - private Space getSpace(final SeoulCityParking response) { + private Space getSpace(final SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking response) { return Space.of( response.getCapacity(), response.getCurParking() ); } - private FreeOperatingTime getFreeOperatingTime(SeoulCityParking response) { + private FreeOperatingTime getFreeOperatingTime(SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking response) { if (response.getPayNM().equals(FREE)) { return FreeOperatingTime.ALWAYS_FREE; } @@ -105,7 +104,7 @@ private FreeOperatingTime getFreeOperatingTime(SeoulCityParking response) { ); } - private OperatingTime getOperatingTime(final SeoulCityParking response) { + private OperatingTime getOperatingTime(final SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking response) { return new OperatingTime( new TimeInfo( parsingOperationTime(response.getWeekdayBeginTime()), @@ -133,7 +132,7 @@ private LocalTime parsingOperationTime(String time) { } } - private FeePolicy getFeePolicy(final SeoulCityParking response) { + private FeePolicy getFeePolicy(final SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking response) { return new FeePolicy( Fee.from(response.getRates()), Fee.from(response.getAddRates()), diff --git a/src/main/java/com/example/parking/external/parkingapi/seoul/SeoulPublicParkingApiService.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/seoul/SeoulPublicParkingApiService.java similarity index 93% rename from src/main/java/com/example/parking/external/parkingapi/seoul/SeoulPublicParkingApiService.java rename to app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/seoul/SeoulPublicParkingApiService.java index 1e2a4bb3..c009bc94 100644 --- a/src/main/java/com/example/parking/external/parkingapi/seoul/SeoulPublicParkingApiService.java +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/seoul/SeoulPublicParkingApiService.java @@ -1,7 +1,7 @@ -package com.example.parking.external.parkingapi.seoul; +package com.parkingcomestrue.external.parkingapi.seoul; -import com.example.parking.domain.parking.Parking; -import com.example.parking.external.parkingapi.ParkingApiService; +import com.parkingcomestrue.external.parkingapi.ParkingApiService; +import com.parkingcomestrue.common.domain.parking.Parking; import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.Collection; diff --git a/src/main/java/com/example/parking/external/parkingapi/seoul/SeoulPublicParkingResponse.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/seoul/SeoulPublicParkingResponse.java similarity index 96% rename from src/main/java/com/example/parking/external/parkingapi/seoul/SeoulPublicParkingResponse.java rename to app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/seoul/SeoulPublicParkingResponse.java index f51555b4..3516e21f 100644 --- a/src/main/java/com/example/parking/external/parkingapi/seoul/SeoulPublicParkingResponse.java +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/parkingapi/seoul/SeoulPublicParkingResponse.java @@ -1,4 +1,4 @@ -package com.example.parking.external.parkingapi.seoul; +package com.parkingcomestrue.external.parkingapi.seoul; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.PropertyNamingStrategies; diff --git a/src/main/java/com/example/parking/external/scheduler/ParkingUpdateScheduler.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/scheduler/ParkingUpdateScheduler.java similarity index 81% rename from src/main/java/com/example/parking/external/scheduler/ParkingUpdateScheduler.java rename to app-scheduler/src/main/java/com/parkingcomestrue/external/scheduler/ParkingUpdateScheduler.java index 3de2c057..3473afb4 100644 --- a/src/main/java/com/example/parking/external/scheduler/ParkingUpdateScheduler.java +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/scheduler/ParkingUpdateScheduler.java @@ -1,10 +1,10 @@ -package com.example.parking.external.scheduler; +package com.parkingcomestrue.external.scheduler; -import com.example.parking.application.parking.ParkingService; -import com.example.parking.domain.parking.Location; -import com.example.parking.domain.parking.Parking; -import com.example.parking.external.coordinate.CoordinateService; -import com.example.parking.external.parkingapi.ParkingApiService; +import com.parkingcomestrue.external.coordinate.CoordinateApiService; +import com.parkingcomestrue.external.parkingapi.ParkingApiService; +import com.parkingcomestrue.common.domain.parking.Location; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.parking.repository.ParkingRepository; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -26,8 +26,8 @@ public class ParkingUpdateScheduler { private final List parkingApiServices; - private final CoordinateService coordinateService; - private final ParkingService parkingService; + private final CoordinateApiService coordinateApiService; + private final ParkingRepository parkingRepository; @Scheduled(cron = "0 */30 * * * *") public void autoUpdateOfferCurrentParking() { @@ -63,7 +63,7 @@ private List read(ParkingApiService parkingApiService) { } private Map findAllByName(Set names) { - return parkingService.getParkingLots(names) + return parkingRepository.findAllByBaseInformationNameIn(names) .stream() .collect(toParkingMap()); } @@ -83,12 +83,13 @@ private void saveNewParkingLots(Map parkingLots, Map newParkingLots) { for (Parking parking : newParkingLots) { - Location locationByAddress = coordinateService.extractLocationByAddress(parking.getBaseInformation().getAddress(), + Location locationByAddress = coordinateApiService.extractLocationByAddress( + parking.getBaseInformation().getAddress(), parking.getLocation()); parking.update(locationByAddress); } diff --git a/app-scheduler/src/main/java/com/parkingcomestrue/external/support/exception/SchedulerException.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/support/exception/SchedulerException.java new file mode 100644 index 00000000..f4100a48 --- /dev/null +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/support/exception/SchedulerException.java @@ -0,0 +1,16 @@ +package com.parkingcomestrue.external.support.exception; + +public class SchedulerException extends RuntimeException { + + private final SchedulerExceptionInformation exceptionInformation; + + public SchedulerException(SchedulerExceptionInformation exceptionInformation) { + super(); + this.exceptionInformation = exceptionInformation; + } + + @Override + public String getMessage() { + return exceptionInformation.getMessage(); + } +} diff --git a/app-scheduler/src/main/java/com/parkingcomestrue/external/support/exception/SchedulerExceptionInformation.java b/app-scheduler/src/main/java/com/parkingcomestrue/external/support/exception/SchedulerExceptionInformation.java new file mode 100644 index 00000000..f9ddf95f --- /dev/null +++ b/app-scheduler/src/main/java/com/parkingcomestrue/external/support/exception/SchedulerExceptionInformation.java @@ -0,0 +1,16 @@ +package com.parkingcomestrue.external.support.exception; + +import lombok.Getter; + +@Getter +public enum SchedulerExceptionInformation { + + INVALID_CONNECT("주차장 API 연결 중 예외 발생"), + COORDINATE_EXCEPTION("좌표 변환 중 예외 발생"); + + private final String message; + + SchedulerExceptionInformation(String message) { + this.message = message; + } +} diff --git a/app-scheduler/src/main/resources/application-prod.yml b/app-scheduler/src/main/resources/application-prod.yml new file mode 100644 index 00000000..494fa049 --- /dev/null +++ b/app-scheduler/src/main/resources/application-prod.yml @@ -0,0 +1,14 @@ +spring: + # JPA + jpa: + hibernate: + ddl-auto: validate + database: mysql + open-in-view: false + + # DB + datasource: + url: ${DB_URL} + username: ${DB_USERNAME} + password: ${DB_PASSWORD} + driver-class-name: com.mysql.cj.jdbc.Driver diff --git a/app-scheduler/src/main/resources/application.yml b/app-scheduler/src/main/resources/application.yml new file mode 100644 index 00000000..ce5779e4 --- /dev/null +++ b/app-scheduler/src/main/resources/application.yml @@ -0,0 +1,8 @@ +spring: + profiles: + active: ${PROFILE:dev} +# API KEY +kakao: + key: ${KAKAO_API_KEY:kakao} +seoul-public-parking-key: ${SEOUL_API_KEY:seoul} +pusan-public-parking-key: ${PUSAN_API_KEY:pusan} diff --git a/src/test/java/com/example/parking/application/CoordinateServiceTest.java b/app-scheduler/src/test/java/com/parkingcomestrue/external/coordinate/CoordinateApiServiceTest.java similarity index 68% rename from src/test/java/com/example/parking/application/CoordinateServiceTest.java rename to app-scheduler/src/test/java/com/parkingcomestrue/external/coordinate/CoordinateApiServiceTest.java index a6c33536..e1cb42a9 100644 --- a/src/test/java/com/example/parking/application/CoordinateServiceTest.java +++ b/app-scheduler/src/test/java/com/parkingcomestrue/external/coordinate/CoordinateApiServiceTest.java @@ -1,15 +1,13 @@ -package com.example.parking.application; +package com.parkingcomestrue.external.coordinate; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; +import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.when; -import com.example.parking.external.coordinate.CoordinateService; -import com.example.parking.external.coordinate.dto.CoordinateResponse; -import com.example.parking.external.coordinate.dto.CoordinateResponse.Meta; -import com.example.parking.domain.parking.Location; +import com.parkingcomestrue.external.coordinate.dto.CoordinateResponse; +import com.parkingcomestrue.common.domain.parking.Location; import java.util.Collections; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -21,17 +19,17 @@ import org.springframework.web.client.RestTemplate; @ExtendWith(MockitoExtension.class) -class CoordinateServiceTest { +class CoordinateApiServiceTest { @Mock private RestTemplate restTemplate; @InjectMocks - private CoordinateService coordinateService; + private CoordinateApiService coordinateApiService; @Test void 주소_변환_요청_결과개수가_0이면_기존의_위도_경도를_반환한다() { - CoordinateResponse emptyResponse = new CoordinateResponse(Collections.emptyList(), new Meta(0)); + CoordinateResponse emptyResponse = new CoordinateResponse(Collections.emptyList(), new CoordinateResponse.Meta(0)); when(restTemplate.getForEntity(anyString(), any())) .thenReturn(new ResponseEntity<>(emptyResponse, HttpStatus.OK)); @@ -39,7 +37,7 @@ class CoordinateServiceTest { double expectedLongitude = 67; double expectedLatitude = 10; - Location result = coordinateService.extractLocationByAddress("address", Location.of(67.0, 10.0)); + Location result = coordinateApiService.extractLocationByAddress("address", Location.of(67.0, 10.0)); assertAll( () -> assertThat(result.getLatitude()).isEqualTo(expectedLatitude), () -> assertThat(result.getLongitude()).isEqualTo(expectedLongitude) diff --git a/src/test/java/com/example/parking/external/scheduler/ParkingUpdateSchedulerTest.java b/app-scheduler/src/test/java/com/parkingcomestrue/external/scheduler/ParkingUpdateSchedulerTest.java similarity index 69% rename from src/test/java/com/example/parking/external/scheduler/ParkingUpdateSchedulerTest.java rename to app-scheduler/src/test/java/com/parkingcomestrue/external/scheduler/ParkingUpdateSchedulerTest.java index 4f540769..ba9a9ff1 100644 --- a/src/test/java/com/example/parking/external/scheduler/ParkingUpdateSchedulerTest.java +++ b/app-scheduler/src/test/java/com/parkingcomestrue/external/scheduler/ParkingUpdateSchedulerTest.java @@ -1,44 +1,42 @@ -package com.example.parking.external.scheduler; - -import com.example.parking.external.coordinate.CoordinateService; -import com.example.parking.fake.BasicParkingRepository; -import com.example.parking.fake.ExceptionParkingApiService; -import com.example.parking.fake.FakeCoordinateService; -import com.example.parking.fake.FakeParkingService; -import com.example.parking.fake.NotOfferCurrentParkingApiService; -import com.example.parking.fake.OfferCurrentParkingApiService; +package com.parkingcomestrue.external.scheduler; + + +import com.parkingcomestrue.external.coordinate.CoordinateApiService; +import com.parkingcomestrue.fake.ExceptionParkingApiService; +import com.parkingcomestrue.fake.FakeCoordinateApiService; +import com.parkingcomestrue.fake.NotOfferCurrentParkingApiService; +import com.parkingcomestrue.fake.OfferCurrentParkingApiService; import java.util.List; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import repository.BasicParkingRepository; class ParkingUpdateSchedulerTest { - private final FakeParkingService parkingService = new FakeParkingService( - new BasicParkingRepository() - ); - private final CoordinateService coordinateService = new FakeCoordinateService(); + private final BasicParkingRepository parkingRepository = new BasicParkingRepository(); + private final CoordinateApiService coordinateService = new FakeCoordinateApiService(); @DisplayName("실시간 주차 대수를 제공하는 API에서 주차장이 0~4까지 저장되어 있는 상태에서 0~9까지 주차장을 읽어와 업데이트한다.") @Test void autoUpdateOfferCurrentParking() { //given OfferCurrentParkingApiService offerCurrentParkingApiService = new OfferCurrentParkingApiService(5); - parkingService.saveAll(offerCurrentParkingApiService.read()); + parkingRepository.saveAll(offerCurrentParkingApiService.read()); int readSize = 10; offerCurrentParkingApiService.setReadSize(readSize); ParkingUpdateScheduler scheduler = new ParkingUpdateScheduler( List.of(offerCurrentParkingApiService), coordinateService, - parkingService + parkingRepository ); //when scheduler.autoUpdateOfferCurrentParking(); //then - Assertions.assertThat(parkingService.count()).isEqualTo(readSize); + Assertions.assertThat(parkingRepository.count()).isEqualTo(readSize); } @DisplayName("실시간 주차 대수를 제공하지 않는 API에서 주차장이 0~4까지 저장되어 있는 상태에서 0~9까지 주차장을 읽어와 업데이트한다.") @@ -47,21 +45,21 @@ void autoUpdateNotOfferCurrentParking() { //given NotOfferCurrentParkingApiService notOfferCurrentParkingApiService = new NotOfferCurrentParkingApiService( 5); - parkingService.saveAll(notOfferCurrentParkingApiService.read()); + parkingRepository.saveAll(notOfferCurrentParkingApiService.read()); int readSize = 10; notOfferCurrentParkingApiService.setReadSize(readSize); ParkingUpdateScheduler scheduler = new ParkingUpdateScheduler( List.of(notOfferCurrentParkingApiService), coordinateService, - parkingService + parkingRepository ); //when scheduler.autoUpdateNotOfferCurrentParking(); //then - Assertions.assertThat(parkingService.count()).isEqualTo(readSize); + Assertions.assertThat(parkingRepository.count()).isEqualTo(readSize); } @DisplayName("실시간 주차 대수를 제공하는 API와 제공하지 않는 API는 영향을 안준다.") @@ -71,21 +69,21 @@ void notAffectBetweenOfferAndNotOfferCurrentParking() { OfferCurrentParkingApiService offerCurrentParkingApiService = new OfferCurrentParkingApiService(5); NotOfferCurrentParkingApiService notOfferCurrentParkingApiService = new NotOfferCurrentParkingApiService( 5); - parkingService.saveAll(offerCurrentParkingApiService.read()); + parkingRepository.saveAll(offerCurrentParkingApiService.read()); int readSize = 10; notOfferCurrentParkingApiService.setReadSize(readSize); ParkingUpdateScheduler scheduler = new ParkingUpdateScheduler( List.of(offerCurrentParkingApiService, notOfferCurrentParkingApiService), coordinateService, - parkingService + parkingRepository ); //when scheduler.autoUpdateOfferCurrentParking(); //then - Assertions.assertThat(parkingService.count()).isEqualTo(5); + Assertions.assertThat(parkingRepository.count()).isEqualTo(5); } @DisplayName("특정 API에서 예외 발생시, 해당 API는 log를 남기고 무시한다.") @@ -95,13 +93,13 @@ void autoUpdateWithExceptionApi() { ParkingUpdateScheduler scheduler = new ParkingUpdateScheduler( List.of(new OfferCurrentParkingApiService(5), new ExceptionParkingApiService()), coordinateService, - parkingService + parkingRepository ); //when scheduler.autoUpdateOfferCurrentParking(); //then - Assertions.assertThat(parkingService.count()).isEqualTo(5); + Assertions.assertThat(parkingRepository.count()).isEqualTo(5); } } diff --git a/app-scheduler/src/test/java/com/parkingcomestrue/fake/ExceptionParkingApiService.java b/app-scheduler/src/test/java/com/parkingcomestrue/fake/ExceptionParkingApiService.java new file mode 100644 index 00000000..0a801903 --- /dev/null +++ b/app-scheduler/src/test/java/com/parkingcomestrue/fake/ExceptionParkingApiService.java @@ -0,0 +1,20 @@ +package com.parkingcomestrue.fake; + +import com.parkingcomestrue.external.support.exception.SchedulerException; +import com.parkingcomestrue.external.support.exception.SchedulerExceptionInformation; +import com.parkingcomestrue.external.parkingapi.ParkingApiService; +import com.parkingcomestrue.common.domain.parking.Parking; +import java.util.List; + +public class ExceptionParkingApiService implements ParkingApiService { + + @Override + public boolean offerCurrentParking() { + return true; + } + + @Override + public List read() { + throw new SchedulerException(SchedulerExceptionInformation.INVALID_CONNECT); + } +} diff --git a/app-scheduler/src/test/java/com/parkingcomestrue/fake/FakeCoordinateApiService.java b/app-scheduler/src/test/java/com/parkingcomestrue/fake/FakeCoordinateApiService.java new file mode 100644 index 00000000..567ecf57 --- /dev/null +++ b/app-scheduler/src/test/java/com/parkingcomestrue/fake/FakeCoordinateApiService.java @@ -0,0 +1,16 @@ +package com.parkingcomestrue.fake; + +import com.parkingcomestrue.external.coordinate.CoordinateApiService; +import com.parkingcomestrue.common.domain.parking.Location; + +public class FakeCoordinateApiService extends CoordinateApiService { + + public FakeCoordinateApiService() { + super(null); + } + + @Override + public Location extractLocationByAddress(String address, Location location) { + return Location.of(10.0, 10.0); + } +} diff --git a/src/test/java/com/example/parking/fake/NotOfferCurrentParkingApiService.java b/app-scheduler/src/test/java/com/parkingcomestrue/fake/NotOfferCurrentParkingApiService.java similarity index 59% rename from src/test/java/com/example/parking/fake/NotOfferCurrentParkingApiService.java rename to app-scheduler/src/test/java/com/parkingcomestrue/fake/NotOfferCurrentParkingApiService.java index 491ec2b8..96aaa5e7 100644 --- a/src/test/java/com/example/parking/fake/NotOfferCurrentParkingApiService.java +++ b/app-scheduler/src/test/java/com/parkingcomestrue/fake/NotOfferCurrentParkingApiService.java @@ -1,18 +1,18 @@ -package com.example.parking.fake; - -import com.example.parking.domain.parking.BaseInformation; -import com.example.parking.domain.parking.Fee; -import com.example.parking.domain.parking.FeePolicy; -import com.example.parking.domain.parking.FreeOperatingTime; -import com.example.parking.domain.parking.Location; -import com.example.parking.domain.parking.OperatingTime; -import com.example.parking.domain.parking.OperationType; -import com.example.parking.domain.parking.Parking; -import com.example.parking.domain.parking.ParkingType; -import com.example.parking.domain.parking.PayTypes; -import com.example.parking.domain.parking.Space; -import com.example.parking.domain.parking.TimeUnit; -import com.example.parking.external.parkingapi.ParkingApiService; +package com.parkingcomestrue.fake; + +import com.parkingcomestrue.external.parkingapi.ParkingApiService; +import com.parkingcomestrue.common.domain.parking.BaseInformation; +import com.parkingcomestrue.common.domain.parking.Fee; +import com.parkingcomestrue.common.domain.parking.FeePolicy; +import com.parkingcomestrue.common.domain.parking.FreeOperatingTime; +import com.parkingcomestrue.common.domain.parking.Location; +import com.parkingcomestrue.common.domain.parking.OperatingTime; +import com.parkingcomestrue.common.domain.parking.OperationType; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.parking.ParkingType; +import com.parkingcomestrue.common.domain.parking.PayTypes; +import com.parkingcomestrue.common.domain.parking.Space; +import com.parkingcomestrue.common.domain.parking.TimeUnit; import java.util.LinkedList; import java.util.List; diff --git a/src/test/java/com/example/parking/fake/OfferCurrentParkingApiService.java b/app-scheduler/src/test/java/com/parkingcomestrue/fake/OfferCurrentParkingApiService.java similarity index 59% rename from src/test/java/com/example/parking/fake/OfferCurrentParkingApiService.java rename to app-scheduler/src/test/java/com/parkingcomestrue/fake/OfferCurrentParkingApiService.java index 44d0c895..2df132e5 100644 --- a/src/test/java/com/example/parking/fake/OfferCurrentParkingApiService.java +++ b/app-scheduler/src/test/java/com/parkingcomestrue/fake/OfferCurrentParkingApiService.java @@ -1,18 +1,18 @@ -package com.example.parking.fake; - -import com.example.parking.domain.parking.BaseInformation; -import com.example.parking.domain.parking.Fee; -import com.example.parking.domain.parking.FeePolicy; -import com.example.parking.domain.parking.FreeOperatingTime; -import com.example.parking.domain.parking.Location; -import com.example.parking.domain.parking.OperatingTime; -import com.example.parking.domain.parking.OperationType; -import com.example.parking.domain.parking.Parking; -import com.example.parking.domain.parking.ParkingType; -import com.example.parking.domain.parking.PayTypes; -import com.example.parking.domain.parking.Space; -import com.example.parking.domain.parking.TimeUnit; -import com.example.parking.external.parkingapi.ParkingApiService; +package com.parkingcomestrue.fake; + +import com.parkingcomestrue.external.parkingapi.ParkingApiService; +import com.parkingcomestrue.common.domain.parking.BaseInformation; +import com.parkingcomestrue.common.domain.parking.Fee; +import com.parkingcomestrue.common.domain.parking.FeePolicy; +import com.parkingcomestrue.common.domain.parking.FreeOperatingTime; +import com.parkingcomestrue.common.domain.parking.Location; +import com.parkingcomestrue.common.domain.parking.OperatingTime; +import com.parkingcomestrue.common.domain.parking.OperationType; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.parking.ParkingType; +import com.parkingcomestrue.common.domain.parking.PayTypes; +import com.parkingcomestrue.common.domain.parking.Space; +import com.parkingcomestrue.common.domain.parking.TimeUnit; import java.util.LinkedList; import java.util.List; diff --git a/build.gradle b/build.gradle index 089da741..6941796b 100644 --- a/build.gradle +++ b/build.gradle @@ -4,53 +4,70 @@ plugins { id 'io.spring.dependency-management' version '1.1.4' } -group = 'com.example' -version = '0.0.1-SNAPSHOT' - -java { - sourceCompatibility = '17' +repositories { + mavenCentral() } -configurations { - compileOnly { - extendsFrom annotationProcessor +bootJar.enabled = false + +subprojects { + repositories { + mavenCentral() } -} -repositories { - mavenCentral() -} + group = 'com.parkingcomestrue' + version = '0.0.1-SNAPSHOT' -dependencies { - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.springframework.boot:spring-boot-starter-web' - implementation group: 'org.hibernate.orm', name: 'hibernate-spatial', version: '6.3.1.Final' + apply plugin: 'java' + apply plugin: 'java-library' + apply plugin: 'org.springframework.boot' + apply plugin: 'io.spring.dependency-management' - compileOnly 'org.projectlombok:lombok' - runtimeOnly 'com.h2database:h2' - runtimeOnly 'com.mysql:mysql-connector-j' - annotationProcessor 'org.projectlombok:lombok' - testImplementation 'org.springframework.boot:spring-boot-starter-test' - implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' + dependencies { + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' - // 메일 - implementation 'org.springframework.boot:spring-boot-starter-mail' + runtimeOnly 'com.h2database:h2' + runtimeOnly 'com.mysql:mysql-connector-j' - // redis - implementation("org.springframework.boot:spring-boot-starter-data-redis") + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-web' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + } - // testcontainer - testImplementation "org.testcontainers:testcontainers:1.19.6" - testImplementation "org.testcontainers:junit-jupiter:1.19.6" - testImplementation "com.redis:testcontainers-redis:2.2.0" - testImplementation "org.testcontainers:mysql:1.19.6" + test { + useJUnitPlatform() + } +} + +project(':domain') { + bootJar { enabled = false } + jar { enabled = true } +} - // flyway 추가 - implementation 'org.flywaydb:flyway-mysql' - implementation 'org.flywaydb:flyway-core' +project(':app-api') { + bootJar { enabled = true } } -tasks.named('test') { - useJUnitPlatform() +project(':app-scheduler') { + bootJar { enabled = true } } + +task collectTestResults(type: Copy) { + description = 'Collects test results from all subprojects' + + def resultDirs = [ + 'domain': "$projectDir/domain/build/test-results/test", + 'app-api': "$projectDir/app-api/build/test-results/test", + 'app-scheduler': "$projectDir/app-scheduler/build/test-results/test" + ] + + from resultDirs.collect { _, dir -> + fileTree(dir) { + include '**/TEST-*.xml' + } + } + into "build/allTestResults" +} + diff --git a/domain/.gitignore b/domain/.gitignore new file mode 100644 index 00000000..b63da455 --- /dev/null +++ b/domain/.gitignore @@ -0,0 +1,42 @@ +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/domain/build.gradle b/domain/build.gradle new file mode 100644 index 00000000..a00082db --- /dev/null +++ b/domain/build.gradle @@ -0,0 +1,20 @@ +plugins { + id 'java-library' + id 'java-test-fixtures' + id 'maven-publish' +} + +dependencies { + testImplementation platform('org.junit:junit-bom:5.9.1') + testImplementation 'org.junit.jupiter:junit-jupiter' + + + implementation group: 'org.hibernate.orm', name: 'hibernate-spatial', version: '6.3.1.Final' + + testFixturesImplementation 'org.springframework.boot:spring-boot-starter-data-jpa' + testFixturesImplementation group: 'org.hibernate.orm', name: 'hibernate-spatial', version: '6.3.1.Final' + + // flyway 추가 + implementation 'org.flywaydb:flyway-mysql' + implementation 'org.flywaydb:flyway-core' +} diff --git a/src/main/java/com/example/parking/domain/AuditingEntity.java b/domain/src/main/java/com/parkingcomestrue/common/domain/AuditingEntity.java similarity index 92% rename from src/main/java/com/example/parking/domain/AuditingEntity.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/AuditingEntity.java index 8f1bf061..fb3139fe 100644 --- a/src/main/java/com/example/parking/domain/AuditingEntity.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/AuditingEntity.java @@ -1,4 +1,4 @@ -package com.example.parking.domain; +package com.parkingcomestrue.common.domain; import jakarta.persistence.EntityListeners; import jakarta.persistence.MappedSuperclass; diff --git a/src/main/java/com/example/parking/domain/favorite/Favorite.java b/domain/src/main/java/com/parkingcomestrue/common/domain/favorite/Favorite.java similarity index 81% rename from src/main/java/com/example/parking/domain/favorite/Favorite.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/favorite/Favorite.java index 69dd9a60..2c760ee1 100644 --- a/src/main/java/com/example/parking/domain/favorite/Favorite.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/favorite/Favorite.java @@ -1,9 +1,9 @@ -package com.example.parking.domain.favorite; +package com.parkingcomestrue.common.domain.favorite; -import com.example.parking.domain.AuditingEntity; -import com.example.parking.domain.member.Member; -import com.example.parking.domain.parking.Parking; -import com.example.parking.support.Association; +import com.parkingcomestrue.common.domain.AuditingEntity; +import com.parkingcomestrue.common.domain.member.Member; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.support.Association; import jakarta.persistence.AttributeOverride; import jakarta.persistence.Column; import jakarta.persistence.Embedded; diff --git a/src/main/java/com/example/parking/domain/favorite/FavoriteRepository.java b/domain/src/main/java/com/parkingcomestrue/common/domain/favorite/repository/FavoriteRepository.java similarity index 54% rename from src/main/java/com/example/parking/domain/favorite/FavoriteRepository.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/favorite/repository/FavoriteRepository.java index 81aa3862..64613649 100644 --- a/src/main/java/com/example/parking/domain/favorite/FavoriteRepository.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/favorite/repository/FavoriteRepository.java @@ -1,8 +1,9 @@ -package com.example.parking.domain.favorite; +package com.parkingcomestrue.common.domain.favorite.repository; -import com.example.parking.domain.member.Member; -import com.example.parking.domain.parking.Parking; -import com.example.parking.support.Association; +import com.parkingcomestrue.common.domain.favorite.Favorite; +import com.parkingcomestrue.common.domain.member.Member; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.support.Association; import java.util.List; import org.springframework.data.repository.Repository; diff --git a/src/main/java/com/example/parking/domain/member/Member.java b/domain/src/main/java/com/parkingcomestrue/common/domain/member/Member.java similarity index 66% rename from src/main/java/com/example/parking/domain/member/Member.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/member/Member.java index 8a495975..3df995c7 100644 --- a/src/main/java/com/example/parking/domain/member/Member.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/member/Member.java @@ -1,14 +1,18 @@ -package com.example.parking.domain.member; +package com.parkingcomestrue.common.domain.member; -import com.example.parking.support.exception.DomainException; -import com.example.parking.support.exception.ExceptionInformation; -import jakarta.persistence.*; +import com.parkingcomestrue.common.support.exception.DomainException; +import com.parkingcomestrue.common.support.exception.DomainExceptionInformation; +import jakarta.persistence.Column; +import jakarta.persistence.Embedded; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import java.util.Objects; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; -import java.util.Objects; - @Getter @Entity //@SQLRestriction(value = "deleted = false") @@ -35,6 +39,13 @@ public Member(String email, String nickname, Password password) { this.password = password; } + public void validatePassword(String password) { + if (checkPassword(password)) { + return; + } + throw new DomainException(DomainExceptionInformation.INVALID_PASSWORD); + } + public boolean checkPassword(String password) { return this.password.isMatch(password); } @@ -44,11 +55,8 @@ public void delete() { } public void changePassword(String previousPassword, String newPassword) { - if (checkPassword(previousPassword)) { - this.password = new Password(newPassword); - return; - } - throw new DomainException(ExceptionInformation.INVALID_PASSWORD); + validatePassword(previousPassword); + this.password = new Password(newPassword); } @Override diff --git a/src/main/java/com/example/parking/domain/member/Password.java b/domain/src/main/java/com/parkingcomestrue/common/domain/member/Password.java similarity index 73% rename from src/main/java/com/example/parking/domain/member/Password.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/member/Password.java index f7bc6b27..5befdae1 100644 --- a/src/main/java/com/example/parking/domain/member/Password.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/member/Password.java @@ -1,13 +1,12 @@ -package com.example.parking.domain.member; +package com.parkingcomestrue.common.domain.member; -import com.example.parking.util.cipher.SHA256; +import com.parkingcomestrue.common.util.cipher.SHA256; import jakarta.persistence.Embeddable; +import java.util.Objects; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; -import java.util.Objects; - @Embeddable @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @@ -25,8 +24,12 @@ public boolean isMatch(String password) { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } Password that = (Password) o; return Objects.equals(password, that.password); } diff --git a/src/main/java/com/example/parking/domain/member/MemberRepository.java b/domain/src/main/java/com/parkingcomestrue/common/domain/member/repository/MemberRepository.java similarity index 57% rename from src/main/java/com/example/parking/domain/member/MemberRepository.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/member/repository/MemberRepository.java index 0b515618..a4848907 100644 --- a/src/main/java/com/example/parking/domain/member/MemberRepository.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/member/repository/MemberRepository.java @@ -1,7 +1,8 @@ -package com.example.parking.domain.member; +package com.parkingcomestrue.common.domain.member.repository; -import com.example.parking.support.exception.DomainException; -import com.example.parking.support.exception.ExceptionInformation; +import com.parkingcomestrue.common.support.exception.DomainException; +import com.parkingcomestrue.common.support.exception.DomainExceptionInformation; +import com.parkingcomestrue.common.domain.member.Member; import java.util.Optional; import org.springframework.data.repository.Repository; @@ -16,6 +17,6 @@ public interface MemberRepository extends Repository { void save(Member member); default Member getById(Long id) { - return findById(id).orElseThrow(() -> new DomainException(ExceptionInformation.INVALID_MEMBER)); + return findById(id).orElseThrow(() -> new DomainException(DomainExceptionInformation.INVALID_MEMBER)); } } diff --git a/src/main/java/com/example/parking/domain/parking/BaseInformation.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/BaseInformation.java similarity index 96% rename from src/main/java/com/example/parking/domain/parking/BaseInformation.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/BaseInformation.java index 8287650d..73f24df6 100644 --- a/src/main/java/com/example/parking/domain/parking/BaseInformation.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/BaseInformation.java @@ -1,4 +1,4 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; import static jakarta.persistence.EnumType.STRING; diff --git a/src/main/java/com/example/parking/domain/parking/Day.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/Day.java similarity index 86% rename from src/main/java/com/example/parking/domain/parking/Day.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/Day.java index c752d22d..4cf87d51 100644 --- a/src/main/java/com/example/parking/domain/parking/Day.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/Day.java @@ -1,4 +1,4 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; import java.time.DayOfWeek; diff --git a/src/main/java/com/example/parking/domain/parking/DayParking.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/DayParking.java similarity index 75% rename from src/main/java/com/example/parking/domain/parking/DayParking.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/DayParking.java index 67334b83..4eef5b49 100644 --- a/src/main/java/com/example/parking/domain/parking/DayParking.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/DayParking.java @@ -1,15 +1,14 @@ -package com.example.parking.domain.parking; - -import lombok.Getter; +package com.parkingcomestrue.common.domain.parking; import java.time.LocalTime; +import lombok.Getter; @Getter public class DayParking { - private Day day; - private LocalTime beginTime; - private LocalTime endTime; + private final Day day; + private final LocalTime beginTime; + private final LocalTime endTime; public DayParking(Day day, LocalTime beginTime, LocalTime endTime) { this.day = day; diff --git a/src/main/java/com/example/parking/domain/parking/Fee.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/Fee.java similarity index 95% rename from src/main/java/com/example/parking/domain/parking/Fee.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/Fee.java index 2845b1cd..275ffd5a 100644 --- a/src/main/java/com/example/parking/domain/parking/Fee.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/Fee.java @@ -1,4 +1,4 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; import jakarta.persistence.Embeddable; import lombok.AccessLevel; diff --git a/src/main/java/com/example/parking/domain/parking/FeePolicy.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/FeePolicy.java similarity index 97% rename from src/main/java/com/example/parking/domain/parking/FeePolicy.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/FeePolicy.java index d208597d..8cb08d36 100644 --- a/src/main/java/com/example/parking/domain/parking/FeePolicy.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/FeePolicy.java @@ -1,4 +1,4 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; import jakarta.persistence.AttributeOverride; import jakarta.persistence.Column; diff --git a/src/main/java/com/example/parking/domain/parking/FreeOperatingTime.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/FreeOperatingTime.java similarity index 98% rename from src/main/java/com/example/parking/domain/parking/FreeOperatingTime.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/FreeOperatingTime.java index 0f21f270..46d742dd 100644 --- a/src/main/java/com/example/parking/domain/parking/FreeOperatingTime.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/FreeOperatingTime.java @@ -1,14 +1,13 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; import jakarta.persistence.AttributeOverride; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; import jakarta.persistence.Embedded; +import java.time.LocalTime; import lombok.AccessLevel; import lombok.NoArgsConstructor; -import java.time.LocalTime; - @NoArgsConstructor(access = AccessLevel.PROTECTED) @Embeddable public class FreeOperatingTime { diff --git a/src/main/java/com/example/parking/domain/parking/Location.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/Location.java similarity index 87% rename from src/main/java/com/example/parking/domain/parking/Location.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/Location.java index 18732ddc..0f512a6b 100644 --- a/src/main/java/com/example/parking/domain/parking/Location.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/Location.java @@ -1,7 +1,7 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; -import com.example.parking.support.exception.DomainException; -import com.example.parking.support.exception.ExceptionInformation; +import com.parkingcomestrue.common.support.exception.DomainException; +import com.parkingcomestrue.common.support.exception.DomainExceptionInformation; import jakarta.persistence.Embeddable; import lombok.AccessLevel; import lombok.EqualsAndHashCode; @@ -46,7 +46,7 @@ public static Location of(Double longitude, Double latitude) { private static void verifyLocation(Double longitude, Double latitude) { if (longitude > MAX_LONGITUDE || longitude < MIN_LONGITUDE || latitude > MAX_LATITUDE || latitude < MIN_LATITUDE) { - throw new DomainException(ExceptionInformation.INVALID_LOCATION); + throw new DomainException(DomainExceptionInformation.INVALID_LOCATION); } } diff --git a/src/main/java/com/example/parking/domain/parking/OperatingTime.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/OperatingTime.java similarity index 97% rename from src/main/java/com/example/parking/domain/parking/OperatingTime.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/OperatingTime.java index ff8a9a32..65cdde82 100644 --- a/src/main/java/com/example/parking/domain/parking/OperatingTime.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/OperatingTime.java @@ -1,4 +1,4 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; import jakarta.persistence.AttributeOverride; import jakarta.persistence.Column; diff --git a/src/main/java/com/example/parking/domain/parking/OperationType.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/OperationType.java similarity index 73% rename from src/main/java/com/example/parking/domain/parking/OperationType.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/OperationType.java index 23eab9c7..f51b760d 100644 --- a/src/main/java/com/example/parking/domain/parking/OperationType.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/OperationType.java @@ -1,6 +1,6 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; -import com.example.parking.domain.searchcondition.SearchConditionAvailable; +import com.parkingcomestrue.common.domain.searchcondition.SearchConditionAvailable; import lombok.Getter; @Getter diff --git a/src/main/java/com/example/parking/domain/parking/Parking.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/Parking.java similarity index 97% rename from src/main/java/com/example/parking/domain/parking/Parking.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/Parking.java index 2c2101c4..0f135a38 100644 --- a/src/main/java/com/example/parking/domain/parking/Parking.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/Parking.java @@ -1,6 +1,6 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; -import com.example.parking.domain.AuditingEntity; +import com.parkingcomestrue.common.domain.AuditingEntity; import jakarta.persistence.Embedded; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; diff --git a/src/main/java/com/example/parking/domain/parking/ParkingFeeCalculator.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/ParkingFeeCalculator.java similarity index 98% rename from src/main/java/com/example/parking/domain/parking/ParkingFeeCalculator.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/ParkingFeeCalculator.java index 4c974cef..fbf8c8d2 100644 --- a/src/main/java/com/example/parking/domain/parking/ParkingFeeCalculator.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/ParkingFeeCalculator.java @@ -1,4 +1,4 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; import java.time.LocalDateTime; import java.time.LocalTime; diff --git a/src/main/java/com/example/parking/domain/parking/ParkingType.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/ParkingType.java similarity index 83% rename from src/main/java/com/example/parking/domain/parking/ParkingType.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/ParkingType.java index 5c7c39f3..4e3a6ce1 100644 --- a/src/main/java/com/example/parking/domain/parking/ParkingType.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/ParkingType.java @@ -1,6 +1,6 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; -import com.example.parking.domain.searchcondition.SearchConditionAvailable; +import com.parkingcomestrue.common.domain.searchcondition.SearchConditionAvailable; import java.util.Arrays; import lombok.Getter; diff --git a/src/main/java/com/example/parking/domain/parking/PayType.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/PayType.java similarity index 74% rename from src/main/java/com/example/parking/domain/parking/PayType.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/PayType.java index 11e9f793..60310ade 100644 --- a/src/main/java/com/example/parking/domain/parking/PayType.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/PayType.java @@ -1,6 +1,6 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; -import com.example.parking.domain.searchcondition.SearchConditionAvailable; +import com.parkingcomestrue.common.domain.searchcondition.SearchConditionAvailable; import lombok.Getter; @Getter diff --git a/src/main/java/com/example/parking/domain/parking/PayTypes.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/PayTypes.java similarity index 96% rename from src/main/java/com/example/parking/domain/parking/PayTypes.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/PayTypes.java index 83e64a3f..9089cdb7 100644 --- a/src/main/java/com/example/parking/domain/parking/PayTypes.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/PayTypes.java @@ -1,4 +1,4 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; import jakarta.persistence.Embeddable; import java.util.Collection; diff --git a/src/main/java/com/example/parking/domain/parking/SearchingCondition.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/SearchingCondition.java similarity index 85% rename from src/main/java/com/example/parking/domain/parking/SearchingCondition.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/SearchingCondition.java index 820ddb7a..ccc6988b 100644 --- a/src/main/java/com/example/parking/domain/parking/SearchingCondition.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/SearchingCondition.java @@ -1,6 +1,6 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; -import com.example.parking.domain.searchcondition.FeeType; +import com.parkingcomestrue.common.domain.searchcondition.FeeType; import java.util.List; import lombok.Getter; diff --git a/src/main/java/com/example/parking/domain/parking/Space.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/Space.java similarity index 95% rename from src/main/java/com/example/parking/domain/parking/Space.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/Space.java index addbc039..bb987b5d 100644 --- a/src/main/java/com/example/parking/domain/parking/Space.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/Space.java @@ -1,4 +1,4 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; import jakarta.persistence.Embeddable; import lombok.AccessLevel; diff --git a/src/main/java/com/example/parking/domain/parking/TimeInfo.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/TimeInfo.java similarity index 97% rename from src/main/java/com/example/parking/domain/parking/TimeInfo.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/TimeInfo.java index 3934fd96..f5347050 100644 --- a/src/main/java/com/example/parking/domain/parking/TimeInfo.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/TimeInfo.java @@ -1,4 +1,4 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; import jakarta.persistence.Embeddable; import java.time.LocalTime; diff --git a/src/main/java/com/example/parking/domain/parking/TimeUnit.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/TimeUnit.java similarity index 95% rename from src/main/java/com/example/parking/domain/parking/TimeUnit.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/TimeUnit.java index f98814b9..d407befb 100644 --- a/src/main/java/com/example/parking/domain/parking/TimeUnit.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/TimeUnit.java @@ -1,4 +1,4 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; import jakarta.persistence.Embeddable; import lombok.AccessLevel; diff --git a/domain/src/main/java/com/parkingcomestrue/common/domain/parking/dto/ParkingQueryCondition.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/dto/ParkingQueryCondition.java new file mode 100644 index 00000000..fd8ae260 --- /dev/null +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/dto/ParkingQueryCondition.java @@ -0,0 +1,23 @@ +package com.parkingcomestrue.common.domain.parking.dto; + +import com.parkingcomestrue.common.domain.parking.OperationType; +import com.parkingcomestrue.common.domain.parking.ParkingType; +import com.parkingcomestrue.common.domain.parking.PayTypes; +import lombok.Getter; + +@Getter +public class ParkingQueryCondition { + + private final OperationType operationType; + private final ParkingType parkingType; + private final Boolean cardEnabled; + private final PayTypes payTypes; + + public ParkingQueryCondition(OperationType operationType, ParkingType parkingType, Boolean cardEnabled, + PayTypes payTypes) { + this.operationType = operationType; + this.parkingType = parkingType; + this.cardEnabled = cardEnabled; + this.payTypes = payTypes; + } +} diff --git a/src/main/java/com/example/parking/domain/parking/repository/ParkingRepository.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/repository/ParkingRepository.java similarity index 79% rename from src/main/java/com/example/parking/domain/parking/repository/ParkingRepository.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/repository/ParkingRepository.java index d7a79aba..47372665 100644 --- a/src/main/java/com/example/parking/domain/parking/repository/ParkingRepository.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/repository/ParkingRepository.java @@ -1,8 +1,8 @@ -package com.example.parking.domain.parking.repository; +package com.parkingcomestrue.common.domain.parking.repository; -import com.example.parking.domain.parking.Parking; -import com.example.parking.support.exception.DomainException; -import com.example.parking.support.exception.ExceptionInformation; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.support.exception.DomainException; +import com.parkingcomestrue.common.support.exception.DomainExceptionInformation; import java.util.List; import java.util.Optional; import java.util.Set; @@ -14,7 +14,7 @@ public interface ParkingRepository extends Repository { default Parking getById(Long id) { - return findById(id).orElseThrow(() -> new DomainException(ExceptionInformation.INVALID_PARKING)); + return findById(id).orElseThrow(() -> new DomainException(DomainExceptionInformation.INVALID_PARKING)); } Optional findById(Long id); diff --git a/src/main/java/com/example/parking/application/parking/ParkingFilteringService.java b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/service/ParkingFilteringService.java similarity index 81% rename from src/main/java/com/example/parking/application/parking/ParkingFilteringService.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/parking/service/ParkingFilteringService.java index a4dae272..be207a3b 100644 --- a/src/main/java/com/example/parking/application/parking/ParkingFilteringService.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/parking/service/ParkingFilteringService.java @@ -1,9 +1,9 @@ -package com.example.parking.application.parking; +package com.parkingcomestrue.common.domain.parking.service; -import com.example.parking.domain.parking.Parking; -import com.example.parking.domain.parking.ParkingFeeCalculator; -import com.example.parking.domain.parking.SearchingCondition; -import com.example.parking.domain.searchcondition.FeeType; +import com.parkingcomestrue.common.domain.searchcondition.FeeType; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.parking.ParkingFeeCalculator; +import com.parkingcomestrue.common.domain.parking.SearchingCondition; import java.time.LocalDateTime; import java.util.List; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/example/parking/domain/review/Content.java b/domain/src/main/java/com/parkingcomestrue/common/domain/review/Content.java similarity index 76% rename from src/main/java/com/example/parking/domain/review/Content.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/review/Content.java index 83dc5290..1ab1b314 100644 --- a/src/main/java/com/example/parking/domain/review/Content.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/review/Content.java @@ -1,7 +1,7 @@ -package com.example.parking.domain.review; +package com.parkingcomestrue.common.domain.review; -import com.example.parking.support.exception.DomainException; -import com.example.parking.support.exception.ExceptionInformation; +import com.parkingcomestrue.common.support.exception.DomainException; +import com.parkingcomestrue.common.support.exception.DomainExceptionInformation; import java.util.Arrays; import lombok.Getter; @@ -29,6 +29,6 @@ public static Content find(String description) { return Arrays.stream(values()) .filter(content -> content.getDescription().startsWith(description)) .findAny() - .orElseThrow(() -> new DomainException(ExceptionInformation.INVALID_CONTENT)); + .orElseThrow(() -> new DomainException(DomainExceptionInformation.INVALID_CONTENT)); } } diff --git a/src/main/java/com/example/parking/domain/review/Review.java b/domain/src/main/java/com/parkingcomestrue/common/domain/review/Review.java similarity index 74% rename from src/main/java/com/example/parking/domain/review/Review.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/review/Review.java index 451f559a..7f959b74 100644 --- a/src/main/java/com/example/parking/domain/review/Review.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/review/Review.java @@ -1,11 +1,11 @@ -package com.example.parking.domain.review; - -import com.example.parking.infra.converter.ContentConverter; -import com.example.parking.support.Association; -import com.example.parking.domain.member.Member; -import com.example.parking.domain.parking.Parking; -import com.example.parking.support.exception.DomainException; -import com.example.parking.support.exception.ExceptionInformation; +package com.parkingcomestrue.common.domain.review; + +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.infra.converter.ContentConverter; +import com.parkingcomestrue.common.domain.member.Member; +import com.parkingcomestrue.common.support.Association; +import com.parkingcomestrue.common.support.exception.DomainException; +import com.parkingcomestrue.common.support.exception.DomainExceptionInformation; import jakarta.persistence.AttributeOverride; import jakarta.persistence.Column; import jakarta.persistence.Convert; @@ -55,7 +55,7 @@ public Review(Association parkingId, Association reviewerId, Li private static void validate(List contents) { if (contents == null || contents.isEmpty() || contents.size() > MAX_CONTENTS_SIZE) { - throw new DomainException(ExceptionInformation.INVALID_CONTENTS_SIZE); + throw new DomainException(DomainExceptionInformation.INVALID_CONTENTS_SIZE); } } } diff --git a/domain/src/main/java/com/parkingcomestrue/common/domain/review/repository/ReviewRepository.java b/domain/src/main/java/com/parkingcomestrue/common/domain/review/repository/ReviewRepository.java new file mode 100644 index 00000000..3b367444 --- /dev/null +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/review/repository/ReviewRepository.java @@ -0,0 +1,27 @@ +package com.parkingcomestrue.common.domain.review.repository; + +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.member.Member; +import com.parkingcomestrue.common.domain.review.Review; +import com.parkingcomestrue.common.support.Association; +import com.parkingcomestrue.common.support.exception.DomainException; +import com.parkingcomestrue.common.support.exception.DomainExceptionInformation; +import java.util.List; +import java.util.Optional; +import org.springframework.data.repository.Repository; + +public interface ReviewRepository extends Repository { + + Optional findById(Long id); + + default Review getById(Long id) { + return findById(id) + .orElseThrow(() -> new DomainException(DomainExceptionInformation.INVALID_REVIEW)); + } + + List findAllByParkingId(Association parkingId); + + void save(Review review); + + boolean existsByParkingIdAndReviewerId(Association parkingId, Association reviewerId); +} diff --git a/src/main/java/com/example/parking/domain/review/service/ReviewDomainService.java b/domain/src/main/java/com/parkingcomestrue/common/domain/review/service/ReviewDomainService.java similarity index 61% rename from src/main/java/com/example/parking/domain/review/service/ReviewDomainService.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/review/service/ReviewDomainService.java index 2e2672a3..b11304f4 100644 --- a/src/main/java/com/example/parking/domain/review/service/ReviewDomainService.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/review/service/ReviewDomainService.java @@ -1,13 +1,13 @@ -package com.example.parking.domain.review.service; +package com.parkingcomestrue.common.domain.review.service; -import com.example.parking.support.Association; -import com.example.parking.domain.member.Member; -import com.example.parking.domain.parking.Parking; -import com.example.parking.domain.review.Content; -import com.example.parking.domain.review.Review; -import com.example.parking.domain.review.ReviewRepository; -import com.example.parking.support.exception.DomainException; -import com.example.parking.support.exception.ExceptionInformation; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.review.repository.ReviewRepository; +import com.parkingcomestrue.common.domain.member.Member; +import com.parkingcomestrue.common.domain.review.Content; +import com.parkingcomestrue.common.domain.review.Review; +import com.parkingcomestrue.common.support.Association; +import com.parkingcomestrue.common.support.exception.DomainException; +import com.parkingcomestrue.common.support.exception.DomainExceptionInformation; import java.util.Collection; import java.util.List; import java.util.Map; @@ -24,7 +24,7 @@ public class ReviewDomainService { public void validateDuplicateReview(Association parkingId, Association reviewerId) { if (reviewRepository.existsByParkingIdAndReviewerId(parkingId, reviewerId)) { - throw new DomainException(ExceptionInformation.DUPLICATE_REVIEW); + throw new DomainException(DomainExceptionInformation.DUPLICATE_REVIEW); } } diff --git a/src/main/java/com/example/parking/domain/searchcondition/FeeType.java b/domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/FeeType.java similarity index 85% rename from src/main/java/com/example/parking/domain/searchcondition/FeeType.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/FeeType.java index 75176b27..9cc403ec 100644 --- a/src/main/java/com/example/parking/domain/searchcondition/FeeType.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/FeeType.java @@ -1,4 +1,4 @@ -package com.example.parking.domain.searchcondition; +package com.parkingcomestrue.common.domain.searchcondition; import lombok.Getter; diff --git a/src/main/java/com/example/parking/domain/searchcondition/Hours.java b/domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/Hours.java similarity index 61% rename from src/main/java/com/example/parking/domain/searchcondition/Hours.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/Hours.java index 9f001d70..8fc7a223 100644 --- a/src/main/java/com/example/parking/domain/searchcondition/Hours.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/Hours.java @@ -1,7 +1,7 @@ -package com.example.parking.domain.searchcondition; +package com.parkingcomestrue.common.domain.searchcondition; -import com.example.parking.support.exception.DomainException; -import com.example.parking.support.exception.ExceptionInformation; +import com.parkingcomestrue.common.support.exception.DomainException; +import com.parkingcomestrue.common.support.exception.DomainExceptionInformation; import jakarta.persistence.Embeddable; import lombok.AccessLevel; import lombok.Getter; @@ -22,6 +22,6 @@ public static Hours from(int hours) { if ((hours >= 1 && hours <= 12) || hours == 24) { return new Hours(hours); } - throw new DomainException(ExceptionInformation.INVALID_HOURS); + throw new DomainException(DomainExceptionInformation.INVALID_HOURS); } } diff --git a/src/main/java/com/example/parking/domain/searchcondition/Priority.java b/domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/Priority.java similarity index 86% rename from src/main/java/com/example/parking/domain/searchcondition/Priority.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/Priority.java index 256bf6d5..c4a027a1 100644 --- a/src/main/java/com/example/parking/domain/searchcondition/Priority.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/Priority.java @@ -1,4 +1,4 @@ -package com.example.parking.domain.searchcondition; +package com.parkingcomestrue.common.domain.searchcondition; import lombok.Getter; diff --git a/src/main/java/com/example/parking/domain/searchcondition/SearchCondition.java b/domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/SearchCondition.java similarity index 76% rename from src/main/java/com/example/parking/domain/searchcondition/SearchCondition.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/SearchCondition.java index 9b55c910..043f1781 100644 --- a/src/main/java/com/example/parking/domain/searchcondition/SearchCondition.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/SearchCondition.java @@ -1,14 +1,14 @@ -package com.example.parking.domain.searchcondition; +package com.parkingcomestrue.common.domain.searchcondition; -import com.example.parking.domain.member.Member; -import com.example.parking.domain.parking.OperationType; -import com.example.parking.domain.parking.ParkingType; -import com.example.parking.domain.parking.PayType; -import com.example.parking.infra.converter.FeeTypeConverter; -import com.example.parking.infra.converter.OperationTypeConverter; -import com.example.parking.infra.converter.ParkingTypeConverter; -import com.example.parking.infra.converter.PayTypeConverter; -import com.example.parking.support.Association; +import com.parkingcomestrue.common.domain.member.Member; +import com.parkingcomestrue.common.domain.parking.OperationType; +import com.parkingcomestrue.common.domain.parking.ParkingType; +import com.parkingcomestrue.common.domain.parking.PayType; +import com.parkingcomestrue.common.infra.converter.FeeTypeConverter; +import com.parkingcomestrue.common.infra.converter.OperationTypeConverter; +import com.parkingcomestrue.common.infra.converter.ParkingTypeConverter; +import com.parkingcomestrue.common.infra.converter.PayTypeConverter; +import com.parkingcomestrue.common.support.Association; import jakarta.persistence.AttributeOverride; import jakarta.persistence.Column; import jakarta.persistence.Convert; diff --git a/src/main/java/com/example/parking/domain/searchcondition/SearchConditionAvailable.java b/domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/SearchConditionAvailable.java similarity index 69% rename from src/main/java/com/example/parking/domain/searchcondition/SearchConditionAvailable.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/SearchConditionAvailable.java index affea042..5ff6095d 100644 --- a/src/main/java/com/example/parking/domain/searchcondition/SearchConditionAvailable.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/SearchConditionAvailable.java @@ -1,4 +1,4 @@ -package com.example.parking.domain.searchcondition; +package com.parkingcomestrue.common.domain.searchcondition; public interface SearchConditionAvailable { diff --git a/domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/repository/SearchConditionRepository.java b/domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/repository/SearchConditionRepository.java new file mode 100644 index 00000000..2e1a9c89 --- /dev/null +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/searchcondition/repository/SearchConditionRepository.java @@ -0,0 +1,19 @@ +package com.parkingcomestrue.common.domain.searchcondition.repository; + +import com.parkingcomestrue.common.domain.searchcondition.SearchCondition; +import com.parkingcomestrue.common.support.exception.DomainException; +import com.parkingcomestrue.common.support.exception.DomainExceptionInformation; +import java.util.Optional; +import org.springframework.data.repository.Repository; + +public interface SearchConditionRepository extends Repository { + + Optional findByMemberId(Long memberId); + + default SearchCondition getByMemberId(Long memberId) { + return findByMemberId(memberId) + .orElseThrow(() -> new DomainException(DomainExceptionInformation.INVALID_SEARCH_CONDITION)); + } + + void save(SearchCondition searchCondition); +} diff --git a/src/main/java/com/example/parking/auth/session/MemberSession.java b/domain/src/main/java/com/parkingcomestrue/common/domain/session/MemberSession.java similarity index 93% rename from src/main/java/com/example/parking/auth/session/MemberSession.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/session/MemberSession.java index 50711966..7b1248b2 100644 --- a/src/main/java/com/example/parking/auth/session/MemberSession.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/session/MemberSession.java @@ -1,4 +1,4 @@ -package com.example.parking.auth.session; +package com.parkingcomestrue.common.domain.session; import jakarta.persistence.Entity; import jakarta.persistence.Id; diff --git a/src/main/java/com/example/parking/auth/session/MemberSessionRepository.java b/domain/src/main/java/com/parkingcomestrue/common/domain/session/repository/MemberSessionRepository.java similarity index 72% rename from src/main/java/com/example/parking/auth/session/MemberSessionRepository.java rename to domain/src/main/java/com/parkingcomestrue/common/domain/session/repository/MemberSessionRepository.java index 547186ae..5fedcbbd 100644 --- a/src/main/java/com/example/parking/auth/session/MemberSessionRepository.java +++ b/domain/src/main/java/com/parkingcomestrue/common/domain/session/repository/MemberSessionRepository.java @@ -1,5 +1,6 @@ -package com.example.parking.auth.session; +package com.parkingcomestrue.common.domain.session.repository; +import com.parkingcomestrue.common.domain.session.MemberSession; import java.time.LocalDateTime; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/domain/src/main/java/com/parkingcomestrue/common/infra/config/JpaAuditingConfig.java b/domain/src/main/java/com/parkingcomestrue/common/infra/config/JpaAuditingConfig.java new file mode 100644 index 00000000..a87e4826 --- /dev/null +++ b/domain/src/main/java/com/parkingcomestrue/common/infra/config/JpaAuditingConfig.java @@ -0,0 +1,10 @@ +package com.parkingcomestrue.common.infra.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; + +@Configuration +@EnableJpaAuditing +public class JpaAuditingConfig { + +} diff --git a/src/main/java/com/example/parking/infra/converter/ContentConverter.java b/domain/src/main/java/com/parkingcomestrue/common/infra/converter/ContentConverter.java similarity index 63% rename from src/main/java/com/example/parking/infra/converter/ContentConverter.java rename to domain/src/main/java/com/parkingcomestrue/common/infra/converter/ContentConverter.java index 742bff3c..5f5344c7 100644 --- a/src/main/java/com/example/parking/infra/converter/ContentConverter.java +++ b/domain/src/main/java/com/parkingcomestrue/common/infra/converter/ContentConverter.java @@ -1,6 +1,6 @@ -package com.example.parking.infra.converter; +package com.parkingcomestrue.common.infra.converter; -import com.example.parking.domain.review.Content; +import com.parkingcomestrue.common.domain.review.Content; import jakarta.persistence.Converter; @Converter diff --git a/src/main/java/com/example/parking/infra/converter/EnumListConverter.java b/domain/src/main/java/com/parkingcomestrue/common/infra/converter/EnumListConverter.java similarity index 94% rename from src/main/java/com/example/parking/infra/converter/EnumListConverter.java rename to domain/src/main/java/com/parkingcomestrue/common/infra/converter/EnumListConverter.java index 1e5b91e6..41aaba43 100644 --- a/src/main/java/com/example/parking/infra/converter/EnumListConverter.java +++ b/domain/src/main/java/com/parkingcomestrue/common/infra/converter/EnumListConverter.java @@ -1,4 +1,4 @@ -package com.example.parking.infra.converter; +package com.parkingcomestrue.common.infra.converter; import jakarta.persistence.AttributeConverter; import java.util.Arrays; diff --git a/src/main/java/com/example/parking/infra/converter/FeeTypeConverter.java b/domain/src/main/java/com/parkingcomestrue/common/infra/converter/FeeTypeConverter.java similarity index 61% rename from src/main/java/com/example/parking/infra/converter/FeeTypeConverter.java rename to domain/src/main/java/com/parkingcomestrue/common/infra/converter/FeeTypeConverter.java index 26292af6..e8e6ca89 100644 --- a/src/main/java/com/example/parking/infra/converter/FeeTypeConverter.java +++ b/domain/src/main/java/com/parkingcomestrue/common/infra/converter/FeeTypeConverter.java @@ -1,6 +1,6 @@ -package com.example.parking.infra.converter; +package com.parkingcomestrue.common.infra.converter; -import com.example.parking.domain.searchcondition.FeeType; +import com.parkingcomestrue.common.domain.searchcondition.FeeType; import jakarta.persistence.Converter; @Converter diff --git a/src/main/java/com/example/parking/infra/converter/OperationTypeConverter.java b/domain/src/main/java/com/parkingcomestrue/common/infra/converter/OperationTypeConverter.java similarity index 64% rename from src/main/java/com/example/parking/infra/converter/OperationTypeConverter.java rename to domain/src/main/java/com/parkingcomestrue/common/infra/converter/OperationTypeConverter.java index 452ace9c..330edf91 100644 --- a/src/main/java/com/example/parking/infra/converter/OperationTypeConverter.java +++ b/domain/src/main/java/com/parkingcomestrue/common/infra/converter/OperationTypeConverter.java @@ -1,6 +1,6 @@ -package com.example.parking.infra.converter; +package com.parkingcomestrue.common.infra.converter; -import com.example.parking.domain.parking.OperationType; +import com.parkingcomestrue.common.domain.parking.OperationType; import jakarta.persistence.Converter; @Converter diff --git a/src/main/java/com/example/parking/infra/converter/ParkingTypeConverter.java b/domain/src/main/java/com/parkingcomestrue/common/infra/converter/ParkingTypeConverter.java similarity index 63% rename from src/main/java/com/example/parking/infra/converter/ParkingTypeConverter.java rename to domain/src/main/java/com/parkingcomestrue/common/infra/converter/ParkingTypeConverter.java index 733a1f0f..35b5f741 100644 --- a/src/main/java/com/example/parking/infra/converter/ParkingTypeConverter.java +++ b/domain/src/main/java/com/parkingcomestrue/common/infra/converter/ParkingTypeConverter.java @@ -1,6 +1,6 @@ -package com.example.parking.infra.converter; +package com.parkingcomestrue.common.infra.converter; -import com.example.parking.domain.parking.ParkingType; +import com.parkingcomestrue.common.domain.parking.ParkingType; import jakarta.persistence.Converter; @Converter diff --git a/src/main/java/com/example/parking/infra/converter/PayTypeConverter.java b/domain/src/main/java/com/parkingcomestrue/common/infra/converter/PayTypeConverter.java similarity index 62% rename from src/main/java/com/example/parking/infra/converter/PayTypeConverter.java rename to domain/src/main/java/com/parkingcomestrue/common/infra/converter/PayTypeConverter.java index e4c683ae..24950000 100644 --- a/src/main/java/com/example/parking/infra/converter/PayTypeConverter.java +++ b/domain/src/main/java/com/parkingcomestrue/common/infra/converter/PayTypeConverter.java @@ -1,6 +1,6 @@ -package com.example.parking.infra.converter; +package com.parkingcomestrue.common.infra.converter; -import com.example.parking.domain.parking.PayType; +import com.parkingcomestrue.common.domain.parking.PayType; import jakarta.persistence.Converter; @Converter diff --git a/src/main/java/com/example/parking/support/Association.java b/domain/src/main/java/com/parkingcomestrue/common/support/Association.java similarity index 92% rename from src/main/java/com/example/parking/support/Association.java rename to domain/src/main/java/com/parkingcomestrue/common/support/Association.java index cbc52d8b..2d80978a 100644 --- a/src/main/java/com/example/parking/support/Association.java +++ b/domain/src/main/java/com/parkingcomestrue/common/support/Association.java @@ -1,4 +1,4 @@ -package com.example.parking.support; +package com.parkingcomestrue.common.support; import jakarta.persistence.Embeddable; import lombok.AccessLevel; diff --git a/domain/src/main/java/com/parkingcomestrue/common/support/exception/DomainException.java b/domain/src/main/java/com/parkingcomestrue/common/support/exception/DomainException.java new file mode 100644 index 00000000..da5f7af9 --- /dev/null +++ b/domain/src/main/java/com/parkingcomestrue/common/support/exception/DomainException.java @@ -0,0 +1,16 @@ +package com.parkingcomestrue.common.support.exception; + +public class DomainException extends RuntimeException { + + private final DomainExceptionInformation exceptionInformation; + + public DomainException(DomainExceptionInformation exceptionInformation) { + super(); + this.exceptionInformation = exceptionInformation; + } + + @Override + public String getMessage() { + return exceptionInformation.getMessage(); + } +} diff --git a/src/main/java/com/example/parking/support/exception/ExceptionInformation.java b/domain/src/main/java/com/parkingcomestrue/common/support/exception/DomainExceptionInformation.java similarity index 59% rename from src/main/java/com/example/parking/support/exception/ExceptionInformation.java rename to domain/src/main/java/com/parkingcomestrue/common/support/exception/DomainExceptionInformation.java index 2917ca9b..ce37f420 100644 --- a/src/main/java/com/example/parking/support/exception/ExceptionInformation.java +++ b/domain/src/main/java/com/parkingcomestrue/common/support/exception/DomainExceptionInformation.java @@ -1,14 +1,12 @@ -package com.example.parking.support.exception; +package com.parkingcomestrue.common.support.exception; import lombok.Getter; @Getter -public enum ExceptionInformation { - DUPLICATE_MAIL("중복된 이메일이라 회원가입이 불가능합니다."), - INVALID_EMAIL("회원가입되지 않은 이메일입니다."), +public enum DomainExceptionInformation { + INVALID_MEMBER("존재하지 않는 회원입니다."), INVALID_PASSWORD("비밀번호가 틀립니다."), - UNAUTHORIZED("존재하지 않는 sessionId 입니다."), INVALID_PARKING("존재하지 않는 주차장입니다."), INVALID_CONTENT("존재하지 않는 리뷰 내용입니다."), @@ -20,15 +18,11 @@ public enum ExceptionInformation { ENCRYPT_EXCEPTION("암호화에 실패했습니다."), - INVALID_CONNECT("주차장 API 연결 중 예외 발생"), - COORDINATE_EXCEPTION("좌표 변환 중 예외 발생"), - INVALID_AUTH_CODE("존재하지 않는 인증코드 입니다."), - INVALID_DESCRIPTION("해당하는 내용의 검색 조건이 존재하지 않습니다."), INVALID_LOCATION("경도 또는 위도가 올바르지 않습니다."); private final String message; - ExceptionInformation(String message) { + DomainExceptionInformation(String message) { this.message = message; } } diff --git a/src/main/java/com/example/parking/util/cipher/EncryptionException.java b/domain/src/main/java/com/parkingcomestrue/common/util/cipher/EncryptionException.java similarity index 74% rename from src/main/java/com/example/parking/util/cipher/EncryptionException.java rename to domain/src/main/java/com/parkingcomestrue/common/util/cipher/EncryptionException.java index fa1e644a..74b4d5f2 100644 --- a/src/main/java/com/example/parking/util/cipher/EncryptionException.java +++ b/domain/src/main/java/com/parkingcomestrue/common/util/cipher/EncryptionException.java @@ -1,4 +1,4 @@ -package com.example.parking.util.cipher; +package com.parkingcomestrue.common.util.cipher; public class EncryptionException extends RuntimeException { diff --git a/src/main/java/com/example/parking/util/cipher/SHA256.java b/domain/src/main/java/com/parkingcomestrue/common/util/cipher/SHA256.java similarity index 68% rename from src/main/java/com/example/parking/util/cipher/SHA256.java rename to domain/src/main/java/com/parkingcomestrue/common/util/cipher/SHA256.java index 616d6b52..d12928f1 100644 --- a/src/main/java/com/example/parking/util/cipher/SHA256.java +++ b/domain/src/main/java/com/parkingcomestrue/common/util/cipher/SHA256.java @@ -1,7 +1,7 @@ -package com.example.parking.util.cipher; +package com.parkingcomestrue.common.util.cipher; -import com.example.parking.support.exception.DomainException; -import com.example.parking.support.exception.ExceptionInformation; +import com.parkingcomestrue.common.support.exception.DomainException; +import com.parkingcomestrue.common.support.exception.DomainExceptionInformation; import java.security.MessageDigest; public class SHA256 { @@ -14,7 +14,7 @@ public static String encrypt(String plainText) { md.update(plainText.getBytes()); return bytesToHex(md.digest()); } catch (Exception e) { - throw new DomainException(ExceptionInformation.ENCRYPT_EXCEPTION); + throw new DomainException(DomainExceptionInformation.ENCRYPT_EXCEPTION); } } diff --git a/domain/src/main/resources/application.yml b/domain/src/main/resources/application.yml new file mode 100644 index 00000000..60437cf6 --- /dev/null +++ b/domain/src/main/resources/application.yml @@ -0,0 +1,8 @@ +spring: + flyway: + enabled: true + url: ${DB_URL} + user: ${DB_USERNAME} + password: ${DB_PASSWORD} + baseline-on-migrate: true + locations: classpath:db.migration.mysql diff --git a/domain/src/main/resources/db/migration/mysql/V1.0.0__initial_schema.sql b/domain/src/main/resources/db/migration/mysql/V1.0.0__initial_schema.sql new file mode 100644 index 00000000..870e0876 --- /dev/null +++ b/domain/src/main/resources/db/migration/mysql/V1.0.0__initial_schema.sql @@ -0,0 +1,94 @@ +-- favorite 테이블 생성 +CREATE TABLE favorite +( + id BIGINT NOT NULL AUTO_INCREMENT, + created_at TIMESTAMP, + updated_at TIMESTAMP, + member_id BIGINT, + parking_id BIGINT, + PRIMARY KEY (id), + UNIQUE (member_id, parking_id) +); + +-- member 테이블 생성 +CREATE TABLE member +( + id BIGINT NOT NULL AUTO_INCREMENT, + deleted BOOLEAN, + email VARCHAR(255) UNIQUE, + name VARCHAR(255), + nickname VARCHAR(255), + password VARCHAR(255), + PRIMARY KEY (id) +); + +-- member_session 테이블 생성 +CREATE TABLE member_session +( + session_id VARCHAR(255) NOT NULL, + created_at TIMESTAMP, + expired_at TIMESTAMP, + member_id BIGINT, + PRIMARY KEY (session_id) +); + +-- parking 테이블 생성 +CREATE TABLE parking +( + id BIGINT NOT NULL AUTO_INCREMENT, + created_at TIMESTAMP, + updated_at TIMESTAMP, + base_fee INTEGER, + base_time_unit INTEGER, + capacity INTEGER, + current_parking INTEGER, + day_maximum_fee INTEGER, + extra_fee INTEGER, + extra_time_unit INTEGER, + holiday_begin_time TIME, + holiday_end_time TIME, + holiday_free_begin_time TIME, + holiday_free_end_time TIME, + latitude FLOAT NOT NULL, + longitude FLOAT NOT NULL, + saturday_begin_time TIME, + saturday_end_time TIME, + saturday_free_begin_time TIME, + saturday_free_end_time TIME, + weekday_begin_time TIME, + weekday_end_time TIME, + weekday_free_begin_time TIME, + weekday_free_end_time TIME, + address VARCHAR(255), + description VARCHAR(255), + name VARCHAR(255), + operation_type ENUM ('PUBLIC', 'PRIVATE', 'NO_INFO'), + parking_type ENUM ('OFF_STREET', 'ON_STREET', 'MECHANICAL', 'NO_INFO'), + tel VARCHAR(255), + PRIMARY KEY (id) +); + +-- review 테이블 생성 +CREATE TABLE review +( + id BIGINT NOT NULL AUTO_INCREMENT, + created_at TIMESTAMP, + parking_id BIGINT, + reviewer_id BIGINT, + contents VARCHAR(255), + PRIMARY KEY (id) +); + +-- search_condition 테이블 생성 +CREATE TABLE search_condition +( + id BIGINT NOT NULL AUTO_INCREMENT, + hours INTEGER NOT NULL, + member_id BIGINT, + fee_types VARCHAR(255), + operation_types VARCHAR(255), + parking_types VARCHAR(255), + pay_types VARCHAR(255), + priority ENUM ('DISTANCE', 'PRICE', 'RECOMMENDATION'), + PRIMARY KEY (id) +); diff --git a/src/main/resources/db/migration/mysql/V2.0.0__add_point_parking_table.sql b/domain/src/main/resources/db/migration/mysql/V2.0.0__add_point_parking_table.sql similarity index 100% rename from src/main/resources/db/migration/mysql/V2.0.0__add_point_parking_table.sql rename to domain/src/main/resources/db/migration/mysql/V2.0.0__add_point_parking_table.sql diff --git a/src/main/resources/db/migration/mysql/V3.0.0__drop_column_parking_table.sql b/domain/src/main/resources/db/migration/mysql/V3.0.0__drop_column_parking_table.sql similarity index 100% rename from src/main/resources/db/migration/mysql/V3.0.0__drop_column_parking_table.sql rename to domain/src/main/resources/db/migration/mysql/V3.0.0__drop_column_parking_table.sql diff --git a/src/main/resources/db/migration/mysql/V4.0.0__drop_column_member_table.sql b/domain/src/main/resources/db/migration/mysql/V4.0.0__drop_column_member_table.sql similarity index 100% rename from src/main/resources/db/migration/mysql/V4.0.0__drop_column_member_table.sql rename to domain/src/main/resources/db/migration/mysql/V4.0.0__drop_column_member_table.sql diff --git a/domain/src/test/java/com/parkingcomestrue/TestConfiguration.java b/domain/src/test/java/com/parkingcomestrue/TestConfiguration.java new file mode 100644 index 00000000..5ad74c17 --- /dev/null +++ b/domain/src/test/java/com/parkingcomestrue/TestConfiguration.java @@ -0,0 +1,8 @@ +package com.parkingcomestrue; + +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +class TestConfiguration { + +} diff --git a/src/test/java/com/example/parking/domain/favorite/FavoriteRepositoryTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/favorite/repository/FavoriteRepositoryTest.java similarity index 86% rename from src/test/java/com/example/parking/domain/favorite/FavoriteRepositoryTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/favorite/repository/FavoriteRepositoryTest.java index ed6e7292..c9068814 100644 --- a/src/test/java/com/example/parking/domain/favorite/FavoriteRepositoryTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/favorite/repository/FavoriteRepositoryTest.java @@ -1,8 +1,10 @@ -package com.example.parking.domain.favorite; +package com.parkingcomestrue.common.domain.favorite.repository; import static org.assertj.core.api.Assertions.assertThat; -import com.example.parking.support.Association; +import com.parkingcomestrue.common.domain.favorite.Favorite; +import com.parkingcomestrue.common.domain.favorite.repository.FavoriteRepository; +import com.parkingcomestrue.common.support.Association; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; diff --git a/src/test/java/com/example/parking/domain/member/MemberTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/member/MemberTest.java similarity index 85% rename from src/test/java/com/example/parking/domain/member/MemberTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/member/MemberTest.java index ce8807cb..2dbec5f7 100644 --- a/src/test/java/com/example/parking/domain/member/MemberTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/member/MemberTest.java @@ -1,8 +1,10 @@ -package com.example.parking.domain.member; +package com.parkingcomestrue.common.domain.member; -import static com.example.parking.support.exception.ExceptionInformation.INVALID_PASSWORD; +import static com.parkingcomestrue.common.support.exception.DomainExceptionInformation.INVALID_PASSWORD; -import com.example.parking.support.exception.DomainException; +import com.parkingcomestrue.common.domain.member.Member; +import com.parkingcomestrue.common.domain.member.Password; +import com.parkingcomestrue.common.support.exception.DomainException; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/example/parking/domain/parking/BaseInformationTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/BaseInformationTest.java similarity index 68% rename from src/test/java/com/example/parking/domain/parking/BaseInformationTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/parking/BaseInformationTest.java index ef2bddb1..ac00ab36 100644 --- a/src/test/java/com/example/parking/domain/parking/BaseInformationTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/BaseInformationTest.java @@ -1,5 +1,7 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; +import com.parkingcomestrue.common.domain.parking.PayType; +import com.parkingcomestrue.common.domain.parking.PayTypes; import java.util.List; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/example/parking/domain/parking/DayTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/DayTest.java similarity index 93% rename from src/test/java/com/example/parking/domain/parking/DayTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/parking/DayTest.java index 427e636a..1e5243f0 100644 --- a/src/test/java/com/example/parking/domain/parking/DayTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/DayTest.java @@ -1,13 +1,13 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; +import com.parkingcomestrue.common.domain.parking.Day; +import java.time.DayOfWeek; +import java.util.stream.Stream; import org.assertj.core.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.time.DayOfWeek; -import java.util.stream.Stream; - class DayTest { @ParameterizedTest diff --git a/src/test/java/com/example/parking/domain/parking/FeePolicyTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/FeePolicyTest.java similarity index 93% rename from src/test/java/com/example/parking/domain/parking/FeePolicyTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/parking/FeePolicyTest.java index 398cb0fc..0cd738a5 100644 --- a/src/test/java/com/example/parking/domain/parking/FeePolicyTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/FeePolicyTest.java @@ -1,12 +1,14 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; +import com.parkingcomestrue.common.domain.parking.Fee; +import com.parkingcomestrue.common.domain.parking.FeePolicy; +import com.parkingcomestrue.common.domain.parking.TimeUnit; +import java.util.stream.Stream; import org.assertj.core.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.util.stream.Stream; - class FeePolicyTest { @ParameterizedTest diff --git a/src/test/java/com/example/parking/domain/parking/FeeTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/FeeTest.java similarity index 87% rename from src/test/java/com/example/parking/domain/parking/FeeTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/parking/FeeTest.java index c287dd76..d209a2d0 100644 --- a/src/test/java/com/example/parking/domain/parking/FeeTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/FeeTest.java @@ -1,5 +1,6 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; +import com.parkingcomestrue.common.domain.parking.Fee; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/example/parking/domain/parking/FreeOperatingTimeTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/FreeOperatingTimeTest.java similarity index 96% rename from src/test/java/com/example/parking/domain/parking/FreeOperatingTimeTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/parking/FreeOperatingTimeTest.java index 6cf7cd3e..6d34ed68 100644 --- a/src/test/java/com/example/parking/domain/parking/FreeOperatingTimeTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/FreeOperatingTimeTest.java @@ -1,13 +1,16 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; +import com.parkingcomestrue.common.domain.parking.Day; +import com.parkingcomestrue.common.domain.parking.DayParking; +import com.parkingcomestrue.common.domain.parking.FreeOperatingTime; +import com.parkingcomestrue.common.domain.parking.TimeInfo; +import java.time.LocalTime; +import java.util.stream.Stream; import org.assertj.core.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.time.LocalTime; -import java.util.stream.Stream; - class FreeOperatingTimeTest { @ParameterizedTest diff --git a/src/test/java/com/example/parking/domain/parking/LocationTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/LocationTest.java similarity index 91% rename from src/test/java/com/example/parking/domain/parking/LocationTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/parking/LocationTest.java index 11811709..0bd85672 100644 --- a/src/test/java/com/example/parking/domain/parking/LocationTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/LocationTest.java @@ -1,8 +1,9 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertAll; +import com.parkingcomestrue.common.domain.parking.Location; import org.junit.jupiter.api.DisplayNameGeneration; import org.junit.jupiter.api.DisplayNameGenerator; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/example/parking/domain/parking/ParkingFeeCalculatorTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/ParkingFeeCalculatorTest.java similarity index 92% rename from src/test/java/com/example/parking/domain/parking/ParkingFeeCalculatorTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/parking/ParkingFeeCalculatorTest.java index b0850b79..d0cd9544 100644 --- a/src/test/java/com/example/parking/domain/parking/ParkingFeeCalculatorTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/ParkingFeeCalculatorTest.java @@ -1,14 +1,24 @@ -package com.example.parking.domain.parking; - +package com.parkingcomestrue.common.domain.parking; + +import com.parkingcomestrue.common.domain.parking.BaseInformation; +import com.parkingcomestrue.common.domain.parking.Fee; +import com.parkingcomestrue.common.domain.parking.FeePolicy; +import com.parkingcomestrue.common.domain.parking.FreeOperatingTime; +import com.parkingcomestrue.common.domain.parking.Location; +import com.parkingcomestrue.common.domain.parking.OperatingTime; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.parking.ParkingFeeCalculator; +import com.parkingcomestrue.common.domain.parking.Space; +import com.parkingcomestrue.common.domain.parking.TimeInfo; +import com.parkingcomestrue.common.domain.parking.TimeUnit; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.stream.Stream; import org.assertj.core.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.util.stream.Stream; - class ParkingFeeCalculatorTest { private final ParkingFeeCalculator parkingFeeCalculator = new ParkingFeeCalculator(); @@ -54,8 +64,8 @@ static Stream getParkingFeeCalculator() { new Space(), new FreeOperatingTime( new TimeInfo( - LocalTime.of(9,0), - LocalTime.of(12,0) + LocalTime.of(9, 0), + LocalTime.of(12, 0) ), TimeInfo.ALL_DAY, TimeInfo.ALL_DAY @@ -102,8 +112,8 @@ static Stream getParkingFeeCalculator() { new Space(), new FreeOperatingTime( new TimeInfo( - LocalTime.of(9,0), - LocalTime.of(12,0) + LocalTime.of(9, 0), + LocalTime.of(12, 0) ), TimeInfo.ALL_DAY, TimeInfo.ALL_DAY @@ -150,8 +160,8 @@ static Stream getParkingFeeCalculator() { new Space(), new FreeOperatingTime( new TimeInfo( - LocalTime.of(9,0), - LocalTime.of(12,0) + LocalTime.of(9, 0), + LocalTime.of(12, 0) ), TimeInfo.ALL_DAY, TimeInfo.ALL_DAY @@ -201,8 +211,8 @@ static Stream getParkingFeeCalculator() { new Space(), new FreeOperatingTime( new TimeInfo( - LocalTime.of(9,0), - LocalTime.of(12,0) + LocalTime.of(9, 0), + LocalTime.of(12, 0) ), TimeInfo.ALL_DAY, TimeInfo.ALL_DAY @@ -252,11 +262,11 @@ static Stream getParkingFeeCalculator() { new Space(), new FreeOperatingTime( new TimeInfo( - LocalTime.of(9,0), - LocalTime.of(12,0) + LocalTime.of(9, 0), + LocalTime.of(12, 0) ), new TimeInfo( - LocalTime.of(6,0), + LocalTime.of(6, 0), LocalTime.MAX ), TimeInfo.ALL_DAY @@ -309,12 +319,12 @@ static Stream getParkingFeeCalculator() { new Space(), new FreeOperatingTime( new TimeInfo( - LocalTime.of(9,0), - LocalTime.of(12,0) + LocalTime.of(9, 0), + LocalTime.of(12, 0) ), TimeInfo.ALL_DAY, new TimeInfo( - LocalTime.of(4,0), + LocalTime.of(4, 0), LocalTime.MAX ) ), @@ -368,12 +378,12 @@ static Stream getParkingFeeCalculator() { new Space(), new FreeOperatingTime( new TimeInfo( - LocalTime.of(9,0), - LocalTime.of(12,0) + LocalTime.of(9, 0), + LocalTime.of(12, 0) ), TimeInfo.ALL_DAY, new TimeInfo( - LocalTime.of(4,0), + LocalTime.of(4, 0), LocalTime.MAX ) ), diff --git a/src/test/java/com/example/parking/domain/parking/ParkingTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/ParkingTest.java similarity index 93% rename from src/test/java/com/example/parking/domain/parking/ParkingTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/parking/ParkingTest.java index 4b33b123..4e86762d 100644 --- a/src/test/java/com/example/parking/domain/parking/ParkingTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/ParkingTest.java @@ -1,5 +1,14 @@ -package com.example.parking.domain.parking; - +package com.parkingcomestrue.common.domain.parking; + +import com.parkingcomestrue.common.domain.parking.BaseInformation; +import com.parkingcomestrue.common.domain.parking.Fee; +import com.parkingcomestrue.common.domain.parking.FeePolicy; +import com.parkingcomestrue.common.domain.parking.FreeOperatingTime; +import com.parkingcomestrue.common.domain.parking.Location; +import com.parkingcomestrue.common.domain.parking.OperatingTime; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.parking.Space; +import com.parkingcomestrue.common.domain.parking.TimeUnit; import java.util.stream.Stream; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/example/parking/domain/parking/PayTypesTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/PayTypesTest.java similarity index 81% rename from src/test/java/com/example/parking/domain/parking/PayTypesTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/parking/PayTypesTest.java index d668fa87..a7522149 100644 --- a/src/test/java/com/example/parking/domain/parking/PayTypesTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/PayTypesTest.java @@ -1,12 +1,14 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; -import static com.example.parking.domain.parking.PayType.BANK_TRANSFER; -import static com.example.parking.domain.parking.PayType.CARD; -import static com.example.parking.domain.parking.PayType.CASH; -import static com.example.parking.domain.parking.PayType.NO_INFO; +import static com.parkingcomestrue.common.domain.parking.PayType.BANK_TRANSFER; +import static com.parkingcomestrue.common.domain.parking.PayType.CARD; +import static com.parkingcomestrue.common.domain.parking.PayType.CASH; +import static com.parkingcomestrue.common.domain.parking.PayType.NO_INFO; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.params.provider.Arguments.arguments; +import com.parkingcomestrue.common.domain.parking.PayType; +import com.parkingcomestrue.common.domain.parking.PayTypes; import java.util.Collection; import java.util.List; import java.util.Set; diff --git a/src/test/java/com/example/parking/domain/parking/TimeInfoTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/TimeInfoTest.java similarity index 98% rename from src/test/java/com/example/parking/domain/parking/TimeInfoTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/parking/TimeInfoTest.java index 1bddde9e..ffaefbe0 100644 --- a/src/test/java/com/example/parking/domain/parking/TimeInfoTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/TimeInfoTest.java @@ -1,13 +1,13 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; +import com.parkingcomestrue.common.domain.parking.TimeInfo; +import java.time.LocalTime; +import java.util.stream.Stream; import org.assertj.core.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.time.LocalTime; -import java.util.stream.Stream; - class TimeInfoTest { @ParameterizedTest diff --git a/src/test/java/com/example/parking/domain/parking/TimeUnitTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/TimeUnitTest.java similarity index 89% rename from src/test/java/com/example/parking/domain/parking/TimeUnitTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/parking/TimeUnitTest.java index f32c64f1..f6a22cfa 100644 --- a/src/test/java/com/example/parking/domain/parking/TimeUnitTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/TimeUnitTest.java @@ -1,5 +1,6 @@ -package com.example.parking.domain.parking; +package com.parkingcomestrue.common.domain.parking; +import com.parkingcomestrue.common.domain.parking.TimeUnit; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; diff --git a/src/test/java/com/example/parking/application/parking/ParkingFilteringServiceTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/service/ParkingFilteringServiceTest.java similarity index 85% rename from src/test/java/com/example/parking/application/parking/ParkingFilteringServiceTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/parking/service/ParkingFilteringServiceTest.java index 36b74bcd..91857ef5 100644 --- a/src/test/java/com/example/parking/application/parking/ParkingFilteringServiceTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/parking/service/ParkingFilteringServiceTest.java @@ -1,20 +1,21 @@ -package com.example.parking.application.parking; +package com.parkingcomestrue.common.domain.parking.service; import static org.assertj.core.api.Assertions.assertThat; -import com.example.parking.domain.parking.BaseInformation; -import com.example.parking.domain.parking.Fee; -import com.example.parking.domain.parking.FeePolicy; -import com.example.parking.domain.parking.FreeOperatingTime; -import com.example.parking.domain.parking.OperationType; -import com.example.parking.domain.parking.Parking; -import com.example.parking.domain.parking.ParkingFeeCalculator; -import com.example.parking.domain.parking.ParkingType; -import com.example.parking.domain.parking.PayType; -import com.example.parking.domain.parking.PayTypes; -import com.example.parking.domain.parking.SearchingCondition; -import com.example.parking.domain.parking.TimeUnit; -import com.example.parking.domain.searchcondition.FeeType; +import com.parkingcomestrue.common.domain.parking.BaseInformation; +import com.parkingcomestrue.common.domain.parking.Fee; +import com.parkingcomestrue.common.domain.parking.FeePolicy; +import com.parkingcomestrue.common.domain.parking.FreeOperatingTime; +import com.parkingcomestrue.common.domain.parking.OperationType; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.parking.ParkingFeeCalculator; +import com.parkingcomestrue.common.domain.parking.ParkingType; +import com.parkingcomestrue.common.domain.parking.PayType; +import com.parkingcomestrue.common.domain.parking.PayTypes; +import com.parkingcomestrue.common.domain.parking.SearchingCondition; +import com.parkingcomestrue.common.domain.parking.TimeUnit; +import com.parkingcomestrue.common.domain.parking.service.ParkingFilteringService; +import com.parkingcomestrue.common.domain.searchcondition.FeeType; import java.time.LocalDateTime; import java.util.List; import org.assertj.core.api.Assertions; @@ -158,6 +159,5 @@ class ParkingFilteringServiceTest { // then Assertions.assertThat(filteredParkings).hasSize(2); - } } diff --git a/src/test/java/com/example/parking/domain/review/ContentTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/review/ContentTest.java similarity index 81% rename from src/test/java/com/example/parking/domain/review/ContentTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/review/ContentTest.java index dc6f3859..974fae28 100644 --- a/src/test/java/com/example/parking/domain/review/ContentTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/review/ContentTest.java @@ -1,11 +1,12 @@ -package com.example.parking.domain.review; +package com.parkingcomestrue.common.domain.review; -import static com.example.parking.support.exception.ExceptionInformation.INVALID_CONTENT; +import static com.parkingcomestrue.common.support.exception.DomainExceptionInformation.INVALID_CONTENT; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.params.provider.Arguments.arguments; -import com.example.parking.support.exception.DomainException; +import com.parkingcomestrue.common.domain.review.Content; +import com.parkingcomestrue.common.support.exception.DomainException; import java.util.stream.Stream; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; diff --git a/src/test/java/com/example/parking/domain/review/service/ReviewDomainServiceTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/review/service/ReviewDomainServiceTest.java similarity index 82% rename from src/test/java/com/example/parking/domain/review/service/ReviewDomainServiceTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/review/service/ReviewDomainServiceTest.java index a28c9530..6dcb9369 100644 --- a/src/test/java/com/example/parking/domain/review/service/ReviewDomainServiceTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/review/service/ReviewDomainServiceTest.java @@ -1,20 +1,21 @@ -package com.example.parking.domain.review.service; +package com.parkingcomestrue.common.domain.review.service; -import static com.example.parking.support.exception.ExceptionInformation.DUPLICATE_REVIEW; +import static com.parkingcomestrue.common.support.exception.DomainExceptionInformation.DUPLICATE_REVIEW; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.SoftAssertions.assertSoftly; -import com.example.parking.support.Association; -import com.example.parking.domain.member.Member; -import com.example.parking.domain.parking.Parking; -import com.example.parking.domain.review.Content; -import com.example.parking.domain.review.Review; -import com.example.parking.fake.BasicReviewRepository; -import com.example.parking.support.exception.DomainException; +import com.parkingcomestrue.common.domain.member.Member; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.review.Content; +import com.parkingcomestrue.common.domain.review.Review; +import com.parkingcomestrue.common.domain.review.service.ReviewDomainService; +import com.parkingcomestrue.common.support.Association; +import com.parkingcomestrue.common.support.exception.DomainException; import java.util.List; import java.util.Map; import org.junit.jupiter.api.Test; +import repository.BasicReviewRepository; class ReviewDomainServiceTest { diff --git a/src/test/java/com/example/parking/domain/searchcondition/HoursTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/searchcondition/HoursTest.java similarity index 72% rename from src/test/java/com/example/parking/domain/searchcondition/HoursTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/searchcondition/HoursTest.java index 9aa777cc..2544a5d1 100644 --- a/src/test/java/com/example/parking/domain/searchcondition/HoursTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/searchcondition/HoursTest.java @@ -1,9 +1,10 @@ -package com.example.parking.domain.searchcondition; +package com.parkingcomestrue.common.domain.searchcondition; -import static com.example.parking.support.exception.ExceptionInformation.INVALID_HOURS; +import static com.parkingcomestrue.common.support.exception.DomainExceptionInformation.INVALID_HOURS; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import com.example.parking.support.exception.DomainException; +import com.parkingcomestrue.common.domain.searchcondition.Hours; +import com.parkingcomestrue.common.support.exception.DomainException; import org.assertj.core.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; diff --git a/src/test/java/com/example/parking/auth/MemberSessionRepositoryTest.java b/domain/src/test/java/com/parkingcomestrue/common/domain/session/repository/MemberSessionRepositoryTest.java similarity index 88% rename from src/test/java/com/example/parking/auth/MemberSessionRepositoryTest.java rename to domain/src/test/java/com/parkingcomestrue/common/domain/session/repository/MemberSessionRepositoryTest.java index cbc66091..0f05710d 100644 --- a/src/test/java/com/example/parking/auth/MemberSessionRepositoryTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/domain/session/repository/MemberSessionRepositoryTest.java @@ -1,9 +1,9 @@ -package com.example.parking.auth; +package com.parkingcomestrue.common.domain.session.repository; import static org.assertj.core.api.Assertions.assertThat; -import com.example.parking.auth.session.MemberSession; -import com.example.parking.auth.session.MemberSessionRepository; +import com.parkingcomestrue.common.domain.session.MemberSession; +import com.parkingcomestrue.common.domain.session.repository.MemberSessionRepository; import java.time.LocalDateTime; import java.util.UUID; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/example/parking/domain/searchcondition/EnumListConverterTest.java b/domain/src/test/java/com/parkingcomestrue/common/infra/converter/EnumListConverterTest.java similarity index 78% rename from src/test/java/com/example/parking/domain/searchcondition/EnumListConverterTest.java rename to domain/src/test/java/com/parkingcomestrue/common/infra/converter/EnumListConverterTest.java index a8b8081f..58f5ec86 100644 --- a/src/test/java/com/example/parking/domain/searchcondition/EnumListConverterTest.java +++ b/domain/src/test/java/com/parkingcomestrue/common/infra/converter/EnumListConverterTest.java @@ -1,8 +1,9 @@ -package com.example.parking.domain.searchcondition; +package com.parkingcomestrue.common.infra.converter; import static org.assertj.core.api.Assertions.assertThat; -import com.example.parking.infra.converter.FeeTypeConverter; +import com.parkingcomestrue.common.domain.searchcondition.FeeType; +import com.parkingcomestrue.common.infra.converter.FeeTypeConverter; import java.util.List; import java.util.stream.Collectors; import org.junit.jupiter.api.DisplayName; @@ -10,7 +11,7 @@ class EnumListConverterTest { - @DisplayName("DB에 Enum을 List형식으로 저장할 때, Enum의 값 이름과 " + '"' + ", " + '"'+ " 구분자를 이용해서 저장된다.") + @DisplayName("DB에 Enum을 List형식으로 저장할 때, Enum의 값 이름과 " + '"' + ", " + '"' + " 구분자를 이용해서 저장된다.") @Test void convertTest() { //given diff --git a/domain/src/test/resources/application.yml b/domain/src/test/resources/application.yml new file mode 100644 index 00000000..7fa6b598 --- /dev/null +++ b/domain/src/test/resources/application.yml @@ -0,0 +1,3 @@ +spring: + flyway: + enabled: false diff --git a/src/test/java/com/example/parking/fake/BasicMemberRepository.java b/domain/src/testFixtures/java/repository/BasicMemberRepository.java similarity index 87% rename from src/test/java/com/example/parking/fake/BasicMemberRepository.java rename to domain/src/testFixtures/java/repository/BasicMemberRepository.java index b3e35ca5..ec75a8f9 100644 --- a/src/test/java/com/example/parking/fake/BasicMemberRepository.java +++ b/domain/src/testFixtures/java/repository/BasicMemberRepository.java @@ -1,8 +1,8 @@ -package com.example.parking.fake; +package repository; -import com.example.parking.domain.member.Member; -import com.example.parking.domain.member.MemberRepository; -import com.example.parking.domain.member.Password; +import com.parkingcomestrue.common.domain.member.Member; +import com.parkingcomestrue.common.domain.member.Password; +import com.parkingcomestrue.common.domain.member.repository.MemberRepository; import java.util.HashMap; import java.util.LinkedList; import java.util.List; diff --git a/src/test/java/com/example/parking/fake/BasicParkingRepository.java b/domain/src/testFixtures/java/repository/BasicParkingRepository.java similarity index 73% rename from src/test/java/com/example/parking/fake/BasicParkingRepository.java rename to domain/src/testFixtures/java/repository/BasicParkingRepository.java index eb44f02a..f4b0dd52 100644 --- a/src/test/java/com/example/parking/fake/BasicParkingRepository.java +++ b/domain/src/testFixtures/java/repository/BasicParkingRepository.java @@ -1,18 +1,18 @@ -package com.example.parking.fake; +package repository; -import com.example.parking.domain.parking.BaseInformation; -import com.example.parking.domain.parking.Fee; -import com.example.parking.domain.parking.FeePolicy; -import com.example.parking.domain.parking.FreeOperatingTime; -import com.example.parking.domain.parking.Location; -import com.example.parking.domain.parking.OperatingTime; -import com.example.parking.domain.parking.OperationType; -import com.example.parking.domain.parking.Parking; -import com.example.parking.domain.parking.ParkingType; -import com.example.parking.domain.parking.PayTypes; -import com.example.parking.domain.parking.Space; -import com.example.parking.domain.parking.TimeUnit; -import com.example.parking.domain.parking.repository.ParkingRepository; +import com.parkingcomestrue.common.domain.parking.BaseInformation; +import com.parkingcomestrue.common.domain.parking.Fee; +import com.parkingcomestrue.common.domain.parking.FeePolicy; +import com.parkingcomestrue.common.domain.parking.FreeOperatingTime; +import com.parkingcomestrue.common.domain.parking.Location; +import com.parkingcomestrue.common.domain.parking.OperatingTime; +import com.parkingcomestrue.common.domain.parking.OperationType; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.domain.parking.ParkingType; +import com.parkingcomestrue.common.domain.parking.PayTypes; +import com.parkingcomestrue.common.domain.parking.Space; +import com.parkingcomestrue.common.domain.parking.TimeUnit; +import com.parkingcomestrue.common.domain.parking.repository.ParkingRepository; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; diff --git a/src/test/java/com/example/parking/fake/BasicRepository.java b/domain/src/testFixtures/java/repository/BasicRepository.java similarity index 91% rename from src/test/java/com/example/parking/fake/BasicRepository.java rename to domain/src/testFixtures/java/repository/BasicRepository.java index 60c21899..6e99a9a7 100644 --- a/src/test/java/com/example/parking/fake/BasicRepository.java +++ b/domain/src/testFixtures/java/repository/BasicRepository.java @@ -1,4 +1,4 @@ -package com.example.parking.fake; +package repository; import java.lang.reflect.Field; diff --git a/src/test/java/com/example/parking/fake/BasicReviewRepository.java b/domain/src/testFixtures/java/repository/BasicReviewRepository.java similarity index 84% rename from src/test/java/com/example/parking/fake/BasicReviewRepository.java rename to domain/src/testFixtures/java/repository/BasicReviewRepository.java index 1f499e87..a16ac3d4 100644 --- a/src/test/java/com/example/parking/fake/BasicReviewRepository.java +++ b/domain/src/testFixtures/java/repository/BasicReviewRepository.java @@ -1,8 +1,8 @@ -package com.example.parking.fake; +package repository; -import com.example.parking.support.Association; -import com.example.parking.domain.review.Review; -import com.example.parking.domain.review.ReviewRepository; +import com.parkingcomestrue.common.domain.review.Review; +import com.parkingcomestrue.common.domain.review.repository.ReviewRepository; +import com.parkingcomestrue.common.support.Association; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/src/test/java/com/example/parking/fake/FakeFavoriteRepository.java b/domain/src/testFixtures/java/repository/FakeFavoriteRepository.java similarity index 56% rename from src/test/java/com/example/parking/fake/FakeFavoriteRepository.java rename to domain/src/testFixtures/java/repository/FakeFavoriteRepository.java index 263edab0..f35aee23 100644 --- a/src/test/java/com/example/parking/fake/FakeFavoriteRepository.java +++ b/domain/src/testFixtures/java/repository/FakeFavoriteRepository.java @@ -1,10 +1,10 @@ -package com.example.parking.fake; +package repository; -import com.example.parking.domain.favorite.Favorite; -import com.example.parking.domain.favorite.FavoriteRepository; -import com.example.parking.domain.member.Member; -import com.example.parking.domain.parking.Parking; -import com.example.parking.support.Association; +import com.parkingcomestrue.common.domain.favorite.Favorite; +import com.parkingcomestrue.common.domain.favorite.repository.FavoriteRepository; +import com.parkingcomestrue.common.domain.member.Member; +import com.parkingcomestrue.common.domain.parking.Parking; +import com.parkingcomestrue.common.support.Association; import java.util.List; public class FakeFavoriteRepository implements FavoriteRepository { diff --git a/src/test/java/com/example/parking/fake/FakeSearchConditionRepository.java b/domain/src/testFixtures/java/repository/FakeSearchConditionRepository.java similarity index 61% rename from src/test/java/com/example/parking/fake/FakeSearchConditionRepository.java rename to domain/src/testFixtures/java/repository/FakeSearchConditionRepository.java index df13129e..49ba4552 100644 --- a/src/test/java/com/example/parking/fake/FakeSearchConditionRepository.java +++ b/domain/src/testFixtures/java/repository/FakeSearchConditionRepository.java @@ -1,10 +1,11 @@ -package com.example.parking.fake; +package repository; -import com.example.parking.domain.searchcondition.SearchCondition; -import com.example.parking.domain.searchcondition.SearchConditionRepository; +import com.parkingcomestrue.common.domain.searchcondition.SearchCondition; +import com.parkingcomestrue.common.domain.searchcondition.repository.SearchConditionRepository; import java.util.Optional; public class FakeSearchConditionRepository implements SearchConditionRepository { + @Override public Optional findByMemberId(Long memberId) { return Optional.empty(); diff --git a/settings.gradle b/settings.gradle index 8cb3c6ea..28f6a7d6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,4 @@ rootProject.name = 'parking' +include 'domain' +include 'app-api' +include 'app-scheduler' diff --git a/src/main/java/com/example/parking/config/ApiRestTemplateConfig.java b/src/main/java/com/example/parking/config/ApiRestTemplateConfig.java deleted file mode 100644 index 9759b232..00000000 --- a/src/main/java/com/example/parking/config/ApiRestTemplateConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.example.parking.config; - -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.web.client.RestTemplate; - -@Configuration -public class ApiRestTemplateConfig { - - @Bean - @Qualifier("parkingApiRestTemplate") - public RestTemplate parkingApiRestTemplate(RestTemplateBuilder restTemplateBuilder) { - return restTemplateBuilder - .errorHandler(new ParkingApiErrorHandler()) - .defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE) - .build(); - } -} diff --git a/src/main/java/com/example/parking/domain/member/MemberId.java b/src/main/java/com/example/parking/domain/member/MemberId.java deleted file mode 100644 index d3ac6b0b..00000000 --- a/src/main/java/com/example/parking/domain/member/MemberId.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.example.parking.domain.member; - -import jakarta.persistence.Embeddable; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Embeddable -@NoArgsConstructor -@Getter -public class MemberId { - - private Long memberId; - - public MemberId(Long memberId) { - this.memberId = memberId; - } -} diff --git a/src/main/java/com/example/parking/domain/parking/dto/ParkingQueryCondition.java b/src/main/java/com/example/parking/domain/parking/dto/ParkingQueryCondition.java deleted file mode 100644 index 3e40c896..00000000 --- a/src/main/java/com/example/parking/domain/parking/dto/ParkingQueryCondition.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.example.parking.domain.parking.dto; - -import com.example.parking.domain.parking.OperationType; -import com.example.parking.domain.parking.ParkingType; -import com.example.parking.domain.parking.PayTypes; -import lombok.Getter; - -@Getter -public class ParkingQueryCondition { - - private OperationType operationType; - private ParkingType parkingType; - private Boolean cardEnabled; - private PayTypes payTypes; - - public ParkingQueryCondition(OperationType operationType, ParkingType parkingType, Boolean cardEnabled, - PayTypes payTypes) { - this.operationType = operationType; - this.parkingType = parkingType; - this.cardEnabled = cardEnabled; - this.payTypes = payTypes; - } -} diff --git a/src/main/java/com/example/parking/domain/review/ReviewRepository.java b/src/main/java/com/example/parking/domain/review/ReviewRepository.java deleted file mode 100644 index 5b35b444..00000000 --- a/src/main/java/com/example/parking/domain/review/ReviewRepository.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.example.parking.domain.review; - -import com.example.parking.support.Association; -import com.example.parking.domain.member.Member; -import com.example.parking.domain.parking.Parking; -import com.example.parking.support.exception.DomainException; -import com.example.parking.support.exception.ExceptionInformation; -import java.util.List; -import java.util.Optional; -import org.springframework.data.repository.Repository; - -public interface ReviewRepository extends Repository { - - Optional findById(Long id); - - default Review getById(Long id) { - return findById(id) - .orElseThrow(() -> new DomainException(ExceptionInformation.INVALID_REVIEW)); - } - - List findAllByParkingId(Association parkingId); - - void save(Review review); - - boolean existsByParkingIdAndReviewerId(Association parkingId, Association reviewerId); -} diff --git a/src/main/java/com/example/parking/domain/searchcondition/SearchConditionRepository.java b/src/main/java/com/example/parking/domain/searchcondition/SearchConditionRepository.java deleted file mode 100644 index 5d3f3aac..00000000 --- a/src/main/java/com/example/parking/domain/searchcondition/SearchConditionRepository.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.example.parking.domain.searchcondition; - -import com.example.parking.support.exception.DomainException; -import com.example.parking.support.exception.ExceptionInformation; -import java.util.Optional; -import org.springframework.data.repository.Repository; - -public interface SearchConditionRepository extends Repository { - - Optional findByMemberId(Long memberId); - - default SearchCondition getByMemberId(Long memberId) { - return findByMemberId(memberId) - .orElseThrow(() -> new DomainException(ExceptionInformation.INVALID_SEARCH_CONDITION)); - } - - void save(SearchCondition searchCondition); -} diff --git a/src/main/java/com/example/parking/support/exception/ClientException.java b/src/main/java/com/example/parking/support/exception/ClientException.java deleted file mode 100644 index 74d4d1bd..00000000 --- a/src/main/java/com/example/parking/support/exception/ClientException.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.example.parking.support.exception; - -import lombok.Getter; - -@Getter -public class ClientException extends RuntimeException{ - - private final ExceptionInformation exceptionInformation; - - public ClientException(ExceptionInformation exceptionInformation) { - super(); - this.exceptionInformation = exceptionInformation; - } - - @Override - public String getMessage() { - return exceptionInformation.getMessage(); - } -} diff --git a/src/main/java/com/example/parking/support/exception/DomainException.java b/src/main/java/com/example/parking/support/exception/DomainException.java deleted file mode 100644 index 77e1b2ec..00000000 --- a/src/main/java/com/example/parking/support/exception/DomainException.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.example.parking.support.exception; - -public class DomainException extends RuntimeException{ - - private final ExceptionInformation exceptionInformation; - - public DomainException(ExceptionInformation exceptionInformation) { - super(); - this.exceptionInformation = exceptionInformation; - } - - @Override - public String getMessage() { - return exceptionInformation.getMessage(); - } -} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml deleted file mode 100644 index 22c29aa9..00000000 --- a/src/main/resources/application-dev.yml +++ /dev/null @@ -1,11 +0,0 @@ -spring: - # JPA - jpa: - hibernate: - ddl-auto: create - show-sql: true - properties: - hibernate: - format_sql: true - flyway: - enabled: false diff --git a/src/main/resources/db/migration/mysql/V1.0.0__initial_schema.sql b/src/main/resources/db/migration/mysql/V1.0.0__initial_schema.sql deleted file mode 100644 index dd6ec735..00000000 --- a/src/main/resources/db/migration/mysql/V1.0.0__initial_schema.sql +++ /dev/null @@ -1,88 +0,0 @@ --- favorite 테이블 생성 -CREATE TABLE favorite ( - id BIGINT NOT NULL AUTO_INCREMENT, - created_at TIMESTAMP, - updated_at TIMESTAMP, - member_id BIGINT, - parking_id BIGINT, - PRIMARY KEY (id), - UNIQUE (member_id, parking_id) -); - --- member 테이블 생성 -CREATE TABLE member ( - id BIGINT NOT NULL AUTO_INCREMENT, - deleted BOOLEAN, - email VARCHAR(255) UNIQUE, - name VARCHAR(255), - nickname VARCHAR(255), - password VARCHAR(255), - PRIMARY KEY (id) -); - --- member_session 테이블 생성 -CREATE TABLE member_session ( - session_id VARCHAR(255) NOT NULL, - created_at TIMESTAMP, - expired_at TIMESTAMP, - member_id BIGINT, - PRIMARY KEY (session_id) -); - --- parking 테이블 생성 -CREATE TABLE parking ( - id BIGINT NOT NULL AUTO_INCREMENT, - created_at TIMESTAMP, - updated_at TIMESTAMP, - base_fee INTEGER, - base_time_unit INTEGER, - capacity INTEGER, - current_parking INTEGER, - day_maximum_fee INTEGER, - extra_fee INTEGER, - extra_time_unit INTEGER, - holiday_begin_time TIME, - holiday_end_time TIME, - holiday_free_begin_time TIME, - holiday_free_end_time TIME, - latitude FLOAT NOT NULL, - longitude FLOAT NOT NULL, - saturday_begin_time TIME, - saturday_end_time TIME, - saturday_free_begin_time TIME, - saturday_free_end_time TIME, - weekday_begin_time TIME, - weekday_end_time TIME, - weekday_free_begin_time TIME, - weekday_free_end_time TIME, - address VARCHAR(255), - description VARCHAR(255), - name VARCHAR(255), - operation_type ENUM ('PUBLIC', 'PRIVATE', 'NO_INFO'), - parking_type ENUM ('OFF_STREET', 'ON_STREET', 'MECHANICAL', 'NO_INFO'), - tel VARCHAR(255), - PRIMARY KEY (id) -); - --- review 테이블 생성 -CREATE TABLE review ( - id BIGINT NOT NULL AUTO_INCREMENT, - created_at TIMESTAMP, - parking_id BIGINT, - reviewer_id BIGINT, - contents VARCHAR(255), - PRIMARY KEY (id) -); - --- search_condition 테이블 생성 -CREATE TABLE search_condition ( - id BIGINT NOT NULL AUTO_INCREMENT, - hours INTEGER NOT NULL, - member_id BIGINT, - fee_types VARCHAR(255), - operation_types VARCHAR(255), - parking_types VARCHAR(255), - pay_types VARCHAR(255), - priority ENUM ('DISTANCE', 'PRICE', 'RECOMMENDATION'), - PRIMARY KEY (id) -); diff --git a/src/test/java/com/example/parking/fake/ExceptionParkingApiService.java b/src/test/java/com/example/parking/fake/ExceptionParkingApiService.java deleted file mode 100644 index 65ba6733..00000000 --- a/src/test/java/com/example/parking/fake/ExceptionParkingApiService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.example.parking.fake; - -import com.example.parking.domain.parking.Parking; -import com.example.parking.external.parkingapi.ParkingApiService; -import com.example.parking.support.exception.ClientException; -import com.example.parking.support.exception.ExceptionInformation; -import java.util.List; - -public class ExceptionParkingApiService implements ParkingApiService { - - @Override - public boolean offerCurrentParking() { - return true; - } - - @Override - public List read() { - throw new ClientException(ExceptionInformation.INVALID_CONNECT); - } -} diff --git a/src/test/java/com/example/parking/fake/FakeCoordinateService.java b/src/test/java/com/example/parking/fake/FakeCoordinateService.java deleted file mode 100644 index 2a455a3c..00000000 --- a/src/test/java/com/example/parking/fake/FakeCoordinateService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.example.parking.fake; - -import com.example.parking.domain.parking.Location; -import com.example.parking.external.coordinate.CoordinateService; - -public class FakeCoordinateService extends CoordinateService { - - public FakeCoordinateService() { - super(null); - } - - @Override - public Location extractLocationByAddress(String address, Location location) { - return Location.of(10.0, 10.0); - } -} diff --git a/src/test/java/com/example/parking/fake/FakeParkingService.java b/src/test/java/com/example/parking/fake/FakeParkingService.java deleted file mode 100644 index 10eea1fe..00000000 --- a/src/test/java/com/example/parking/fake/FakeParkingService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.example.parking.fake; - -import com.example.parking.application.SearchConditionMapper; -import com.example.parking.application.parking.ParkingFilteringService; -import com.example.parking.application.parking.ParkingService; -import com.example.parking.application.review.ReviewService; -import com.example.parking.domain.parking.ParkingFeeCalculator; -import com.example.parking.domain.review.service.ReviewDomainService; - -public class FakeParkingService extends ParkingService { - - private final BasicParkingRepository repository; - - public FakeParkingService(BasicParkingRepository repository) { - super( - repository, - new ParkingFilteringService(new ParkingFeeCalculator()), - new FakeFavoriteRepository(), - new SearchConditionMapper(), - new ParkingFeeCalculator(), - new ReviewService( - new BasicReviewRepository(), - new ReviewDomainService(new BasicReviewRepository()) - )); - this.repository = repository; - } - - public int count() { - return repository.count(); - } -} diff --git a/src/test/java/com/example/parking/fake/FakeReviewService.java b/src/test/java/com/example/parking/fake/FakeReviewService.java deleted file mode 100644 index e7c5923c..00000000 --- a/src/test/java/com/example/parking/fake/FakeReviewService.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.example.parking.fake; - -import com.example.parking.application.review.ReviewService; -import com.example.parking.domain.review.ReviewRepository; -import com.example.parking.domain.review.service.ReviewDomainService; - -public class FakeReviewService extends ReviewService { - public FakeReviewService(ReviewRepository reviewRepository, - ReviewDomainService reviewDomainService) { - super(reviewRepository, reviewDomainService); - } -}