From b6ea57e4a1d8a84eb4f9f50fb27d006fec6b9cb0 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Fri, 10 Jan 2025 23:46:39 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=EB=A9=80=ED=8B=B0=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20=EC=83=81=EC=98=81?= =?UTF-8?q?=20=EC=A4=91=EC=9D=B8=20=EC=98=81=ED=99=94=20=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=20api=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 3 + .gitignore | 37 +++ README.md | 21 ++ build.gradle | 45 ++++ docker-compose.yml | 11 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43583 bytes gradle/wrapper/gradle-wrapper.properties | 7 + gradlew | 252 ++++++++++++++++++ gradlew.bat | 94 +++++++ img.png | Bin 0 -> 123759 bytes module-application/build.gradle | 9 + .../java/com/example/movie/MovieService.java | 29 ++ .../example/movie/convertor/DtoConvertor.java | 52 ++++ .../response/MoviesNowShowingDetail.java | 18 ++ .../movie/response/ScreeningsDetail.java | 9 + module-core/build.gradle | 12 + .../com/example/exception/BaseException.java | 20 ++ .../exception/BaseExceptionHandler.java | 68 +++++ .../example/response/BaseErrorResponse.java | 56 ++++ .../com/example/response/BaseResponse.java | 48 ++++ .../com/example/response/code/BaseCode.java | 50 ++++ .../response/status/ResponseStatus.java | 7 + module-domain/build.gradle | 8 + .../java/com/example/entity/BaseEntity.java | 35 +++ .../java/com/example/entity/movie/Genre.java | 5 + .../java/com/example/entity/movie/Grade.java | 5 + .../java/com/example/entity/movie/Movie.java | 28 ++ .../com/example/entity/movie/Screening.java | 26 ++ .../com/example/entity/movie/Theater.java | 18 ++ .../com/example/entity/reservation/Seat.java | 31 +++ .../java/com/example/entity/user/User.java | 18 ++ module-infra/build.gradle | 10 + .../com/example/movie/MovieRepository.java | 21 ++ .../movie/dto/MoviesNowShowingDbDto.java | 23 ++ .../src/main/resources/application.yml | 17 ++ module-presentation/build.gradle | 12 + .../java/com/example/RootApplication.java | 24 ++ .../com/example/movie/MovieController.java | 25 ++ settings.gradle | 7 + 39 files changed, 1161 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 README.md create mode 100644 build.gradle create mode 100644 docker-compose.yml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 img.png create mode 100644 module-application/build.gradle create mode 100644 module-application/src/main/java/com/example/movie/MovieService.java create mode 100644 module-application/src/main/java/com/example/movie/convertor/DtoConvertor.java create mode 100644 module-application/src/main/java/com/example/movie/response/MoviesNowShowingDetail.java create mode 100644 module-application/src/main/java/com/example/movie/response/ScreeningsDetail.java create mode 100644 module-core/build.gradle create mode 100644 module-core/src/main/java/com/example/exception/BaseException.java create mode 100644 module-core/src/main/java/com/example/exception/BaseExceptionHandler.java create mode 100644 module-core/src/main/java/com/example/response/BaseErrorResponse.java create mode 100644 module-core/src/main/java/com/example/response/BaseResponse.java create mode 100644 module-core/src/main/java/com/example/response/code/BaseCode.java create mode 100644 module-core/src/main/java/com/example/response/status/ResponseStatus.java create mode 100644 module-domain/build.gradle create mode 100644 module-domain/src/main/java/com/example/entity/BaseEntity.java create mode 100644 module-domain/src/main/java/com/example/entity/movie/Genre.java create mode 100644 module-domain/src/main/java/com/example/entity/movie/Grade.java create mode 100644 module-domain/src/main/java/com/example/entity/movie/Movie.java create mode 100644 module-domain/src/main/java/com/example/entity/movie/Screening.java create mode 100644 module-domain/src/main/java/com/example/entity/movie/Theater.java create mode 100644 module-domain/src/main/java/com/example/entity/reservation/Seat.java create mode 100644 module-domain/src/main/java/com/example/entity/user/User.java create mode 100644 module-infra/build.gradle create mode 100644 module-infra/src/main/java/com/example/movie/MovieRepository.java create mode 100644 module-infra/src/main/java/com/example/movie/dto/MoviesNowShowingDbDto.java create mode 100644 module-infra/src/main/resources/application.yml create mode 100644 module-presentation/build.gradle create mode 100644 module-presentation/src/main/java/com/example/RootApplication.java create mode 100644 module-presentation/src/main/java/com/example/movie/MovieController.java create mode 100644 settings.gradle diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..8af972cde --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +/gradlew text eol=lf +*.bat text eol=crlf +*.jar binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..c2065bc26 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ diff --git a/README.md b/README.md new file mode 100644 index 000000000..90147f919 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +## Multi Module Design +Module을 나누는 기준은 여러 개가 있지만, 이번 프로젝트에서는 Layered Architecture 에서 설명되는 Layer 별로 구분하였습니다. +- module-presentation: 사용자의 요청을 받고, 응답한다. +- module-application: 사용자가 요청한 기능을 처리한다. +- module-domain: 시스템이 제공할 도메인 규칙을 구현한다. +- module-infra: 데이터베이스 같은 외부 시스템과의 연동을 처리한다. +- module-core: Convertor, Error-Response 와 같이 특정 layer에 종속되지 않는 기능을 처리한다. + +각 module은 하위 module에만 의존합니다.
+JPA에서 다른 기술로 변경될 것이라고 생각하여 DIP를 적용하는 것은 오버 엔지니어링이라고 생각되어, JPA 기술에 종속되지 않는 POJO 객체들을 생성하지 않고, 도메인 계층에 infra 계층에 종속되는 코드로 구현하였습니다. (@Entity 클래스, JpaRepository 등) + +## Table Design +![img.png](img.png) +- Movie 테이블과 Theater 테이블은 N:N 관계로 중간에 Screening 테이블을 두고 있습니다. + - Theater 별로 시간표가 구분되는 것을 고려하여 Screening 테이블은 상영 시간표 정보를 포함하고 있습니다. +- 좌석별 등급 등 좌석 개별의 특성이 추가될 수 있다고 생각하여 Seat 테이블을 생성하였습니다. +- Theater 테이블과 Seat 테이블은 1:N 관계입니다. +- Seat 테이블과 User 테이블은 1:N 관계입니다. + +## N+1 문제 해결 +저는 N+1 문제가 ID 참조을 사용하기 때문이라고 생각합니다. 따라서 해당 프로젝트에 간접참조를 사용하여, N+1 문제를 해결하고자 합니다. 뿐만 아니라, 간접 참조를 사용하면 도메인 간 물리적인 연결을 제거하기 때문에 도메인 간 의존을 강제적으로 제거합니다. \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 000000000..172ee79c0 --- /dev/null +++ b/build.gradle @@ -0,0 +1,45 @@ +plugins { + id 'java' + id 'org.springframework.boot' version '3.4.1' + id 'io.spring.dependency-management' version '1.1.7' +} + +repositories { + mavenCentral() +} + +allprojects { + // 모든 하위 모듈들에 이 설정을 적용 + group 'com.example' + version '0.0.1-SNAPSHOT' + sourceCompatibility = '17' + + apply plugin: 'java' + apply plugin: 'java-library' + apply plugin: 'org.springframework.boot' + apply plugin: 'io.spring.dependency-management' + + configurations { + compileOnly { + extendsFrom annotationProcessor + } + } + + repositories { + mavenCentral() + } + + dependencies { // 모든 하위 모듈에 추가 될 의존성 목록입니다. + implementation 'org.springframework.boot:spring-boot-starter' + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' + } + + test { + useJUnitPlatform() + } + +} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..8f5457812 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,11 @@ +version: '3.8' +services: + mysql: + image: mysql:latest # 이미 로컬에 있는 MySQL 이미지 사용 + environment: + MYSQL_ROOT_PASSWORD: 1234 # 루트 계정 비밀번호 + MYSQL_DATABASE: hanghae99 # 생성할 기본 데이터베이스 + MYSQL_USER: user # 사용자 계정 (선택) + MYSQL_PASSWORD: password # 사용자 비밀번호 (선택) + ports: + - "3305:3306" # 호스트의 3306 포트를 컨테이너의 3306 포트와 연결 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..a4b76b9530d66f5e68d973ea569d8e19de379189 GIT binary patch literal 43583 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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 GZ~q4|mN%#X literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..e2847c820 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 000000000..f5feea6d6 --- /dev/null +++ b/gradlew @@ -0,0 +1,252 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 000000000..9d21a2183 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/img.png b/img.png new file mode 100644 index 0000000000000000000000000000000000000000..cda5fc3050749ceff7c56cb28613af9ac704f4a6 GIT binary patch literal 123759 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

