Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
447a175
first commit
JiEunyoung Jan 8, 2025
bdce80f
refactor: apply multi-module
JiEunyoung Jan 9, 2025
7da42e3
chore: add docker-compose.yml and ddl.sql
JiEunyoung Jan 9, 2025
2d38082
chore: add application.yml
JiEunyoung Jan 9, 2025
f605ac5
chore: remove unused module dependencies
JiEunyoung Jan 9, 2025
a8852ed
feat: add module dependencies(for entity)
JiEunyoung Jan 9, 2025
389b0a5
feat: add movie related entities(module-movie)
JiEunyoung Jan 9, 2025
70dea4d
feat: add theater related entities(module-theater)
JiEunyoung Jan 9, 2025
2638a0a
feat: add screening entity(module-screenint)
JiEunyoung Jan 9, 2025
52ae9ce
feat: add screening repository(module-screenint)
JiEunyoung Jan 9, 2025
2e3162d
feat: add screening dto(module-screenint)
JiEunyoung Jan 9, 2025
732f015
feat: add screening service(module-screenint)
JiEunyoung Jan 9, 2025
dbd21ff
feat: add screening controller(module-screenint)
JiEunyoung Jan 9, 2025
fbe5d2b
chore: add dependencies
JiEunyoung Jan 9, 2025
64918b0
feat: update main class for controller
JiEunyoung Jan 9, 2025
883a139
feat: insert data
JiEunyoung Jan 9, 2025
5e0396e
feat: add auditing
JiEunyoung Jan 9, 2025
267b3d2
feat: add length constraint
JiEunyoung Jan 10, 2025
2cd585d
chore: remove unused dependencies
JiEunyoung Jan 10, 2025
f6a2e29
test: add api-test.http
JiEunyoung Jan 10, 2025
fc1cb98
chore: update data.sql
JiEunyoung Jan 10, 2025
582694c
chore: update docker-compose.yml for encoding
JiEunyoung Jan 10, 2025
572f7cd
chore: remove unique constraint
JiEunyoung Jan 12, 2025
529302a
refactor: change genre to ENUM type
sliverzero Jan 12, 2025
928a080
refactor: use static factory method in ScreeningDto
sliverzero Jan 12, 2025
0198abc
chore: remove duplicate module dependencies
sliverzero Jan 12, 2025
5637517
chore: remove duplicate module dependencies
sliverzero Jan 13, 2025
e4cb260
refactor: week1 refactor(add utf8mb4, module dependencies)
sliverzero Jan 14, 2025
e388cb8
fix: modify api response format
sliverzero Jan 15, 2025
40aa523
Update README.md
sliverzero Jan 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/gradlew text eol=lf
*.bat text eol=crlf
*.jar binary
37 changes: 37 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -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/
21 changes: 19 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
## [본 과정] 이커머스 핵심 프로세스 구현
[단기 스킬업 Redis 교육 과정](https://hh-skillup.oopy.io/) 을 통해 상품 조회 및 주문 과정을 구현하며 현업에서 발생하는 문제를 Redis의 핵심 기술을 통해 해결합니다.
> Indexing, Caching을 통한 성능 개선 / 단계별 락 구현을 통한 동시성 이슈 해결 (낙관적/비관적 락, 분산락 등)

### Multi Module
* module-movie: 영화와 관련된 작업을 합니다.
* module-theater: 상영관과 관련된 작업을 합니다.
* module-screening: 상영 정보와 관련된 작업을 합니다.
* module-common: Auditing 등 모든 모듈에 적용될 작업을 합니다.
* module-api: 현재 상영 중인 영화 조회 API 등 영화, 상영관, 상영 정보 외의 api와 관련된 작업을 합니다.

### Architecture
* Layered Architecture를 사용하여 계층별로 책임을 분리하여 진행했습니다.

### Table Design
![image](https://github.com/user-attachments/assets/b55c39d3-2488-40d9-a6ce-a60cfb507124)
* movie와 screening 관계
* 1:N 관계 -> 하나의 영화는 여러 상영 정보를 가집니다.
* theater과 screening 관계
* 1:N 관계 -> 하나의 상영관은 여러 상영 정보를 가집니다.
* theater과 seat 관계
* 1:N 관계 -> 하나의 상영관은 여러 개의 좌석을 갖습니다.
52 changes: 52 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.4.1'
id 'io.spring.dependency-management' version '1.1.7'
}

bootJar.enabled = false // 루트 모듈의 .jar 생성 X

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}

repositories {
mavenCentral()
}

subprojects { // 모든 하위 모듈들에 적용
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'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'mysql:mysql-connector-java:8.0.33'
}

tasks.named('test') {
useJUnitPlatform()
}
}
27 changes: 27 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
services:
mysql:
image: mysql:8.0
container_name: skillUp-redis-db
environment:
MYSQL_ROOT_PASSWORD: root1234 # MySQL 루트 비밀번호 설정
MYSQL_DATABASE: redisdb # 기본 데이터베이스 이름
MYSQL_USER: user # MySQL 사용자 이름
MYSQL_PASSWORD: user1234 # MySQL 사용자 비밀번호
ports:
- "3307:3306"
volumes:
- ./init-scripts:/docker-entrypoint-initdb.d # init-scripts 폴더를 MySQL 컨테이너의 초기화 스크립트 디렉토리로 매핑
command:
- --skip-character-set-client-handshake
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
networks:
- my-network

networks:
my-network:
driver: bridge

volumes:
mysql-data:
driver: local
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
7 changes: 7 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -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
Loading
Loading