3jf^|kUn8LPX%$^z*QyE4 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 literal 0 HcmV?d00001 diff --git a/module-application/build.gradle b/module-application/build.gradle new file mode 100644 index 000000000..a3b535e38 --- /dev/null +++ b/module-application/build.gradle @@ -0,0 +1,9 @@ +bootJar.enabled = false + +jar.enabled = true + +dependencies { + implementation project(':module-core') + implementation project(':module-domain') + implementation project(':module-infra') +} \ No newline at end of file diff --git a/module-application/src/main/java/com/example/movie/MovieService.java b/module-application/src/main/java/com/example/movie/MovieService.java new file mode 100644 index 000000000..57b2477c6 --- /dev/null +++ b/module-application/src/main/java/com/example/movie/MovieService.java @@ -0,0 +1,29 @@ +package com.example.movie; + +import com.example.movie.convertor.DtoConvertor; +import com.example.movie.dto.MoviesNowShowingDbDto; +import com.example.movie.response.MoviesNowShowingDetail; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.util.Comparator; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class MovieService { + + private final MovieRepository movieRepository; + private DtoConvertor dtoConvertor = new DtoConvertor(); + + public List getNowShowingMovies() { + List dbResults = movieRepository.findNowShowing(LocalDate.now()); + List detailsList = dtoConvertor.moviesNowScreening(dbResults); + + return detailsList.stream() + .sorted(Comparator.comparing(MoviesNowShowingDetail::releaseDate)) + .toList(); + } + +} diff --git a/module-application/src/main/java/com/example/movie/convertor/DtoConvertor.java b/module-application/src/main/java/com/example/movie/convertor/DtoConvertor.java new file mode 100644 index 000000000..6da3c1244 --- /dev/null +++ b/module-application/src/main/java/com/example/movie/convertor/DtoConvertor.java @@ -0,0 +1,52 @@ +package com.example.movie.convertor; + +import com.example.movie.dto.MoviesNowShowingDbDto; +import com.example.movie.response.MoviesNowShowingDetail; +import com.example.movie.response.ScreeningsDetail; +import lombok.NoArgsConstructor; + +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +@NoArgsConstructor +public class DtoConvertor { + public List moviesNowScreening(List dbResults){ + return dbResults.stream() + .collect(Collectors.groupingBy(MoviesNowShowingDbDto::getMovieName)) + .entrySet().stream() + .map(entry -> { + String movieName = entry.getKey(); + List groupedByMovie = entry.getValue(); + + // 공통 정보 가져오기 + MoviesNowShowingDbDto firstEntry = groupedByMovie.get(0); + + // Theater 별 상영 시간 묶기 + List screeningsDetails = groupedByMovie.stream() + .collect(Collectors.groupingBy(MoviesNowShowingDbDto::getTheaterName)) + .entrySet().stream() + .map(theaterEntry -> { + String theaterName = theaterEntry.getKey(); + List screeningTimes = theaterEntry.getValue().stream() + .sorted(Comparator.comparing(MoviesNowShowingDbDto::getStartTime)) + .map(dto -> dto.getStartTime() + " ~ " + dto.getEndTime()) + .toList(); + return new ScreeningsDetail(theaterName, screeningTimes); + }) + .toList(); + + // 최종 DTO 생성 + return new MoviesNowShowingDetail( + movieName, + firstEntry.getGrade(), + firstEntry.getReleaseDate(), + firstEntry.getThumbnail(), + firstEntry.getRunningTime(), + firstEntry.getGenre(), + screeningsDetails + ); + }) + .toList(); + } +} diff --git a/module-application/src/main/java/com/example/movie/response/MoviesNowShowingDetail.java b/module-application/src/main/java/com/example/movie/response/MoviesNowShowingDetail.java new file mode 100644 index 000000000..4fa9f41fc --- /dev/null +++ b/module-application/src/main/java/com/example/movie/response/MoviesNowShowingDetail.java @@ -0,0 +1,18 @@ +package com.example.movie.response; + +import com.example.entity.movie.Genre; +import com.example.entity.movie.Grade; + +import java.time.LocalDate; +import java.util.List; + +public record MoviesNowShowingDetail ( + String movieName, + Grade grade, + LocalDate releaseDate, + String thumbnail, + Long runningTime, + Genre genre, + List screeningsDetailList +) { +} diff --git a/module-application/src/main/java/com/example/movie/response/ScreeningsDetail.java b/module-application/src/main/java/com/example/movie/response/ScreeningsDetail.java new file mode 100644 index 000000000..d4fcb27de --- /dev/null +++ b/module-application/src/main/java/com/example/movie/response/ScreeningsDetail.java @@ -0,0 +1,9 @@ +package com.example.movie.response; + +import java.util.List; + +public record ScreeningsDetail ( + String theater, + ListscreeningTime +) { +} diff --git a/module-core/build.gradle b/module-core/build.gradle new file mode 100644 index 000000000..95822db08 --- /dev/null +++ b/module-core/build.gradle @@ -0,0 +1,12 @@ +bootJar.enabled = false + +jar.enabled = true + +dependencies { + implementation "com.fasterxml.jackson.core:jackson-core:2.9.9" + implementation "com.fasterxml.jackson.core:jackson-annotations:2.9.9" + implementation "com.fasterxml.jackson.core:jackson-databind:2.9.9" + implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.9" + + implementation 'org.springframework.boot:spring-boot-starter-web' +} \ No newline at end of file diff --git a/module-core/src/main/java/com/example/exception/BaseException.java b/module-core/src/main/java/com/example/exception/BaseException.java new file mode 100644 index 000000000..c339c15d9 --- /dev/null +++ b/module-core/src/main/java/com/example/exception/BaseException.java @@ -0,0 +1,20 @@ +package com.example.exception; + +import com.example.response.status.ResponseStatus; +import lombok.Getter; + +@Getter +public class BaseException extends RuntimeException{ + private final ResponseStatus exceptionStatus; + + + public BaseException(ResponseStatus exceptionStatus) { + super(exceptionStatus.getMessage()); + this.exceptionStatus = exceptionStatus; + } + + public BaseException(String exceptionMessage, ResponseStatus exceptionStatus) { + super(exceptionMessage); + this.exceptionStatus = exceptionStatus; + } +} diff --git a/module-core/src/main/java/com/example/exception/BaseExceptionHandler.java b/module-core/src/main/java/com/example/exception/BaseExceptionHandler.java new file mode 100644 index 000000000..bbf7c37aa --- /dev/null +++ b/module-core/src/main/java/com/example/exception/BaseExceptionHandler.java @@ -0,0 +1,68 @@ +package com.example.exception; + +import com.example.response.BaseErrorResponse; +import com.example.response.code.BaseCode; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.TypeMismatchException; +import org.springframework.http.HttpStatus; +import org.springframework.web.HttpRequestMethodNotSupportedException; +import org.springframework.web.bind.MissingServletRequestParameterException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.servlet.NoHandlerFoundException; + +import java.io.IOException; + +@Slf4j +@RestControllerAdvice +public class BaseExceptionHandler { + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler({BaseException.class,NoHandlerFoundException.class, TypeMismatchException.class}) + public BaseErrorResponse handle_BadRequest(Exception exception) { + log.error("[BaseExceptionControllerAdvice: handle_BadRequest 호출]", exception); + return new BaseErrorResponse(BaseCode.URL_NOT_FOUND); + } + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(HttpRequestMethodNotSupportedException.class) + public BaseErrorResponse handle_HttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) { + log.error("[BaseExceptionControllerAdvice: handle_HttpRequestMethodNotSupportedException 호출]", e); + return new BaseErrorResponse(BaseCode.METHOD_NOT_ALLOWED); + } + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(IllegalArgumentException.class) + public BaseErrorResponse handle_IllegalArgumentException(IllegalArgumentException e) { + log.error("[BaseExceptionControllerAdvice: handle_IllegalArgumentException 호출]", e); + return new BaseErrorResponse(BaseCode.BAD_REQUEST, e.getMessage()); + } + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(IllegalStateException.class) + public BaseErrorResponse handle_IllegalStatusException(IllegalStateException e) { + log.error("[BaseExceptionControllerAdvice: handle_IllegalStatusException 호출]", e); + return new BaseErrorResponse(BaseCode.BAD_REQUEST, e.getMessage()); + } + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(IOException.class) + public BaseErrorResponse handle_IOException(IOException e) { + log.error("[BaseExceptionControllerAdvice: handle_IOException 호출]", e); + return new BaseErrorResponse(BaseCode.BAD_REQUEST, e.getMessage()); + } + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(MissingServletRequestParameterException.class) + public BaseErrorResponse handleMissingServletRequestParameterException(MissingServletRequestParameterException e) { + log.error("[GlobalExceptionHandler] MissingServletRequestParameterException", e); + return new BaseErrorResponse(BaseCode.NO_REQUEST_PARAMETER); + } + + @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) + @ExceptionHandler(RuntimeException.class) + public BaseErrorResponse handle_RuntimeException(Exception e) { + log.error("[BaseExceptionControllerAdvice: handle_RuntimeException 호출]", e); + return new BaseErrorResponse(BaseCode.SERVER_ERROR); + } +} diff --git a/module-core/src/main/java/com/example/response/BaseErrorResponse.java b/module-core/src/main/java/com/example/response/BaseErrorResponse.java new file mode 100644 index 000000000..1c584e38a --- /dev/null +++ b/module-core/src/main/java/com/example/response/BaseErrorResponse.java @@ -0,0 +1,56 @@ +package com.example.response; + +import com.example.response.status.ResponseStatus; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import lombok.Getter; + +import java.time.LocalDateTime; + +@Getter +@JsonPropertyOrder({"code","status","message","timestamp"}) +public class BaseErrorResponse implements ResponseStatus { + private final int code; + private final int status; + private final String message; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss") + private final LocalDateTime timestamp; + + public BaseErrorResponse(ResponseStatus status) { + this.code = status.getCode(); + this.status = status.getStatus(); + this.message = status.getMessage(); + this.timestamp = LocalDateTime.now(); + } + + public BaseErrorResponse(ResponseStatus status, String message) { + this.code = status.getCode(); + this.status = status.getStatus(); + this.message = message; + this.timestamp = LocalDateTime.now(); + } + + @Override + public int getCode() { + return code; + } + + @Override + public int getStatus() { + return status; + } + + @Override + public String getMessage() { + return message; + } + + public String convertToJson() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + return objectMapper.writeValueAsString(this); + } +} diff --git a/module-core/src/main/java/com/example/response/BaseResponse.java b/module-core/src/main/java/com/example/response/BaseResponse.java new file mode 100644 index 000000000..5efaea3ce --- /dev/null +++ b/module-core/src/main/java/com/example/response/BaseResponse.java @@ -0,0 +1,48 @@ +package com.example.response; + +import com.example.response.status.ResponseStatus; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Getter; + +import static com.example.response.code.BaseCode.SUCCESS; + + +@Getter +@JsonPropertyOrder({"code","status","message","result"}) +public class BaseResponse implements ResponseStatus { + private final int code; + private final int status; + private final String message; + + @JsonInclude(JsonInclude.Include.NON_NULL) + private final T result; + + + public BaseResponse() { + this.code = SUCCESS.getCode(); + this.status = SUCCESS.getStatus(); + this.message = SUCCESS.getMessage(); + this.result = null; + } + + public BaseResponse(T result) { + this.code = SUCCESS.getCode(); + this.status = SUCCESS.getStatus(); + this.message = SUCCESS.getMessage(); + this.result = result; + } + + public int getCode() { + return code; + } + + public int getStatus() { + return status; + } + + public String getMessage() { + return message; + } +} + diff --git a/module-core/src/main/java/com/example/response/code/BaseCode.java b/module-core/src/main/java/com/example/response/code/BaseCode.java new file mode 100644 index 000000000..f5fb7fcf1 --- /dev/null +++ b/module-core/src/main/java/com/example/response/code/BaseCode.java @@ -0,0 +1,50 @@ +package com.example.response.code; + +import com.example.response.status.ResponseStatus; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; + +@RequiredArgsConstructor +public enum BaseCode implements ResponseStatus { + + /** + * 1000: 요청 성공 (OK) + */ + SUCCESS(1000,HttpStatus.OK.value(), "요청에 성공하였습니다."), + + /** + * 2000: Request 오류 (BAD_REQUEST) + */ + BAD_REQUEST(2000, HttpStatus.BAD_REQUEST.value(), "유효하지 않은 요청입니다."), + URL_NOT_FOUND(2001, HttpStatus.BAD_REQUEST.value(), "유효하지 않은 URL 입니다."), + METHOD_NOT_ALLOWED(2002, HttpStatus.METHOD_NOT_ALLOWED.value(), "해당 URL에서는 지원하지 않는 HTTP Method 입니다."), + NO_REQUEST_PARAMETER(2005,HttpStatus.BAD_REQUEST.value(),"요청 파라미터는 필수로 입력해야합니다."), + + + /** + * 3000: Server, Database 오류 (INTERNAL_SERVER_ERROR) + */ + SERVER_ERROR(3000, HttpStatus.INTERNAL_SERVER_ERROR.value(), "서버에서 오류가 발생하였습니다."), + DATABASE_ERROR(3001, HttpStatus.INTERNAL_SERVER_ERROR.value(), "데이터베이스에서 오류가 발생하였습니다."), + BAD_SQL_GRAMMAR(3002, HttpStatus.INTERNAL_SERVER_ERROR.value(), "SQL에 오류가 있습니다."); + + private final int code; + private final int status; + private final String message; + + + @Override + public int getCode() { + return code; + } + + @Override + public int getStatus() { + return status; + } + + @Override + public String getMessage() { + return message; + } +} diff --git a/module-core/src/main/java/com/example/response/status/ResponseStatus.java b/module-core/src/main/java/com/example/response/status/ResponseStatus.java new file mode 100644 index 000000000..5762a4956 --- /dev/null +++ b/module-core/src/main/java/com/example/response/status/ResponseStatus.java @@ -0,0 +1,7 @@ +package com.example.response.status; + +public interface ResponseStatus { + int getCode(); + int getStatus(); + String getMessage(); +} \ No newline at end of file diff --git a/module-domain/build.gradle b/module-domain/build.gradle new file mode 100644 index 000000000..e48cbdcd5 --- /dev/null +++ b/module-domain/build.gradle @@ -0,0 +1,8 @@ +bootJar.enabled = false + +jar.enabled = true + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation project(':module-core') +} \ No newline at end of file diff --git a/module-domain/src/main/java/com/example/entity/BaseEntity.java b/module-domain/src/main/java/com/example/entity/BaseEntity.java new file mode 100644 index 000000000..81846eec8 --- /dev/null +++ b/module-domain/src/main/java/com/example/entity/BaseEntity.java @@ -0,0 +1,35 @@ +package com.example.entity; + +import jakarta.persistence.Column; +import jakarta.persistence.EntityListeners; +import jakarta.persistence.MappedSuperclass; +import org.springframework.data.annotation.CreatedBy; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedBy; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDateTime; + +@EntityListeners(AuditingEntityListener.class) +@MappedSuperclass +public class BaseEntity { + + @CreatedDate + @Column(updatable = false) + private LocalDateTime createdDate; + + + @LastModifiedDate + private LocalDateTime lastModifiedDate; + + + @CreatedBy + @Column(updatable = false) + private String createdBy; + + + @LastModifiedBy + private String lastModifiedBy; + +} diff --git a/module-domain/src/main/java/com/example/entity/movie/Genre.java b/module-domain/src/main/java/com/example/entity/movie/Genre.java new file mode 100644 index 000000000..b7fbddcb9 --- /dev/null +++ b/module-domain/src/main/java/com/example/entity/movie/Genre.java @@ -0,0 +1,5 @@ +package com.example.entity.movie; + +public enum Genre { + 액션, 로맨스, 호러, SF +} diff --git a/module-domain/src/main/java/com/example/entity/movie/Grade.java b/module-domain/src/main/java/com/example/entity/movie/Grade.java new file mode 100644 index 000000000..ddf2caa19 --- /dev/null +++ b/module-domain/src/main/java/com/example/entity/movie/Grade.java @@ -0,0 +1,5 @@ +package com.example.entity.movie; + +public enum Grade { + ALL_AGE, FROM_12_AGE, FROM_15_AGE, FROM_19_AGE, RESTRICTED +} diff --git a/module-domain/src/main/java/com/example/entity/movie/Movie.java b/module-domain/src/main/java/com/example/entity/movie/Movie.java new file mode 100644 index 000000000..bae444bd1 --- /dev/null +++ b/module-domain/src/main/java/com/example/entity/movie/Movie.java @@ -0,0 +1,28 @@ +package com.example.entity.movie; + +import com.example.entity.BaseEntity; +import jakarta.persistence.*; + +import java.time.LocalDate; + +@Entity +public class Movie extends BaseEntity { + + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + + private String thumbnail; + + @Enumerated(EnumType.STRING) + private Genre genre; + + @Enumerated(EnumType.STRING) + private Grade grade; + + private LocalDate releaseDate; + + private Long runningTime; + +} diff --git a/module-domain/src/main/java/com/example/entity/movie/Screening.java b/module-domain/src/main/java/com/example/entity/movie/Screening.java new file mode 100644 index 000000000..08ab0a850 --- /dev/null +++ b/module-domain/src/main/java/com/example/entity/movie/Screening.java @@ -0,0 +1,26 @@ +package com.example.entity.movie; + +import com.example.entity.BaseEntity; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; + +import java.time.LocalDateTime; + +@Entity +public class Screening extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Long movieId; + + private Long theaterId; + + private LocalDateTime startTime; + + private LocalDateTime endTime; + +} diff --git a/module-domain/src/main/java/com/example/entity/movie/Theater.java b/module-domain/src/main/java/com/example/entity/movie/Theater.java new file mode 100644 index 000000000..8989c777e --- /dev/null +++ b/module-domain/src/main/java/com/example/entity/movie/Theater.java @@ -0,0 +1,18 @@ +package com.example.entity.movie; + +import com.example.entity.BaseEntity; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; + +@Entity +public class Theater extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + +} diff --git a/module-domain/src/main/java/com/example/entity/reservation/Seat.java b/module-domain/src/main/java/com/example/entity/reservation/Seat.java new file mode 100644 index 000000000..251c45ba1 --- /dev/null +++ b/module-domain/src/main/java/com/example/entity/reservation/Seat.java @@ -0,0 +1,31 @@ +package com.example.entity.reservation; + +import com.example.entity.BaseEntity; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import org.springframework.lang.Nullable; + +import java.time.LocalDateTime; + +@Entity +public class Seat extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Long theaterId; + + @Nullable + private Long userId; + + private char seatRow; + + private Long seatCol; + + private Boolean isReservation; + + private LocalDateTime reservationTime; +} diff --git a/module-domain/src/main/java/com/example/entity/user/User.java b/module-domain/src/main/java/com/example/entity/user/User.java new file mode 100644 index 000000000..457f402fb --- /dev/null +++ b/module-domain/src/main/java/com/example/entity/user/User.java @@ -0,0 +1,18 @@ +package com.example.entity.user; + +import com.example.entity.BaseEntity; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; + +@Entity +public class User extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + +} diff --git a/module-infra/build.gradle b/module-infra/build.gradle new file mode 100644 index 000000000..5979e2c94 --- /dev/null +++ b/module-infra/build.gradle @@ -0,0 +1,10 @@ +bootJar.enabled = false + +jar.enabled = true + +dependencies { + api("org.springframework.boot:spring-boot-starter-data-jpa") + runtimeOnly 'com.mysql:mysql-connector-j' + implementation project(':module-core') + implementation project(':module-domain') +} \ No newline at end of file diff --git a/module-infra/src/main/java/com/example/movie/MovieRepository.java b/module-infra/src/main/java/com/example/movie/MovieRepository.java new file mode 100644 index 000000000..1682e3396 --- /dev/null +++ b/module-infra/src/main/java/com/example/movie/MovieRepository.java @@ -0,0 +1,21 @@ +package com.example.movie; + +import com.example.entity.movie.Movie; +import com.example.movie.dto.*; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.time.LocalDate; +import java.util.List; + +public interface MovieRepository extends JpaRepository { + + @Query("SELECT new com.example.movie.dto.MoviesNowShowingDbDto(m.name, m.grade, m.releaseDate, m.thumbnail, m.runningTime, m.genre, " + + " t.name, s.startTime, s.endTime ) " + + "FROM Movie m " + + "JOIN Screening s ON m.id = s.movieId " + + "JOIN Theater t ON s.theaterId = t.id " + + "WHERE s.startTime >= CURRENT_DATE " ) + List findNowShowing(LocalDate today); + +} diff --git a/module-infra/src/main/java/com/example/movie/dto/MoviesNowShowingDbDto.java b/module-infra/src/main/java/com/example/movie/dto/MoviesNowShowingDbDto.java new file mode 100644 index 000000000..289061fdb --- /dev/null +++ b/module-infra/src/main/java/com/example/movie/dto/MoviesNowShowingDbDto.java @@ -0,0 +1,23 @@ +package com.example.movie.dto; + +import com.example.entity.movie.Genre; +import com.example.entity.movie.Grade; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Getter +@AllArgsConstructor +public class MoviesNowShowingDbDto { + private String movieName; + private Grade grade; + private LocalDate releaseDate; + private String thumbnail; + private Long runningTime; + private Genre genre; + private String theaterName; + private LocalDateTime startTime; + private LocalDateTime endTime; +} diff --git a/module-infra/src/main/resources/application.yml b/module-infra/src/main/resources/application.yml new file mode 100644 index 000000000..ba5034055 --- /dev/null +++ b/module-infra/src/main/resources/application.yml @@ -0,0 +1,17 @@ +spring: + datasource: + url: jdbc:mysql://localhost:3305/hanghae99 + username: root + password: 1234 + driver-class-name: com.mysql.cj.jdbc.Driver + sql: + init: + platform: mysql + mode: always + jpa: + hibernate: + ddl-auto: update + properties: + hibernate: + format_sql: true + show_sql: true \ No newline at end of file diff --git a/module-presentation/build.gradle b/module-presentation/build.gradle new file mode 100644 index 000000000..0635537df --- /dev/null +++ b/module-presentation/build.gradle @@ -0,0 +1,12 @@ +bootJar.enabled = false + +jar.enabled = true + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation project(':module-core') + implementation project(':module-infra') + implementation project(':module-domain') + implementation project(':module-application') +} \ No newline at end of file diff --git a/module-presentation/src/main/java/com/example/RootApplication.java b/module-presentation/src/main/java/com/example/RootApplication.java new file mode 100644 index 000000000..c6f1c1867 --- /dev/null +++ b/module-presentation/src/main/java/com/example/RootApplication.java @@ -0,0 +1,24 @@ +package com.example; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.data.domain.AuditorAware; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; + +import java.util.Optional; +import java.util.UUID; + +@EnableJpaAuditing +@SpringBootApplication +public class RootApplication { + + public static void main(String[] args) { + SpringApplication.run(RootApplication.class, args); + } + + @Bean + public AuditorAware auditorProvider(){ + return () -> Optional.of(UUID.randomUUID().toString()); + } +} \ No newline at end of file diff --git a/module-presentation/src/main/java/com/example/movie/MovieController.java b/module-presentation/src/main/java/com/example/movie/MovieController.java new file mode 100644 index 000000000..212ef1591 --- /dev/null +++ b/module-presentation/src/main/java/com/example/movie/MovieController.java @@ -0,0 +1,25 @@ +package com.example.movie; + +import com.example.movie.response.MoviesNowShowingDetail; +import com.example.response.BaseResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/movie") +@RequiredArgsConstructor +public class MovieController { + + private final MovieService movieService; + + @GetMapping("/list/now-showing") + public BaseResponse> getCategories() { + List response = movieService.getNowShowingMovies(); + return new BaseResponse<>(response); + } + +} diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 000000000..d77873a3f --- /dev/null +++ b/settings.gradle @@ -0,0 +1,7 @@ +rootProject.name = 'multi-modules' +include 'module-presentation' +include 'module-application' +include 'module-domain' +include 'module-infra' +include 'module-core' + From 8a036cd9c33eae1c29623ae02ce1ea7b7d3f0bb0 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Tue, 14 Jan 2025 16:32:12 +0900 Subject: [PATCH 2/4] =?UTF-8?q?refactor:=201=EC=A3=BC=EC=B0=A8=20=ED=94=BC?= =?UTF-8?q?=EB=93=9C=EB=B0=B1=EC=9D=84=20=EB=B0=94=ED=83=95=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/build.gradle | 9 +++ api/http/movie.http | 3 + .../java/com/example/Hang99Application.java | 6 +- .../com/example/exception/BaseException.java | 0 .../exception/BaseExceptionHandler.java | 12 ++-- .../application}/convertor/DtoConvertor.java | 43 +++++++------ .../dto}/MoviesNowShowingDetail.java | 9 +-- .../application/dto/ScreeningTimeDetail.java | 9 +++ .../application/dto/ScreeningsDetail.java | 10 +++ .../application/service/MovieService.java | 31 ++++++++++ .../controller}/MovieController.java | 14 ++--- .../example/response/BaseErrorResponse.java | 0 .../com/example/response/BaseResponse.java | 0 .../com/example/response/code/BaseCode.java | 0 .../response/status/ResponseStatus.java | 0 build.gradle | 2 +- {module-infra => domain}/build.gradle | 4 +- .../main/java/com/example}/BaseEntity.java | 14 +++-- .../com/example/movie/entity/movie/Genre.java | 5 ++ .../example/movie}/entity/movie/Grade.java | 2 +- .../example/movie}/entity/movie/Movie.java | 4 +- .../movie}/entity/movie/Screening.java | 8 +-- .../example/movie/entity/theater}/Seat.java | 13 +--- .../movie/entity/theater}/Theater.java | 4 +- .../movie/repository/MovieRepository.java | 21 +++++++ .../dto/MoviesNowShowingDetailDto.java | 14 +++-- .../reservation/entity/Reservation.java | 24 +++++++ .../java/com/example/user/entity}/User.java | 4 +- .../src/main/resources/application.yml | 14 +++-- domain/src/main/resources/data.sql | 62 +++++++++++++++++++ module-application/build.gradle | 9 --- .../java/com/example/movie/MovieService.java | 29 --------- .../movie/response/ScreeningsDetail.java | 9 --- module-core/build.gradle | 12 ---- module-domain/build.gradle | 8 --- .../java/com/example/entity/movie/Genre.java | 5 -- .../com/example/movie/MovieRepository.java | 21 ------- module-presentation/build.gradle | 12 ---- settings.gradle | 7 +-- 39 files changed, 261 insertions(+), 192 deletions(-) create mode 100644 api/build.gradle create mode 100644 api/http/movie.http rename module-presentation/src/main/java/com/example/RootApplication.java => api/src/main/java/com/example/Hang99Application.java (77%) rename {module-core => api}/src/main/java/com/example/exception/BaseException.java (100%) rename {module-core => api}/src/main/java/com/example/exception/BaseExceptionHandler.java (82%) rename {module-application/src/main/java/com/example/movie => api/src/main/java/com/example/movie/application}/convertor/DtoConvertor.java (53%) rename {module-application/src/main/java/com/example/movie/response => api/src/main/java/com/example/movie/application/dto}/MoviesNowShowingDetail.java (55%) create mode 100644 api/src/main/java/com/example/movie/application/dto/ScreeningTimeDetail.java create mode 100644 api/src/main/java/com/example/movie/application/dto/ScreeningsDetail.java create mode 100644 api/src/main/java/com/example/movie/application/service/MovieService.java rename {module-presentation/src/main/java/com/example/movie => api/src/main/java/com/example/movie/presentation/controller}/MovieController.java (56%) rename {module-core => api}/src/main/java/com/example/response/BaseErrorResponse.java (100%) rename {module-core => api}/src/main/java/com/example/response/BaseResponse.java (100%) rename {module-core => api}/src/main/java/com/example/response/code/BaseCode.java (100%) rename {module-core => api}/src/main/java/com/example/response/status/ResponseStatus.java (100%) rename {module-infra => domain}/build.gradle (66%) rename {module-domain/src/main/java/com/example/entity => domain/src/main/java/com/example}/BaseEntity.java (76%) create mode 100644 domain/src/main/java/com/example/movie/entity/movie/Genre.java rename {module-domain/src/main/java/com/example => domain/src/main/java/com/example/movie}/entity/movie/Grade.java (68%) rename {module-domain/src/main/java/com/example => domain/src/main/java/com/example/movie}/entity/movie/Movie.java (85%) rename {module-domain/src/main/java/com/example => domain/src/main/java/com/example/movie}/entity/movie/Screening.java (72%) rename {module-domain/src/main/java/com/example/entity/reservation => domain/src/main/java/com/example/movie/entity/theater}/Seat.java (62%) rename {module-domain/src/main/java/com/example/entity/movie => domain/src/main/java/com/example/movie/entity/theater}/Theater.java (81%) create mode 100644 domain/src/main/java/com/example/movie/repository/MovieRepository.java rename module-infra/src/main/java/com/example/movie/dto/MoviesNowShowingDbDto.java => domain/src/main/java/com/example/movie/repository/dto/MoviesNowShowingDetailDto.java (54%) create mode 100644 domain/src/main/java/com/example/reservation/entity/Reservation.java rename {module-domain/src/main/java/com/example/entity/user => domain/src/main/java/com/example/user/entity}/User.java (81%) rename {module-infra => domain}/src/main/resources/application.yml (68%) create mode 100644 domain/src/main/resources/data.sql delete mode 100644 module-application/build.gradle delete mode 100644 module-application/src/main/java/com/example/movie/MovieService.java delete mode 100644 module-application/src/main/java/com/example/movie/response/ScreeningsDetail.java delete mode 100644 module-core/build.gradle delete mode 100644 module-domain/build.gradle delete mode 100644 module-domain/src/main/java/com/example/entity/movie/Genre.java delete mode 100644 module-infra/src/main/java/com/example/movie/MovieRepository.java delete mode 100644 module-presentation/build.gradle diff --git a/api/build.gradle b/api/build.gradle new file mode 100644 index 000000000..de1a5a0bf --- /dev/null +++ b/api/build.gradle @@ -0,0 +1,9 @@ +bootJar.enabled = true + +jar.enabled = false + +dependencies { + implementation project(':domain') + + implementation "org.springframework.boot:spring-boot-starter-web" +} \ No newline at end of file diff --git a/api/http/movie.http b/api/http/movie.http new file mode 100644 index 000000000..9a13e46b8 --- /dev/null +++ b/api/http/movie.http @@ -0,0 +1,3 @@ +### 1. 상영중인 영화 조회 +GET localhost:8080/v1/movies/now-showing +Content-Type: application/json \ No newline at end of file diff --git a/module-presentation/src/main/java/com/example/RootApplication.java b/api/src/main/java/com/example/Hang99Application.java similarity index 77% rename from module-presentation/src/main/java/com/example/RootApplication.java rename to api/src/main/java/com/example/Hang99Application.java index c6f1c1867..a6844cc65 100644 --- a/module-presentation/src/main/java/com/example/RootApplication.java +++ b/api/src/main/java/com/example/Hang99Application.java @@ -11,14 +11,14 @@ @EnableJpaAuditing @SpringBootApplication -public class RootApplication { +public class Hang99Application { public static void main(String[] args) { - SpringApplication.run(RootApplication.class, args); + SpringApplication.run(Hang99Application.class, args); } @Bean public AuditorAware auditorProvider(){ - return () -> Optional.of(UUID.randomUUID().toString()); + return () -> Optional.of("SYSTEM"); } } \ No newline at end of file diff --git a/module-core/src/main/java/com/example/exception/BaseException.java b/api/src/main/java/com/example/exception/BaseException.java similarity index 100% rename from module-core/src/main/java/com/example/exception/BaseException.java rename to api/src/main/java/com/example/exception/BaseException.java diff --git a/module-core/src/main/java/com/example/exception/BaseExceptionHandler.java b/api/src/main/java/com/example/exception/BaseExceptionHandler.java similarity index 82% rename from module-core/src/main/java/com/example/exception/BaseExceptionHandler.java rename to api/src/main/java/com/example/exception/BaseExceptionHandler.java index bbf7c37aa..e9652425f 100644 --- a/module-core/src/main/java/com/example/exception/BaseExceptionHandler.java +++ b/api/src/main/java/com/example/exception/BaseExceptionHandler.java @@ -20,42 +20,42 @@ public class BaseExceptionHandler { @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler({BaseException.class,NoHandlerFoundException.class, TypeMismatchException.class}) public BaseErrorResponse handle_BadRequest(Exception exception) { - log.error("[BaseExceptionControllerAdvice: handle_BadRequest 호출]", exception); + log.info("[BaseExceptionControllerAdvice: handle_BadRequest 호출]", exception); return new BaseErrorResponse(BaseCode.URL_NOT_FOUND); } @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(HttpRequestMethodNotSupportedException.class) public BaseErrorResponse handle_HttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) { - log.error("[BaseExceptionControllerAdvice: handle_HttpRequestMethodNotSupportedException 호출]", e); + log.info("[BaseExceptionControllerAdvice: handle_HttpRequestMethodNotSupportedException 호출]", e); return new BaseErrorResponse(BaseCode.METHOD_NOT_ALLOWED); } @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(IllegalArgumentException.class) public BaseErrorResponse handle_IllegalArgumentException(IllegalArgumentException e) { - log.error("[BaseExceptionControllerAdvice: handle_IllegalArgumentException 호출]", e); + log.info("[BaseExceptionControllerAdvice: handle_IllegalArgumentException 호출]", e); return new BaseErrorResponse(BaseCode.BAD_REQUEST, e.getMessage()); } @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(IllegalStateException.class) public BaseErrorResponse handle_IllegalStatusException(IllegalStateException e) { - log.error("[BaseExceptionControllerAdvice: handle_IllegalStatusException 호출]", e); + log.info("[BaseExceptionControllerAdvice: handle_IllegalStatusException 호출]", e); return new BaseErrorResponse(BaseCode.BAD_REQUEST, e.getMessage()); } @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(IOException.class) public BaseErrorResponse handle_IOException(IOException e) { - log.error("[BaseExceptionControllerAdvice: handle_IOException 호출]", e); + log.info("[BaseExceptionControllerAdvice: handle_IOException 호출]", e); return new BaseErrorResponse(BaseCode.BAD_REQUEST, e.getMessage()); } @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(MissingServletRequestParameterException.class) public BaseErrorResponse handleMissingServletRequestParameterException(MissingServletRequestParameterException e) { - log.error("[GlobalExceptionHandler] MissingServletRequestParameterException", e); + log.info("[GlobalExceptionHandler] MissingServletRequestParameterException", e); return new BaseErrorResponse(BaseCode.NO_REQUEST_PARAMETER); } diff --git a/module-application/src/main/java/com/example/movie/convertor/DtoConvertor.java b/api/src/main/java/com/example/movie/application/convertor/DtoConvertor.java similarity index 53% rename from module-application/src/main/java/com/example/movie/convertor/DtoConvertor.java rename to api/src/main/java/com/example/movie/application/convertor/DtoConvertor.java index 6da3c1244..d08bef55e 100644 --- a/module-application/src/main/java/com/example/movie/convertor/DtoConvertor.java +++ b/api/src/main/java/com/example/movie/application/convertor/DtoConvertor.java @@ -1,44 +1,49 @@ -package com.example.movie.convertor; +package com.example.movie.application.convertor; -import com.example.movie.dto.MoviesNowShowingDbDto; -import com.example.movie.response.MoviesNowShowingDetail; -import com.example.movie.response.ScreeningsDetail; +import com.example.movie.repository.dto.MoviesNowShowingDetailDto; +import com.example.movie.application.dto.MoviesNowShowingDetail; +import com.example.movie.application.dto.ScreeningTimeDetail; +import com.example.movie.application.dto.ScreeningsDetail; import lombok.NoArgsConstructor; +import org.springframework.stereotype.Component; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; +@Component @NoArgsConstructor public class DtoConvertor { - public List moviesNowScreening(List dbResults){ + public List moviesNowScreening(List dbResults) { return dbResults.stream() - .collect(Collectors.groupingBy(MoviesNowShowingDbDto::getMovieName)) + .collect(Collectors.groupingBy(MoviesNowShowingDetailDto::getMovieId)) .entrySet().stream() .map(entry -> { - String movieName = entry.getKey(); - List groupedByMovie = entry.getValue(); + Long movieId = entry.getKey(); + List groupedByMovie = entry.getValue(); + + + MoviesNowShowingDetailDto firstEntry = groupedByMovie.get(0); - // 공통 정보 가져오기 - MoviesNowShowingDbDto firstEntry = groupedByMovie.get(0); - // Theater 별 상영 시간 묶기 List screeningsDetails = groupedByMovie.stream() - .collect(Collectors.groupingBy(MoviesNowShowingDbDto::getTheaterName)) + .collect(Collectors.groupingBy(MoviesNowShowingDetailDto::getTheaterId)) .entrySet().stream() .map(theaterEntry -> { - String theaterName = theaterEntry.getKey(); - List screeningTimes = theaterEntry.getValue().stream() - .sorted(Comparator.comparing(MoviesNowShowingDbDto::getStartTime)) - .map(dto -> dto.getStartTime() + " ~ " + dto.getEndTime()) + Long theaterId = theaterEntry.getKey(); + String theaterName = theaterEntry.getValue().get(0).getTheaterName(); + List screeningTimes = theaterEntry.getValue().stream() + .sorted(Comparator.comparing(MoviesNowShowingDetailDto::getStartAt)) + .map(dto -> new ScreeningTimeDetail(dto.getStartAt(), dto.getEndAt())) .toList(); - return new ScreeningsDetail(theaterName, screeningTimes); + return new ScreeningsDetail(theaterId, theaterName, screeningTimes); }) .toList(); - // 최종 DTO 생성 + // Create the final DTO return new MoviesNowShowingDetail( - movieName, + movieId, // Add movieId here + firstEntry.getMovieName(), firstEntry.getGrade(), firstEntry.getReleaseDate(), firstEntry.getThumbnail(), diff --git a/module-application/src/main/java/com/example/movie/response/MoviesNowShowingDetail.java b/api/src/main/java/com/example/movie/application/dto/MoviesNowShowingDetail.java similarity index 55% rename from module-application/src/main/java/com/example/movie/response/MoviesNowShowingDetail.java rename to api/src/main/java/com/example/movie/application/dto/MoviesNowShowingDetail.java index 4fa9f41fc..5e7e0a8c2 100644 --- a/module-application/src/main/java/com/example/movie/response/MoviesNowShowingDetail.java +++ b/api/src/main/java/com/example/movie/application/dto/MoviesNowShowingDetail.java @@ -1,18 +1,19 @@ -package com.example.movie.response; +package com.example.movie.application.dto; -import com.example.entity.movie.Genre; -import com.example.entity.movie.Grade; +import com.example.movie.entity.movie.Genre; +import com.example.movie.entity.movie.Grade; import java.time.LocalDate; import java.util.List; public record MoviesNowShowingDetail ( + Long movieId, String movieName, Grade grade, LocalDate releaseDate, String thumbnail, Long runningTime, Genre genre, - List screeningsDetailList + List screeningsDetails ) { } diff --git a/api/src/main/java/com/example/movie/application/dto/ScreeningTimeDetail.java b/api/src/main/java/com/example/movie/application/dto/ScreeningTimeDetail.java new file mode 100644 index 000000000..6d5784032 --- /dev/null +++ b/api/src/main/java/com/example/movie/application/dto/ScreeningTimeDetail.java @@ -0,0 +1,9 @@ +package com.example.movie.application.dto; + +import java.time.LocalDateTime; + +public record ScreeningTimeDetail( + LocalDateTime startAt, + LocalDateTime endAt +) { +} diff --git a/api/src/main/java/com/example/movie/application/dto/ScreeningsDetail.java b/api/src/main/java/com/example/movie/application/dto/ScreeningsDetail.java new file mode 100644 index 000000000..d42fa7ba6 --- /dev/null +++ b/api/src/main/java/com/example/movie/application/dto/ScreeningsDetail.java @@ -0,0 +1,10 @@ +package com.example.movie.application.dto; + +import java.util.List; + +public record ScreeningsDetail( + Long theaterId, + String theater, + List screeningTimes +) { +} diff --git a/api/src/main/java/com/example/movie/application/service/MovieService.java b/api/src/main/java/com/example/movie/application/service/MovieService.java new file mode 100644 index 000000000..c42d468e4 --- /dev/null +++ b/api/src/main/java/com/example/movie/application/service/MovieService.java @@ -0,0 +1,31 @@ +package com.example.movie.application.service; + +import com.example.movie.repository.MovieRepository; +import com.example.movie.application.convertor.DtoConvertor; +import com.example.movie.repository.dto.MoviesNowShowingDetailDto; +import com.example.movie.application.dto.MoviesNowShowingDetail; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Comparator; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class MovieService { + + private final MovieRepository movieRepository; + private final DtoConvertor dtoConvertor; + + public List getNowShowingMovies(LocalDateTime now) { + List dbResults = movieRepository.findNowShowing(now); + List detailsList = dtoConvertor.moviesNowScreening(dbResults); + + return detailsList.stream() + .sorted(Comparator.comparing(MoviesNowShowingDetail::releaseDate)) + .toList(); + } + +} diff --git a/module-presentation/src/main/java/com/example/movie/MovieController.java b/api/src/main/java/com/example/movie/presentation/controller/MovieController.java similarity index 56% rename from module-presentation/src/main/java/com/example/movie/MovieController.java rename to api/src/main/java/com/example/movie/presentation/controller/MovieController.java index 212ef1591..3bb123f81 100644 --- a/module-presentation/src/main/java/com/example/movie/MovieController.java +++ b/api/src/main/java/com/example/movie/presentation/controller/MovieController.java @@ -1,24 +1,24 @@ -package com.example.movie; +package com.example.movie.presentation.controller; -import com.example.movie.response.MoviesNowShowingDetail; +import com.example.movie.application.dto.MoviesNowShowingDetail; +import com.example.movie.application.service.MovieService; import com.example.response.BaseResponse; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.time.LocalDateTime; import java.util.List; @RestController -@RequestMapping("/movie") @RequiredArgsConstructor public class MovieController { private final MovieService movieService; - @GetMapping("/list/now-showing") - public BaseResponse> getCategories() { - List response = movieService.getNowShowingMovies(); + @GetMapping("/v1/movies/now-showing") + public BaseResponse> getMoviesNowShowing() { + List response = movieService.getNowShowingMovies(LocalDateTime.now()); return new BaseResponse<>(response); } diff --git a/module-core/src/main/java/com/example/response/BaseErrorResponse.java b/api/src/main/java/com/example/response/BaseErrorResponse.java similarity index 100% rename from module-core/src/main/java/com/example/response/BaseErrorResponse.java rename to api/src/main/java/com/example/response/BaseErrorResponse.java diff --git a/module-core/src/main/java/com/example/response/BaseResponse.java b/api/src/main/java/com/example/response/BaseResponse.java similarity index 100% rename from module-core/src/main/java/com/example/response/BaseResponse.java rename to api/src/main/java/com/example/response/BaseResponse.java diff --git a/module-core/src/main/java/com/example/response/code/BaseCode.java b/api/src/main/java/com/example/response/code/BaseCode.java similarity index 100% rename from module-core/src/main/java/com/example/response/code/BaseCode.java rename to api/src/main/java/com/example/response/code/BaseCode.java diff --git a/module-core/src/main/java/com/example/response/status/ResponseStatus.java b/api/src/main/java/com/example/response/status/ResponseStatus.java similarity index 100% rename from module-core/src/main/java/com/example/response/status/ResponseStatus.java rename to api/src/main/java/com/example/response/status/ResponseStatus.java diff --git a/build.gradle b/build.gradle index 172ee79c0..999a5a291 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ repositories { mavenCentral() } -allprojects { +subprojects { // 모든 하위 모듈들에 이 설정을 적용 group 'com.example' version '0.0.1-SNAPSHOT' diff --git a/module-infra/build.gradle b/domain/build.gradle similarity index 66% rename from module-infra/build.gradle rename to domain/build.gradle index 5979e2c94..964907fed 100644 --- a/module-infra/build.gradle +++ b/domain/build.gradle @@ -3,8 +3,6 @@ bootJar.enabled = false jar.enabled = true dependencies { - api("org.springframework.boot:spring-boot-starter-data-jpa") runtimeOnly 'com.mysql:mysql-connector-j' - implementation project(':module-core') - implementation project(':module-domain') + api("org.springframework.boot:spring-boot-starter-data-jpa") } \ No newline at end of file diff --git a/module-domain/src/main/java/com/example/entity/BaseEntity.java b/domain/src/main/java/com/example/BaseEntity.java similarity index 76% rename from module-domain/src/main/java/com/example/entity/BaseEntity.java rename to domain/src/main/java/com/example/BaseEntity.java index 81846eec8..51396fb81 100644 --- a/module-domain/src/main/java/com/example/entity/BaseEntity.java +++ b/domain/src/main/java/com/example/BaseEntity.java @@ -1,8 +1,9 @@ -package com.example.entity; +package com.example; import jakarta.persistence.Column; import jakarta.persistence.EntityListeners; import jakarta.persistence.MappedSuperclass; +import lombok.Data; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; @@ -11,25 +12,26 @@ import java.time.LocalDateTime; +@Data @EntityListeners(AuditingEntityListener.class) @MappedSuperclass -public class BaseEntity { +public abstract class BaseEntity { @CreatedDate @Column(updatable = false) - private LocalDateTime createdDate; + private LocalDateTime createAt; @LastModifiedDate - private LocalDateTime lastModifiedDate; + private LocalDateTime modifyAt; @CreatedBy @Column(updatable = false) - private String createdBy; + private String createBy; @LastModifiedBy - private String lastModifiedBy; + private String modifyBy; } diff --git a/domain/src/main/java/com/example/movie/entity/movie/Genre.java b/domain/src/main/java/com/example/movie/entity/movie/Genre.java new file mode 100644 index 000000000..5021471aa --- /dev/null +++ b/domain/src/main/java/com/example/movie/entity/movie/Genre.java @@ -0,0 +1,5 @@ +package com.example.movie.entity.movie; + +public enum Genre { + ACTION, ROMANCE, HORROR, SF +} diff --git a/module-domain/src/main/java/com/example/entity/movie/Grade.java b/domain/src/main/java/com/example/movie/entity/movie/Grade.java similarity index 68% rename from module-domain/src/main/java/com/example/entity/movie/Grade.java rename to domain/src/main/java/com/example/movie/entity/movie/Grade.java index ddf2caa19..b437d10c7 100644 --- a/module-domain/src/main/java/com/example/entity/movie/Grade.java +++ b/domain/src/main/java/com/example/movie/entity/movie/Grade.java @@ -1,4 +1,4 @@ -package com.example.entity.movie; +package com.example.movie.entity.movie; public enum Grade { ALL_AGE, FROM_12_AGE, FROM_15_AGE, FROM_19_AGE, RESTRICTED diff --git a/module-domain/src/main/java/com/example/entity/movie/Movie.java b/domain/src/main/java/com/example/movie/entity/movie/Movie.java similarity index 85% rename from module-domain/src/main/java/com/example/entity/movie/Movie.java rename to domain/src/main/java/com/example/movie/entity/movie/Movie.java index bae444bd1..bbfcec42d 100644 --- a/module-domain/src/main/java/com/example/entity/movie/Movie.java +++ b/domain/src/main/java/com/example/movie/entity/movie/Movie.java @@ -1,6 +1,6 @@ -package com.example.entity.movie; +package com.example.movie.entity.movie; -import com.example.entity.BaseEntity; +import com.example.BaseEntity; import jakarta.persistence.*; import java.time.LocalDate; diff --git a/module-domain/src/main/java/com/example/entity/movie/Screening.java b/domain/src/main/java/com/example/movie/entity/movie/Screening.java similarity index 72% rename from module-domain/src/main/java/com/example/entity/movie/Screening.java rename to domain/src/main/java/com/example/movie/entity/movie/Screening.java index 08ab0a850..4f86c8c26 100644 --- a/module-domain/src/main/java/com/example/entity/movie/Screening.java +++ b/domain/src/main/java/com/example/movie/entity/movie/Screening.java @@ -1,6 +1,6 @@ -package com.example.entity.movie; +package com.example.movie.entity.movie; -import com.example.entity.BaseEntity; +import com.example.BaseEntity; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; @@ -19,8 +19,8 @@ public class Screening extends BaseEntity { private Long theaterId; - private LocalDateTime startTime; + private LocalDateTime startAt; - private LocalDateTime endTime; + private LocalDateTime endAt; } diff --git a/module-domain/src/main/java/com/example/entity/reservation/Seat.java b/domain/src/main/java/com/example/movie/entity/theater/Seat.java similarity index 62% rename from module-domain/src/main/java/com/example/entity/reservation/Seat.java rename to domain/src/main/java/com/example/movie/entity/theater/Seat.java index 251c45ba1..fb6c088e3 100644 --- a/module-domain/src/main/java/com/example/entity/reservation/Seat.java +++ b/domain/src/main/java/com/example/movie/entity/theater/Seat.java @@ -1,14 +1,12 @@ -package com.example.entity.reservation; +package com.example.movie.entity.theater; -import com.example.entity.BaseEntity; +import com.example.BaseEntity; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import org.springframework.lang.Nullable; -import java.time.LocalDateTime; - @Entity public class Seat extends BaseEntity { @@ -21,11 +19,6 @@ public class Seat extends BaseEntity { @Nullable private Long userId; - private char seatRow; - - private Long seatCol; - - private Boolean isReservation; + private String position; - private LocalDateTime reservationTime; } diff --git a/module-domain/src/main/java/com/example/entity/movie/Theater.java b/domain/src/main/java/com/example/movie/entity/theater/Theater.java similarity index 81% rename from module-domain/src/main/java/com/example/entity/movie/Theater.java rename to domain/src/main/java/com/example/movie/entity/theater/Theater.java index 8989c777e..b40c39429 100644 --- a/module-domain/src/main/java/com/example/entity/movie/Theater.java +++ b/domain/src/main/java/com/example/movie/entity/theater/Theater.java @@ -1,6 +1,6 @@ -package com.example.entity.movie; +package com.example.movie.entity.theater; -import com.example.entity.BaseEntity; +import com.example.BaseEntity; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; diff --git a/domain/src/main/java/com/example/movie/repository/MovieRepository.java b/domain/src/main/java/com/example/movie/repository/MovieRepository.java new file mode 100644 index 000000000..c4c1b592c --- /dev/null +++ b/domain/src/main/java/com/example/movie/repository/MovieRepository.java @@ -0,0 +1,21 @@ +package com.example.movie.repository; + +import com.example.movie.entity.movie.Movie; +import com.example.movie.repository.dto.MoviesNowShowingDetailDto; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.time.LocalDateTime; +import java.util.List; + +public interface MovieRepository extends JpaRepository { + + @Query("SELECT new com.example.movie.repository.dto.MoviesNowShowingDetailDto(m.id, m.name, m.grade, m.releaseDate, m.thumbnail, m.runningTime, m.genre, " + + "t.id, t.name, s.startAt, s.endAt) " + + "FROM Movie m " + + "JOIN Screening s ON m.id = s.movieId " + + "JOIN Theater t ON s.theaterId = t.id " + + "WHERE s.startAt >= :now") + List findNowShowing(LocalDateTime now); + +} diff --git a/module-infra/src/main/java/com/example/movie/dto/MoviesNowShowingDbDto.java b/domain/src/main/java/com/example/movie/repository/dto/MoviesNowShowingDetailDto.java similarity index 54% rename from module-infra/src/main/java/com/example/movie/dto/MoviesNowShowingDbDto.java rename to domain/src/main/java/com/example/movie/repository/dto/MoviesNowShowingDetailDto.java index 289061fdb..eb9a386e4 100644 --- a/module-infra/src/main/java/com/example/movie/dto/MoviesNowShowingDbDto.java +++ b/domain/src/main/java/com/example/movie/repository/dto/MoviesNowShowingDetailDto.java @@ -1,7 +1,7 @@ -package com.example.movie.dto; +package com.example.movie.repository.dto; -import com.example.entity.movie.Genre; -import com.example.entity.movie.Grade; +import com.example.movie.entity.movie.Genre; +import com.example.movie.entity.movie.Grade; import lombok.AllArgsConstructor; import lombok.Getter; @@ -10,14 +10,16 @@ @Getter @AllArgsConstructor -public class MoviesNowShowingDbDto { +public class MoviesNowShowingDetailDto { + private Long movieId; private String movieName; private Grade grade; private LocalDate releaseDate; private String thumbnail; private Long runningTime; private Genre genre; + private Long theaterId; private String theaterName; - private LocalDateTime startTime; - private LocalDateTime endTime; + private LocalDateTime startAt; + private LocalDateTime endAt; } diff --git a/domain/src/main/java/com/example/reservation/entity/Reservation.java b/domain/src/main/java/com/example/reservation/entity/Reservation.java new file mode 100644 index 000000000..75f202472 --- /dev/null +++ b/domain/src/main/java/com/example/reservation/entity/Reservation.java @@ -0,0 +1,24 @@ +package com.example.reservation.entity; + +import com.example.BaseEntity; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; + +import java.time.LocalDateTime; + +@Entity +public class Reservation extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Long seatId; + + private Long userId; + + private LocalDateTime reserveAt; + +} diff --git a/module-domain/src/main/java/com/example/entity/user/User.java b/domain/src/main/java/com/example/user/entity/User.java similarity index 81% rename from module-domain/src/main/java/com/example/entity/user/User.java rename to domain/src/main/java/com/example/user/entity/User.java index 457f402fb..a1fe29b21 100644 --- a/module-domain/src/main/java/com/example/entity/user/User.java +++ b/domain/src/main/java/com/example/user/entity/User.java @@ -1,6 +1,6 @@ -package com.example.entity.user; +package com.example.user.entity; -import com.example.entity.BaseEntity; +import com.example.BaseEntity; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; diff --git a/module-infra/src/main/resources/application.yml b/domain/src/main/resources/application.yml similarity index 68% rename from module-infra/src/main/resources/application.yml rename to domain/src/main/resources/application.yml index ba5034055..7f70d8eab 100644 --- a/module-infra/src/main/resources/application.yml +++ b/domain/src/main/resources/application.yml @@ -4,14 +4,16 @@ spring: username: root password: 1234 driver-class-name: com.mysql.cj.jdbc.Driver - sql: - init: - platform: mysql - mode: always jpa: + defer-datasource-initialization: true hibernate: - ddl-auto: update + ddl-auto: create-drop properties: hibernate: format_sql: true - show_sql: true \ No newline at end of file + show_sql: true + sql: + init: + data-locations: classpath:data.sql + platform: mysql + mode: always diff --git a/domain/src/main/resources/data.sql b/domain/src/main/resources/data.sql new file mode 100644 index 000000000..77ead99c4 --- /dev/null +++ b/domain/src/main/resources/data.sql @@ -0,0 +1,62 @@ +-- Clear existing data +DELETE FROM screening; +DELETE FROM movie; +DELETE FROM theater; + +-- Theater Data +INSERT INTO theater (id, name, create_at, modify_at) +VALUES + (1, '상영관 1관', NOW(), NOW()), + (2, '상영관 2관', NOW(), NOW()), + (3, '상영관 3관', NOW(), NOW()), + (4, '상영관 4관', NOW(), NOW()), + (5, '상영관 5관', NOW(), NOW()), + (6, '상영관 6관', NOW(), NOW()), + (7, '상영관 7관', NOW(), NOW()), + (8, '상영관 8관', NOW(), NOW()), + (9, '상영관 9관', NOW(), NOW()), + (10, '상영관 10관', NOW(), NOW()); + +-- Movie Data +INSERT INTO movie (id, name, thumbnail, genre, grade, release_date, running_time, create_at, modify_at) +VALUES + (1, '범죄도시', NULL, 'ACTION', 'FROM_15_AGE', DATE_ADD(CURRENT_DATE, INTERVAL -30 DAY), 120, NOW(), NOW()), --2달 전 개봉 + (2, '파일럿', NULL, 'SF', 'FROM_12_AGE', DATE_ADD(CURRENT_DATE, INTERVAL -15 DAY), 135, NOW(), NOW()), --15일 전 개봉 + (3, '기생충', NULL, 'ROMANCE', 'FROM_15_AGE', DATE_ADD(CURRENT_DATE, INTERVAL -10 DAY), 132, NOW(), NOW()), --10일 전 개봉 + (4, '인셉션', NULL, 'SF', 'FROM_15_AGE', DATE_ADD(CURRENT_DATE, INTERVAL -100 DAY), 148, NOW(), NOW()), --3달 전 개봉 + (5, '어벤져스: 엔드게임', NULL, 'ACTION', 'FROM_12_AGE', DATE_ADD(CURRENT_DATE, INTERVAL +100 DAY), 181, NOW(), NOW()); --3달 후 개봉 + +-- Screening Data +-- 범죄도시 상영 스케줄 (종료) +INSERT INTO screening (id, movie_id, theater_id, start_at, end_at, create_at, modify_at) +VALUES + (1, 1, 1, DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -30 DAY), INTERVAL 12 HOUR), DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -30 DAY), INTERVAL 14 HOUR), NOW(), NOW()), + (2, 1, 2, DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -30 DAY), INTERVAL 14 HOUR), DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -30 DAY), INTERVAL 16 HOUR), NOW(), NOW()), + (3, 1, 3, DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -30 DAY), INTERVAL 15 HOUR ), DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -30 DAY), INTERVAL 17 HOUR), NOW(), NOW()), + (4, 1, 4, DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -30 DAY), INTERVAL 17 HOUR), DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -30 DAY), INTERVAL 19 HOUR), NOW(), NOW()), + (5, 1, 5, DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -30 DAY), INTERVAL 36 HOUR), DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -30 DAY), INTERVAL 38 HOUR), NOW(), NOW()); + +-- 파일럿 상영 스케줄 (진행) +INSERT INTO screening (id, movie_id, theater_id, start_at, end_at, create_at, modify_at) +VALUES + (6, 2, 2, DATE_ADD(CURRENT_DATE, INTERVAL -12 HOUR), DATE_ADD(CURRENT_DATE, INTERVAL -10 HOUR), NOW(), NOW()), + (7, 2, 3, DATE_ADD(CURRENT_DATE, INTERVAL 14 HOUR), DATE_ADD(CURRENT_DATE, INTERVAL 16 HOUR), NOW(), NOW()), + (8, 2, 4, DATE_ADD(CURRENT_DATE, INTERVAL 15 HOUR), DATE_ADD(CURRENT_DATE, INTERVAL 17 HOUR), NOW(), NOW()), + (9, 2, 5, DATE_ADD(CURRENT_DATE, INTERVAL 17 HOUR), DATE_ADD(CURRENT_DATE, INTERVAL 19 HOUR), NOW(), NOW()), + (10, 2, 6, DATE_ADD(CURRENT_DATE, INTERVAL 36 HOUR), DATE_ADD(CURRENT_DATE, INTERVAL 38 HOUR), NOW(), NOW()); + +-- 기생충 상영 스케줄 (진행) +INSERT INTO screening (id, movie_id, theater_id, start_at, end_at, create_at, modify_at) +VALUES + (11, 3, 3, DATE_ADD(CURRENT_DATE, INTERVAL -10 HOUR), DATE_ADD(CURRENT_DATE, INTERVAL -8 HOUR), NOW(), NOW()), + (12, 3, 4, DATE_ADD(CURRENT_DATE, INTERVAL 13 HOUR), DATE_ADD(CURRENT_DATE, INTERVAL 15 HOUR), NOW(), NOW()), + (13, 3, 5, DATE_ADD(CURRENT_DATE, INTERVAL 14 HOUR), DATE_ADD(CURRENT_DATE, INTERVAL 16 HOUR), NOW(), NOW()), + (14, 3, 6, DATE_ADD(CURRENT_DATE, INTERVAL 18 HOUR), DATE_ADD(CURRENT_DATE, INTERVAL 20 HOUR), NOW(), NOW()), + (15, 3, 7, DATE_ADD(CURRENT_DATE, INTERVAL 20 HOUR), DATE_ADD(CURRENT_DATE, INTERVAL 22 HOUR), NOW(), NOW()); + +-- 인셉션 상영 스케줄 (종료) +INSERT INTO screening (id, movie_id, theater_id, start_at, end_at, create_at, modify_at) +VALUES + (16, 4, 4, DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -100 DAY), INTERVAL 10 HOUR), DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -100 DAY), INTERVAL 12 HOUR), NOW(), NOW()), + (17, 4, 5, DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -100 DAY), INTERVAL 13 HOUR), DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -100 DAY), INTERVAL 15 HOUR), NOW(), NOW()), + (18, 4, 6, DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -100 DAY), INTERVAL 14 HOUR), DATE_ADD(DATE_ADD(CURRENT_DATE, INTERVAL -100 DAY), INTERVAL 16 HOUR), NOW(), NOW()); \ No newline at end of file diff --git a/module-application/build.gradle b/module-application/build.gradle deleted file mode 100644 index a3b535e38..000000000 --- a/module-application/build.gradle +++ /dev/null @@ -1,9 +0,0 @@ -bootJar.enabled = false - -jar.enabled = true - -dependencies { - implementation project(':module-core') - implementation project(':module-domain') - implementation project(':module-infra') -} \ No newline at end of file diff --git a/module-application/src/main/java/com/example/movie/MovieService.java b/module-application/src/main/java/com/example/movie/MovieService.java deleted file mode 100644 index 57b2477c6..000000000 --- a/module-application/src/main/java/com/example/movie/MovieService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.example.movie; - -import com.example.movie.convertor.DtoConvertor; -import com.example.movie.dto.MoviesNowShowingDbDto; -import com.example.movie.response.MoviesNowShowingDetail; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -import java.time.LocalDate; -import java.util.Comparator; -import java.util.List; - -@Service -@RequiredArgsConstructor -public class MovieService { - - private final MovieRepository movieRepository; - private DtoConvertor dtoConvertor = new DtoConvertor(); - - public List getNowShowingMovies() { - List dbResults = movieRepository.findNowShowing(LocalDate.now()); - List detailsList = dtoConvertor.moviesNowScreening(dbResults); - - return detailsList.stream() - .sorted(Comparator.comparing(MoviesNowShowingDetail::releaseDate)) - .toList(); - } - -} diff --git a/module-application/src/main/java/com/example/movie/response/ScreeningsDetail.java b/module-application/src/main/java/com/example/movie/response/ScreeningsDetail.java deleted file mode 100644 index d4fcb27de..000000000 --- a/module-application/src/main/java/com/example/movie/response/ScreeningsDetail.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.example.movie.response; - -import java.util.List; - -public record ScreeningsDetail ( - String theater, - ListscreeningTime -) { -} diff --git a/module-core/build.gradle b/module-core/build.gradle deleted file mode 100644 index 95822db08..000000000 --- a/module-core/build.gradle +++ /dev/null @@ -1,12 +0,0 @@ -bootJar.enabled = false - -jar.enabled = true - -dependencies { - implementation "com.fasterxml.jackson.core:jackson-core:2.9.9" - implementation "com.fasterxml.jackson.core:jackson-annotations:2.9.9" - implementation "com.fasterxml.jackson.core:jackson-databind:2.9.9" - implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.9" - - implementation 'org.springframework.boot:spring-boot-starter-web' -} \ No newline at end of file diff --git a/module-domain/build.gradle b/module-domain/build.gradle deleted file mode 100644 index e48cbdcd5..000000000 --- a/module-domain/build.gradle +++ /dev/null @@ -1,8 +0,0 @@ -bootJar.enabled = false - -jar.enabled = true - -dependencies { - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation project(':module-core') -} \ No newline at end of file diff --git a/module-domain/src/main/java/com/example/entity/movie/Genre.java b/module-domain/src/main/java/com/example/entity/movie/Genre.java deleted file mode 100644 index b7fbddcb9..000000000 --- a/module-domain/src/main/java/com/example/entity/movie/Genre.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.example.entity.movie; - -public enum Genre { - 액션, 로맨스, 호러, SF -} diff --git a/module-infra/src/main/java/com/example/movie/MovieRepository.java b/module-infra/src/main/java/com/example/movie/MovieRepository.java deleted file mode 100644 index 1682e3396..000000000 --- a/module-infra/src/main/java/com/example/movie/MovieRepository.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.example.movie; - -import com.example.entity.movie.Movie; -import com.example.movie.dto.*; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; - -import java.time.LocalDate; -import java.util.List; - -public interface MovieRepository extends JpaRepository { - - @Query("SELECT new com.example.movie.dto.MoviesNowShowingDbDto(m.name, m.grade, m.releaseDate, m.thumbnail, m.runningTime, m.genre, " + - " t.name, s.startTime, s.endTime ) " + - "FROM Movie m " + - "JOIN Screening s ON m.id = s.movieId " + - "JOIN Theater t ON s.theaterId = t.id " + - "WHERE s.startTime >= CURRENT_DATE " ) - List findNowShowing(LocalDate today); - -} diff --git a/module-presentation/build.gradle b/module-presentation/build.gradle deleted file mode 100644 index 0635537df..000000000 --- a/module-presentation/build.gradle +++ /dev/null @@ -1,12 +0,0 @@ -bootJar.enabled = false - -jar.enabled = true - -dependencies { - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.springframework.boot:spring-boot-starter-web' - implementation project(':module-core') - implementation project(':module-infra') - implementation project(':module-domain') - implementation project(':module-application') -} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index d77873a3f..ce5f41f3b 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,7 +1,4 @@ rootProject.name = 'multi-modules' -include 'module-presentation' -include 'module-application' -include 'module-domain' -include 'module-infra' -include 'module-core' +include 'api' +include 'domain' From 2a942b4a6bbff44db5dc31379e172c37e7a77f72 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Tue, 14 Jan 2025 16:49:09 +0900 Subject: [PATCH 3/4] =?UTF-8?q?doc:=20README=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 27 ++++++++++++++++++--------- img_1.png | Bin 0 -> 123972 bytes img_2.png | Bin 0 -> 123972 bytes 3 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 img_1.png create mode 100644 img_2.png diff --git a/README.md b/README.md index 90147f919..c670fd809 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,30 @@ ## Multi Module Design Module을 나누는 기준은 여러 개가 있지만, 이번 프로젝트에서는 Layered Architecture 에서 설명되는 Layer 별로 구분하였습니다. -- module-presentation: 사용자의 요청을 받고, 응답한다. -- module-application: 사용자가 요청한 기능을 처리한다. -- module-domain: 시스템이 제공할 도메인 규칙을 구현한다. -- module-infra: 데이터베이스 같은 외부 시스템과의 연동을 처리한다. -- module-core: Convertor, Error-Response 와 같이 특정 layer에 종속되지 않는 기능을 처리한다. +- api: 사용자의 요청을 받고, 응답한다. + - 본래, presentation과 application 두 개의 모듈로 분리되어있던 구조를 수정하였습니다. + - 사용자의 요청을 받고 처리한다는 점에서, Error와 Response를 한 곳에서 관리하기 위함입니다. +- domain: 시스템이 제공할 도메인 규칙을 구현한다. +- infra: 외부 시스템과의 연동을 담당한다. +- 본래 존재하였던 core 모듈을 삭제하였습니다. + - 실제로 공통 역할이 아니지만 core(or common) 모듈에 패키지를 생성해서 정의하는 경우를 방지하기 위함입니다. + - 현재까지의 요구사항에서는 core 모듈에 들어갈 기능이 없다고 판단되었습니다. 각 module은 하위 module에만 의존합니다.
-JPA에서 다른 기술로 변경될 것이라고 생각하여 DIP를 적용하는 것은 오버 엔지니어링이라고 생각되어, JPA 기술에 종속되지 않는 POJO 객체들을 생성하지 않고, 도메인 계층에 infra 계층에 종속되는 코드로 구현하였습니다. (@Entity 클래스, JpaRepository 등) +JPA 를 다른 ORM 으로 변경될 가능성은 낮다고 판단하여 PA 는 생산성을 위해서 Entity 와 Repository 를 Domain 으로 끌어 올려 사용하였습니다. +JPA 를 제외한 나머지는 저수준의 변경사항으로 부터 고수준을 지키는 방식을 사용합니다. ## Table Design -![img.png](img.png) +![img_2.png](img_2.png) - Movie 테이블과 Theater 테이블은 N:N 관계로 중간에 Screening 테이블을 두고 있습니다. - Theater 별로 시간표가 구분되는 것을 고려하여 Screening 테이블은 상영 시간표 정보를 포함하고 있습니다. - 좌석별 등급 등 좌석 개별의 특성이 추가될 수 있다고 생각하여 Seat 테이블을 생성하였습니다. - Theater 테이블과 Seat 테이블은 1:N 관계입니다. -- Seat 테이블과 User 테이블은 1:N 관계입니다. +- Seat 테이블과 Reservation 테이블은 1:1 관계입니다. + - 공유 자원인 Seat과 행위인 Reservation을 분리하기 위함입니다. +- Reservation 테이블과 User 테이블은 1:1 관계입니다. ## N+1 문제 해결 -저는 N+1 문제가 ID 참조을 사용하기 때문이라고 생각합니다. 따라서 해당 프로젝트에 간접참조를 사용하여, N+1 문제를 해결하고자 합니다. 뿐만 아니라, 간접 참조를 사용하면 도메인 간 물리적인 연결을 제거하기 때문에 도메인 간 의존을 강제적으로 제거합니다. \ No newline at end of file +저는 N+1 문제가 ID 참조을 사용하기 때문이라고 생각합니다. 따라서 해당 프로젝트에 간접참조를 사용하여, N+1 문제를 해결하고자 합니다. +뿐만 아니라, 간접 참조를 사용하면 도메인 간 물리적인 연결을 제거하기 때문에 도메인 간 의존을 강제적으로 제거되고, FK의 데이터 정합성을 따지기 위한 성능 오버헤드를 줄이며, 데이터 수정 시의 작업 순서가 강제됨에 따라 발생하는 더 큰 수정 개발을 방지할 수 있습니다. + +대신, 애플리케이션 단에서 무결성 관리를 관리하도록 합니다. (삽입/수정/삭제) \ No newline at end of file diff --git a/img_1.png b/img_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f3ed88f358e5941487cda94cfe26d4f873e38358 GIT binary patch literal 123972 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ⅅ3#DGW0C9(wp_&6WY4|qn0P1CLEU>=R>urXx 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ⅅ3#DGW0C9(wp_&6WY4|qn0P1CLEU>=R>urXx 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 Date: Wed, 15 Jan 2025 20:00:39 +0900 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20=EA=B2=80=EC=83=89=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=EC=9D=84=20=ED=8F=AC=ED=95=A8=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20controller=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=BD=94=EB=93=9C=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/service/MovieService.java | 8 +-- .../controller/MovieController.java | 9 ++- .../application/service/MovieServiceTest.java | 17 ++++++ .../controller/MovieControllerTest.java | 32 +++++++++++ api/src/test/resources/application.yml | 33 +++++++++++ api/src/test/resources/data.sql | 57 +++++++++++++++++++ build.gradle | 7 ++- domain/src/test/resources/application.yml | 33 +++++++++++ domain/src/test/resources/data.sql | 57 +++++++++++++++++++ 9 files changed, 245 insertions(+), 8 deletions(-) create mode 100644 api/src/test/java/com/example/movie/application/service/MovieServiceTest.java create mode 100644 api/src/test/java/com/example/movie/presentation/controller/MovieControllerTest.java create mode 100644 api/src/test/resources/application.yml create mode 100644 api/src/test/resources/data.sql create mode 100644 domain/src/test/resources/application.yml create mode 100644 domain/src/test/resources/data.sql diff --git a/api/src/main/java/com/example/movie/application/service/MovieService.java b/api/src/main/java/com/example/movie/application/service/MovieService.java index c42d468e4..3f05d825a 100644 --- a/api/src/main/java/com/example/movie/application/service/MovieService.java +++ b/api/src/main/java/com/example/movie/application/service/MovieService.java @@ -1,13 +1,13 @@ package com.example.movie.application.service; -import com.example.movie.repository.MovieRepository; import com.example.movie.application.convertor.DtoConvertor; -import com.example.movie.repository.dto.MoviesNowShowingDetailDto; import com.example.movie.application.dto.MoviesNowShowingDetail; +import com.example.movie.entity.movie.Genre; +import com.example.movie.repository.MovieRepository; +import com.example.movie.repository.dto.MoviesNowShowingDetailDto; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Comparator; import java.util.List; @@ -19,7 +19,7 @@ public class MovieService { private final MovieRepository movieRepository; private final DtoConvertor dtoConvertor; - public List getNowShowingMovies(LocalDateTime now) { + public List getMoviesNowShowing(LocalDateTime now, Genre genre, String search) { List dbResults = movieRepository.findNowShowing(now); List detailsList = dtoConvertor.moviesNowScreening(dbResults); diff --git a/api/src/main/java/com/example/movie/presentation/controller/MovieController.java b/api/src/main/java/com/example/movie/presentation/controller/MovieController.java index 3bb123f81..6361b05bc 100644 --- a/api/src/main/java/com/example/movie/presentation/controller/MovieController.java +++ b/api/src/main/java/com/example/movie/presentation/controller/MovieController.java @@ -2,9 +2,11 @@ import com.example.movie.application.dto.MoviesNowShowingDetail; import com.example.movie.application.service.MovieService; +import com.example.movie.entity.movie.Genre; import com.example.response.BaseResponse; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.time.LocalDateTime; @@ -17,8 +19,11 @@ public class MovieController { private final MovieService movieService; @GetMapping("/v1/movies/now-showing") - public BaseResponse> getMoviesNowShowing() { - List response = movieService.getNowShowingMovies(LocalDateTime.now()); + public BaseResponse> getMoviesNowShowing( + @RequestParam(value = "genre", required = false)Genre genre, + @RequestParam(value = "search", required = false)String search + ) { + List response = movieService.getMoviesNowShowing(LocalDateTime.now(), genre, search); return new BaseResponse<>(response); } diff --git a/api/src/test/java/com/example/movie/application/service/MovieServiceTest.java b/api/src/test/java/com/example/movie/application/service/MovieServiceTest.java new file mode 100644 index 000000000..4e64034f1 --- /dev/null +++ b/api/src/test/java/com/example/movie/application/service/MovieServiceTest.java @@ -0,0 +1,17 @@ +package com.example.movie.application.service; + +import com.example.movie.repository.MovieRepository; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.bean.override.mockito.MockitoBean; + +@SpringBootTest +class MovieServiceTest { + @MockitoBean + private MovieRepository movieRepository; + + @Test + public void 테스트(){ + + } +} \ No newline at end of file diff --git a/api/src/test/java/com/example/movie/presentation/controller/MovieControllerTest.java b/api/src/test/java/com/example/movie/presentation/controller/MovieControllerTest.java new file mode 100644 index 000000000..1a1189506 --- /dev/null +++ b/api/src/test/java/com/example/movie/presentation/controller/MovieControllerTest.java @@ -0,0 +1,32 @@ +package com.example.movie.presentation.controller; + +import com.example.movie.application.service.MovieService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.http.MediaType; +import org.springframework.test.context.bean.override.mockito.MockitoBean; +import org.springframework.test.web.servlet.MockMvc; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@WebMvcTest(controllers = MovieController.class) +class MovieControllerTest { + + @Autowired + private MockMvc mockMvc; + @MockitoBean + private MovieService movieService; + + @Test + @DisplayName("장르 필터링 시 Enum 값이 아니면 예외가 발생한다.") + void 장르필터링_예외() throws Exception { + mockMvc.perform(get("/v1/movies/now-showing") + .param("genre","weirdInput") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isBadRequest()); + } + +} \ No newline at end of file diff --git a/api/src/test/resources/application.yml b/api/src/test/resources/application.yml new file mode 100644 index 000000000..7967e2b81 --- /dev/null +++ b/api/src/test/resources/application.yml @@ -0,0 +1,33 @@ +spring: + profiles: + active: test + +--- + +spring: + datasource: + url: jdbc:h2:mem:db;MODE=MYSQL + username: sa + password: + driver-class-name: org.h2.Driver + h2: + console: + enabled: true + path: /h2-console + jpa: + defer-datasource-initialization: true + database-platform: org.hibernate.dialect.H2Dialect + hibernate: + ddl-auto: create-drop + properties: + hibernate: + format_sql: true + generate-ddl: true + sql: + init: + data-locations: classpath:data.sql + mode: always + +logging: + level: + org.hibernate.SQL: debug \ No newline at end of file diff --git a/api/src/test/resources/data.sql b/api/src/test/resources/data.sql new file mode 100644 index 000000000..dfe5d6556 --- /dev/null +++ b/api/src/test/resources/data.sql @@ -0,0 +1,57 @@ +-- Theater Data +INSERT INTO theater (id, name, create_at, modify_at) +VALUES + (1, '상영관 1관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (2, '상영관 2관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (3, '상영관 3관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (4, '상영관 4관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (5, '상영관 5관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (6, '상영관 6관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (7, '상영관 7관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (8, '상영관 8관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (9, '상영관 9관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (10, '상영관 10관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()); + +-- Movie Data +INSERT INTO movie (id, name, thumbnail, genre, grade, release_date, running_time, create_at, modify_at) +VALUES + (1, '범죄도시', NULL, 'ACTION', 'FROM_15_AGE', DATEADD('DAY', -30, CURRENT_DATE()), 120, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), --30일 전 개봉 + (2, '파일럿', NULL, 'SF', 'FROM_12_AGE', DATEADD('DAY', -15, CURRENT_DATE()), 135, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), --15일 전 개봉 + (3, '기생충', NULL, 'ROMANCE', 'FROM_15_AGE', DATEADD('DAY', -10, CURRENT_DATE()), 132, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), --10일 전 개봉 + (4, '인셉션', NULL, 'SF', 'FROM_15_AGE', DATEADD('DAY', -100, CURRENT_DATE()), 148, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), --100일 전 개봉 + (5, '어벤져스: 엔드게임', NULL, 'ACTION', 'FROM_12_AGE', DATEADD('DAY', 100, CURRENT_DATE()), 181, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()); --100일 후 개봉 + +-- Screening Data +-- 범죄도시 상영 스케줄 (종료) +INSERT INTO screening (id, movie_id, theater_id, start_at, end_at, create_at, modify_at) +VALUES + (1, 1, 1, TIMESTAMPADD(HOUR, 12, DATEADD('DAY', -30, CURRENT_DATE())), TIMESTAMPADD(HOUR, 14, DATEADD('DAY', -30, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (2, 1, 2, TIMESTAMPADD(HOUR, 14, DATEADD('DAY', -30, CURRENT_DATE())), TIMESTAMPADD(HOUR, 16, DATEADD('DAY', -30, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (3, 1, 3, TIMESTAMPADD(HOUR, 15, DATEADD('DAY', -30, CURRENT_DATE())), TIMESTAMPADD(HOUR, 17, DATEADD('DAY', -30, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (4, 1, 4, TIMESTAMPADD(HOUR, 17, DATEADD('DAY', -30, CURRENT_DATE())), TIMESTAMPADD(HOUR, 19, DATEADD('DAY', -30, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (5, 1, 5, TIMESTAMPADD(HOUR, 36, DATEADD('DAY', -30, CURRENT_DATE())), TIMESTAMPADD(HOUR, 38, DATEADD('DAY', -30, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()); + +-- 파일럿 상영 스케줄 (진행) +INSERT INTO screening (id, movie_id, theater_id, start_at, end_at, create_at, modify_at) +VALUES + (6, 2, 2, TIMESTAMPADD(HOUR, -12, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, -10, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (7, 2, 3, TIMESTAMPADD(HOUR, 14, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 16, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (8, 2, 4, TIMESTAMPADD(HOUR, 15, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 17, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (9, 2, 5, TIMESTAMPADD(HOUR, 17, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 19, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (10, 2, 6, TIMESTAMPADD(HOUR, 36, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 38, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()); + +-- 기생충 상영 스케줄 (진행) +INSERT INTO screening (id, movie_id, theater_id, start_at, end_at, create_at, modify_at) +VALUES + (11, 3, 3, TIMESTAMPADD(HOUR, -10, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, -8, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (12, 3, 4, TIMESTAMPADD(HOUR, 13, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 15, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (13, 3, 5, TIMESTAMPADD(HOUR, 14, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 16, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (14, 3, 6, TIMESTAMPADD(HOUR, 18, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 20, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (15, 3, 7, TIMESTAMPADD(HOUR, 20, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 22, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()); + +-- 인셉션 상영 스케줄 (종료) +INSERT INTO screening (id, movie_id, theater_id, start_at, end_at, create_at, modify_at) +VALUES + (16, 4, 4, TIMESTAMPADD(HOUR, 10, DATEADD('DAY', -100, CURRENT_DATE())), TIMESTAMPADD(HOUR, 12, DATEADD('DAY', -100, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (17, 4, 5, TIMESTAMPADD(HOUR, 13, DATEADD('DAY', -100, CURRENT_DATE())), TIMESTAMPADD(HOUR, 15, DATEADD('DAY', -100, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (18, 4, 6, TIMESTAMPADD(HOUR, 14, DATEADD('DAY', -100, CURRENT_DATE())), TIMESTAMPADD(HOUR, 16, DATEADD('DAY', -100, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()); diff --git a/build.gradle b/build.gradle index 999a5a291..0dce6d3f4 100644 --- a/build.gradle +++ b/build.gradle @@ -34,8 +34,11 @@ subprojects { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' + testImplementation 'com.h2database:h2' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' + testImplementation 'org.junit.jupiter:junit-jupiter:5.7.1' + testImplementation "org.testcontainers:testcontainers:1.19.0" + testImplementation "org.testcontainers:junit-jupiter:1.19.0" } test { diff --git a/domain/src/test/resources/application.yml b/domain/src/test/resources/application.yml new file mode 100644 index 000000000..7967e2b81 --- /dev/null +++ b/domain/src/test/resources/application.yml @@ -0,0 +1,33 @@ +spring: + profiles: + active: test + +--- + +spring: + datasource: + url: jdbc:h2:mem:db;MODE=MYSQL + username: sa + password: + driver-class-name: org.h2.Driver + h2: + console: + enabled: true + path: /h2-console + jpa: + defer-datasource-initialization: true + database-platform: org.hibernate.dialect.H2Dialect + hibernate: + ddl-auto: create-drop + properties: + hibernate: + format_sql: true + generate-ddl: true + sql: + init: + data-locations: classpath:data.sql + mode: always + +logging: + level: + org.hibernate.SQL: debug \ No newline at end of file diff --git a/domain/src/test/resources/data.sql b/domain/src/test/resources/data.sql new file mode 100644 index 000000000..dfe5d6556 --- /dev/null +++ b/domain/src/test/resources/data.sql @@ -0,0 +1,57 @@ +-- Theater Data +INSERT INTO theater (id, name, create_at, modify_at) +VALUES + (1, '상영관 1관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (2, '상영관 2관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (3, '상영관 3관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (4, '상영관 4관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (5, '상영관 5관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (6, '상영관 6관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (7, '상영관 7관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (8, '상영관 8관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (9, '상영관 9관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (10, '상영관 10관', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()); + +-- Movie Data +INSERT INTO movie (id, name, thumbnail, genre, grade, release_date, running_time, create_at, modify_at) +VALUES + (1, '범죄도시', NULL, 'ACTION', 'FROM_15_AGE', DATEADD('DAY', -30, CURRENT_DATE()), 120, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), --30일 전 개봉 + (2, '파일럿', NULL, 'SF', 'FROM_12_AGE', DATEADD('DAY', -15, CURRENT_DATE()), 135, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), --15일 전 개봉 + (3, '기생충', NULL, 'ROMANCE', 'FROM_15_AGE', DATEADD('DAY', -10, CURRENT_DATE()), 132, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), --10일 전 개봉 + (4, '인셉션', NULL, 'SF', 'FROM_15_AGE', DATEADD('DAY', -100, CURRENT_DATE()), 148, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), --100일 전 개봉 + (5, '어벤져스: 엔드게임', NULL, 'ACTION', 'FROM_12_AGE', DATEADD('DAY', 100, CURRENT_DATE()), 181, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()); --100일 후 개봉 + +-- Screening Data +-- 범죄도시 상영 스케줄 (종료) +INSERT INTO screening (id, movie_id, theater_id, start_at, end_at, create_at, modify_at) +VALUES + (1, 1, 1, TIMESTAMPADD(HOUR, 12, DATEADD('DAY', -30, CURRENT_DATE())), TIMESTAMPADD(HOUR, 14, DATEADD('DAY', -30, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (2, 1, 2, TIMESTAMPADD(HOUR, 14, DATEADD('DAY', -30, CURRENT_DATE())), TIMESTAMPADD(HOUR, 16, DATEADD('DAY', -30, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (3, 1, 3, TIMESTAMPADD(HOUR, 15, DATEADD('DAY', -30, CURRENT_DATE())), TIMESTAMPADD(HOUR, 17, DATEADD('DAY', -30, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (4, 1, 4, TIMESTAMPADD(HOUR, 17, DATEADD('DAY', -30, CURRENT_DATE())), TIMESTAMPADD(HOUR, 19, DATEADD('DAY', -30, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (5, 1, 5, TIMESTAMPADD(HOUR, 36, DATEADD('DAY', -30, CURRENT_DATE())), TIMESTAMPADD(HOUR, 38, DATEADD('DAY', -30, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()); + +-- 파일럿 상영 스케줄 (진행) +INSERT INTO screening (id, movie_id, theater_id, start_at, end_at, create_at, modify_at) +VALUES + (6, 2, 2, TIMESTAMPADD(HOUR, -12, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, -10, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (7, 2, 3, TIMESTAMPADD(HOUR, 14, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 16, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (8, 2, 4, TIMESTAMPADD(HOUR, 15, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 17, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (9, 2, 5, TIMESTAMPADD(HOUR, 17, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 19, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (10, 2, 6, TIMESTAMPADD(HOUR, 36, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 38, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()); + +-- 기생충 상영 스케줄 (진행) +INSERT INTO screening (id, movie_id, theater_id, start_at, end_at, create_at, modify_at) +VALUES + (11, 3, 3, TIMESTAMPADD(HOUR, -10, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, -8, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (12, 3, 4, TIMESTAMPADD(HOUR, 13, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 15, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (13, 3, 5, TIMESTAMPADD(HOUR, 14, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 16, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (14, 3, 6, TIMESTAMPADD(HOUR, 18, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 20, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (15, 3, 7, TIMESTAMPADD(HOUR, 20, CURRENT_TIMESTAMP()), TIMESTAMPADD(HOUR, 22, CURRENT_TIMESTAMP()), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()); + +-- 인셉션 상영 스케줄 (종료) +INSERT INTO screening (id, movie_id, theater_id, start_at, end_at, create_at, modify_at) +VALUES + (16, 4, 4, TIMESTAMPADD(HOUR, 10, DATEADD('DAY', -100, CURRENT_DATE())), TIMESTAMPADD(HOUR, 12, DATEADD('DAY', -100, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (17, 4, 5, TIMESTAMPADD(HOUR, 13, DATEADD('DAY', -100, CURRENT_DATE())), TIMESTAMPADD(HOUR, 15, DATEADD('DAY', -100, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()), + (18, 4, 6, TIMESTAMPADD(HOUR, 14, DATEADD('DAY', -100, CURRENT_DATE())), TIMESTAMPADD(HOUR, 16, DATEADD('DAY', -100, CURRENT_DATE())), CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP());