Skip to content

Commit

Permalink
Deploy push: v0.0.1. (#34)
Browse files Browse the repository at this point in the history
* merge test - generate performancehallentity.kt

* feat: searchPerformance

* chore: 도커 컴포즈

dockerfile 작성해서 도커 이미지 잘 만들어지고 http 파일로 테스트까지
가능한 상태입니다

* modify searchPerformance

* add: docker-compose

* modify build.gradle.kts

* add wildcard import in UserService.kt

* change Performance attribute 'genre' to 'category'

* change category to ENUM Type

* add some Init Datas

* add some Init Datas

* assign posterimageURL

* add: Entity

엔티티 작업중

* assign posterimageURL

* add: SeatService

임시저장하겠습니다

* feat: SeatService

좌석 확인, 예매, 예매 취소 기능 구현
아직 동시성 처리 안됐습니다

* feat: Add Controller

컨트롤러 추가했습니다
곧 테스트 코드 추가해보겠습니다

* modify searchPerformance, GET요청은 RequestBody를 사용할 수 없다고 하여 다시 RequestParam을 사용하는 원래 방식으로 변경

* feat: SeatCreation

performanceHallId와 type을 받아 좌석엔티티들을 자동으로 생성하는 서비스
함수와 performanceEventId를 받아 빈 예약 가능 엔티티들을 자동을 생성하는
서비스를 만들었습니다

추후 createPerformanceHall과 createPerformanceEvent함수를 수정해서
과정을 더 자동화할 수 있을 것 같습니다

* add: SeatIntegrationTest

SeatIntegrationTest 만들었습니다

테스트 전부 통과하며 빌드 성공합니다
다만 테스트에 mysql 데이터베이스가 쓰이며 초기화가 자동으로 되지 않아
문제가 생기니 이는 개선이 필요합니다

* chore: use h2 while test

application.yaml 파일을 테스트 코드를 위해 하나 추가해줬습니다
테스트코드에서 @transactional까지 사용한다면 테스트 코드가 서로 영향을
끼치지 않게 됩니다

* fix: Seat Reservation

reservation 바뀐 정보 반영하도록 save 사용했고, Detail확인하는 영역은
컨트롤러까지 분리했습니다

* style: seat ktlint

seat폴더의 파일들에 ktlint 적용

* modify MakeFile

* 공연 검색 기능 구현

* fromEntity parameter change: receive Entities -> receive DTOs

* modify searchPerformance endpoint URL

* chore: makefile

OS 따라서 다르게 작동하게 수정

* 공연 1개 상세 정보 반환

* minor modify: change how null type is handled

* 초기 데이터 수정, 공연이벤트는 일단 공연 기간의 첫날과 마지막날만 생성하였음

* modify DataInitializer, SeatIntegrationTest

* add PerformanceDetail Uri

* make PerformanceItegrationTest.kt

* feat: 예매 동시성

동시성 처리 완료
동시성 처리는 잘 되지만, 테스트 코드 작성이 많이 까다로움

* feat: Get My Reservation Api

유저가 로그인한채로 본인의 예약 목록을 확인할 수 있는 기능 추가

* feat: Seat Get TestCode

Get API가 정상작동하는지 테스트코드 추가

* modify SearchPerformanceResponse

* check auth for create, delete performance

* check auth for create, delete performanceEvent, performanceHall

* add posterUri attr to BriefPerformanceDetail

* minor change

* feat: 예매목록 Brief로 주기

기존에 id만 주던 것을 Brief 데이터의 리스트를 주는 것으로 수정
signin을 할 때 User도 같이 반환하도록 수정

* fix: 로그아웃, 토큰 재발급

버그 수정, 엔드포인트 수정

* add UserIdentityNotFoundException

* modify PerformanceDurtion

* backup <user> package to <archive/user_old>

* modify endpoint

* feat: 공연장 생성시 좌석도 함께 생성

* feat: seat 초기화 적용, 버그 수정

PerformanceHall이 생성될 때 Seat을 같이 생성,
PerformanceEvent가 생성될 때 Reservation을 같이 생성하도록 변경

* 공연 카테고리 검색, 상세 조회, 생성, 삭제 기능 구현  (#15)

* merge test - generate performancehallentity.kt

* feat: searchPerformance

* modify searchPerformance

* modify build.gradle.kts

* add wildcard import in UserService.kt

* change Performance attribute 'genre' to 'category'

* change category to ENUM Type

* add some Init Datas

* add some Init Datas

* assign posterimageURL

* assign posterimageURL

* modify searchPerformance, GET요청은 RequestBody를 사용할 수 없다고 하여 다시 RequestParam을 사용하는 원래 방식으로 변경

* modify MakeFile

* 공연 검색 기능 구현

* fromEntity parameter change: receive Entities -> receive DTOs

* modify searchPerformance endpoint URL

* 공연 1개 상세 정보 반환

* minor modify: change how null type is handled

* 초기 데이터 수정, 공연이벤트는 일단 공연 기간의 첫날과 마지막날만 생성하였음

* modify DataInitializer, SeatIntegrationTest

* add PerformanceDetail Uri

* make PerformanceItegrationTest.kt

* modify SearchPerformanceResponse

* check auth for create, delete performance

* check auth for create, delete performanceEvent, performanceHall

* add posterUri attr to BriefPerformanceDetail

* minor change

* add UserIdentityNotFoundException

* modify PerformanceDurtion

* applying spring security

* setup .env

* feat: Find PerformanceEvent

PerformanceId와 LocalDate로부터 PerformanceEventId를 반환하도록 추가

잘못된 PerformanceEventId로 빈좌석정보를 확인했을 때 에러 반환

* chore: .env 무시

* feat: Reinforce Simultaneous test code

동시에 여러 사람의 접근이 있어도 통과하는지 테스트 코드 추가
동시에 여러 사람이 서로 다른 좌석에 접근할 때 테스트 코드 추가

* 예매 동시성 처리, 로그인 엔드포인트 변경 (#18)

* merge test - generate performancehallentity.kt

* feat: searchPerformance

* chore: 도커 컴포즈

dockerfile 작성해서 도커 이미지 잘 만들어지고 http 파일로 테스트까지
가능한 상태입니다

* modify searchPerformance

* add: docker-compose

* modify build.gradle.kts

* add wildcard import in UserService.kt

* change Performance attribute 'genre' to 'category'

* change category to ENUM Type

* add some Init Datas

* add some Init Datas

* assign posterimageURL

* add: Entity

엔티티 작업중

* assign posterimageURL

* add: SeatService

임시저장하겠습니다

* feat: SeatService

좌석 확인, 예매, 예매 취소 기능 구현
아직 동시성 처리 안됐습니다

* feat: Add Controller

컨트롤러 추가했습니다
곧 테스트 코드 추가해보겠습니다

* modify searchPerformance, GET요청은 RequestBody를 사용할 수 없다고 하여 다시 RequestParam을 사용하는 원래 방식으로 변경

* feat: SeatCreation

performanceHallId와 type을 받아 좌석엔티티들을 자동으로 생성하는 서비스
함수와 performanceEventId를 받아 빈 예약 가능 엔티티들을 자동을 생성하는
서비스를 만들었습니다

추후 createPerformanceHall과 createPerformanceEvent함수를 수정해서
과정을 더 자동화할 수 있을 것 같습니다

* add: SeatIntegrationTest

SeatIntegrationTest 만들었습니다

테스트 전부 통과하며 빌드 성공합니다
다만 테스트에 mysql 데이터베이스가 쓰이며 초기화가 자동으로 되지 않아
문제가 생기니 이는 개선이 필요합니다

* chore: use h2 while test

application.yaml 파일을 테스트 코드를 위해 하나 추가해줬습니다
테스트코드에서 @transactional까지 사용한다면 테스트 코드가 서로 영향을
끼치지 않게 됩니다

* fix: Seat Reservation

reservation 바뀐 정보 반영하도록 save 사용했고, Detail확인하는 영역은
컨트롤러까지 분리했습니다

* style: seat ktlint

seat폴더의 파일들에 ktlint 적용

* modify MakeFile

* 공연 검색 기능 구현

* fromEntity parameter change: receive Entities -> receive DTOs

* modify searchPerformance endpoint URL

* chore: makefile

OS 따라서 다르게 작동하게 수정

* 공연 1개 상세 정보 반환

* minor modify: change how null type is handled

* 초기 데이터 수정, 공연이벤트는 일단 공연 기간의 첫날과 마지막날만 생성하였음

* modify DataInitializer, SeatIntegrationTest

* add PerformanceDetail Uri

* make PerformanceItegrationTest.kt

* feat: 예매 동시성

동시성 처리 완료
동시성 처리는 잘 되지만, 테스트 코드 작성이 많이 까다로움

* feat: Get My Reservation Api

유저가 로그인한채로 본인의 예약 목록을 확인할 수 있는 기능 추가

* feat: Seat Get TestCode

Get API가 정상작동하는지 테스트코드 추가

* modify SearchPerformanceResponse

* check auth for create, delete performance

* check auth for create, delete performanceEvent, performanceHall

* add posterUri attr to BriefPerformanceDetail

* minor change

* feat: 예매목록 Brief로 주기

기존에 id만 주던 것을 Brief 데이터의 리스트를 주는 것으로 수정
signin을 할 때 User도 같이 반환하도록 수정

* fix: 로그아웃, 토큰 재발급

버그 수정, 엔드포인트 수정

* add UserIdentityNotFoundException

* modify PerformanceDurtion

* feat: 공연장 생성시 좌석도 함께 생성

* feat: seat 초기화 적용, 버그 수정

PerformanceHall이 생성될 때 Seat을 같이 생성,
PerformanceEvent가 생성될 때 Reservation을 같이 생성하도록 변경

* feat: Find PerformanceEvent

PerformanceId와 LocalDate로부터 PerformanceEventId를 반환하도록 추가

잘못된 PerformanceEventId로 빈좌석정보를 확인했을 때 에러 반환

* chore: .env 무시

* feat: Reinforce Simultaneous test code

동시에 여러 사람의 접근이 있어도 통과하는지 테스트 코드 추가
동시에 여러 사람이 서로 다른 좌석에 접근할 때 테스트 코드 추가

---------

Co-authored-by: Dohyeon Kim <[email protected]>

* fix .http localhost port number

* apply spring security

* apply spring security

* minor

* remove .env from tracked files

* gitignore

* remove unused method

* minor

* minor

* add new line at EOF

* modify jwtfilter comment

* convert Instant to KoreanLocalDateTime in PerformanceEventDTO

* add permission

* feat: Review/Reply 연결

review와 reply 마무리

* comment: user 설명 추가

username과 password의 조건 설명 추가

* chore: 필요없는 코드 지우기

* feat: Sort Reviews and Replies

GET을 통해 리뷰나 댓글을 조회할 때 최신순으로 반환한다

* Spring security 적용 (#19)

* merge test - generate performancehallentity.kt

* feat: searchPerformance

* chore: 도커 컴포즈

dockerfile 작성해서 도커 이미지 잘 만들어지고 http 파일로 테스트까지
가능한 상태입니다

* modify searchPerformance

* add: docker-compose

* modify build.gradle.kts

* add wildcard import in UserService.kt

* change Performance attribute 'genre' to 'category'

* change category to ENUM Type

* add some Init Datas

* add some Init Datas

* assign posterimageURL

* add: Entity

엔티티 작업중

* assign posterimageURL

* add: SeatService

임시저장하겠습니다

* feat: SeatService

좌석 확인, 예매, 예매 취소 기능 구현
아직 동시성 처리 안됐습니다

* feat: Add Controller

컨트롤러 추가했습니다
곧 테스트 코드 추가해보겠습니다

* modify searchPerformance, GET요청은 RequestBody를 사용할 수 없다고 하여 다시 RequestParam을 사용하는 원래 방식으로 변경

* feat: SeatCreation

performanceHallId와 type을 받아 좌석엔티티들을 자동으로 생성하는 서비스
함수와 performanceEventId를 받아 빈 예약 가능 엔티티들을 자동을 생성하는
서비스를 만들었습니다

추후 createPerformanceHall과 createPerformanceEvent함수를 수정해서
과정을 더 자동화할 수 있을 것 같습니다

* add: SeatIntegrationTest

SeatIntegrationTest 만들었습니다

테스트 전부 통과하며 빌드 성공합니다
다만 테스트에 mysql 데이터베이스가 쓰이며 초기화가 자동으로 되지 않아
문제가 생기니 이는 개선이 필요합니다

* chore: use h2 while test

application.yaml 파일을 테스트 코드를 위해 하나 추가해줬습니다
테스트코드에서 @transactional까지 사용한다면 테스트 코드가 서로 영향을
끼치지 않게 됩니다

* fix: Seat Reservation

reservation 바뀐 정보 반영하도록 save 사용했고, Detail확인하는 영역은
컨트롤러까지 분리했습니다

* style: seat ktlint

seat폴더의 파일들에 ktlint 적용

* modify MakeFile

* 공연 검색 기능 구현

* fromEntity parameter change: receive Entities -> receive DTOs

* modify searchPerformance endpoint URL

* chore: makefile

OS 따라서 다르게 작동하게 수정

* 공연 1개 상세 정보 반환

* minor modify: change how null type is handled

* 초기 데이터 수정, 공연이벤트는 일단 공연 기간의 첫날과 마지막날만 생성하였음

* modify DataInitializer, SeatIntegrationTest

* add PerformanceDetail Uri

* make PerformanceItegrationTest.kt

* feat: 예매 동시성

동시성 처리 완료
동시성 처리는 잘 되지만, 테스트 코드 작성이 많이 까다로움

* feat: Get My Reservation Api

유저가 로그인한채로 본인의 예약 목록을 확인할 수 있는 기능 추가

* feat: Seat Get TestCode

Get API가 정상작동하는지 테스트코드 추가

* modify SearchPerformanceResponse

* check auth for create, delete performance

* check auth for create, delete performanceEvent, performanceHall

* add posterUri attr to BriefPerformanceDetail

* minor change

* feat: 예매목록 Brief로 주기

기존에 id만 주던 것을 Brief 데이터의 리스트를 주는 것으로 수정
signin을 할 때 User도 같이 반환하도록 수정

* fix: 로그아웃, 토큰 재발급

버그 수정, 엔드포인트 수정

* add UserIdentityNotFoundException

* modify PerformanceDurtion

* backup <user> package to <archive/user_old>

* modify endpoint

* applying spring security

* setup .env

* fix .http localhost port number

* apply spring security

* apply spring security

* minor

* remove .env from tracked files

* gitignore

* remove unused method

* minor

* minor

* add new line at EOF

* modify jwtfilter comment

* convert Instant to KoreanLocalDateTime in PerformanceEventDTO

* add permission

---------

Co-authored-by: ChungPlusPlus <[email protected]>

* style: add new line at EOF

* throw AuthenticateException when accessToken is not valid

* Review & Reply (#20)

* merge test - generate performancehallentity.kt

* feat: searchPerformance

* chore: 도커 컴포즈

dockerfile 작성해서 도커 이미지 잘 만들어지고 http 파일로 테스트까지
가능한 상태입니다

* modify searchPerformance

* add: docker-compose

* modify build.gradle.kts

* add wildcard import in UserService.kt

* change Performance attribute 'genre' to 'category'

* change category to ENUM Type

* add some Init Datas

* add some Init Datas

* assign posterimageURL

* add: Entity

엔티티 작업중

* assign posterimageURL

* add: SeatService

임시저장하겠습니다

* feat: SeatService

좌석 확인, 예매, 예매 취소 기능 구현
아직 동시성 처리 안됐습니다

* feat: Add Controller

컨트롤러 추가했습니다
곧 테스트 코드 추가해보겠습니다

* modify searchPerformance, GET요청은 RequestBody를 사용할 수 없다고 하여 다시 RequestParam을 사용하는 원래 방식으로 변경

* feat: SeatCreation

performanceHallId와 type을 받아 좌석엔티티들을 자동으로 생성하는 서비스
함수와 performanceEventId를 받아 빈 예약 가능 엔티티들을 자동을 생성하는
서비스를 만들었습니다

추후 createPerformanceHall과 createPerformanceEvent함수를 수정해서
과정을 더 자동화할 수 있을 것 같습니다

* add: SeatIntegrationTest

SeatIntegrationTest 만들었습니다

테스트 전부 통과하며 빌드 성공합니다
다만 테스트에 mysql 데이터베이스가 쓰이며 초기화가 자동으로 되지 않아
문제가 생기니 이는 개선이 필요합니다

* chore: use h2 while test

application.yaml 파일을 테스트 코드를 위해 하나 추가해줬습니다
테스트코드에서 @transactional까지 사용한다면 테스트 코드가 서로 영향을
끼치지 않게 됩니다

* fix: Seat Reservation

reservation 바뀐 정보 반영하도록 save 사용했고, Detail확인하는 영역은
컨트롤러까지 분리했습니다

* style: seat ktlint

seat폴더의 파일들에 ktlint 적용

* modify MakeFile

* 공연 검색 기능 구현

* fromEntity parameter change: receive Entities -> receive DTOs

* modify searchPerformance endpoint URL

* chore: makefile

OS 따라서 다르게 작동하게 수정

* 공연 1개 상세 정보 반환

* minor modify: change how null type is handled

* 초기 데이터 수정, 공연이벤트는 일단 공연 기간의 첫날과 마지막날만 생성하였음

* modify DataInitializer, SeatIntegrationTest

* add PerformanceDetail Uri

* make PerformanceItegrationTest.kt

* feat: 예매 동시성

동시성 처리 완료
동시성 처리는 잘 되지만, 테스트 코드 작성이 많이 까다로움

* feat: Get My Reservation Api

유저가 로그인한채로 본인의 예약 목록을 확인할 수 있는 기능 추가

* feat: Seat Get TestCode

Get API가 정상작동하는지 테스트코드 추가

* modify SearchPerformanceResponse

* check auth for create, delete performance

* check auth for create, delete performanceEvent, performanceHall

* add posterUri attr to BriefPerformanceDetail

* minor change

* feat: 예매목록 Brief로 주기

기존에 id만 주던 것을 Brief 데이터의 리스트를 주는 것으로 수정
signin을 할 때 User도 같이 반환하도록 수정

* fix: 로그아웃, 토큰 재발급

버그 수정, 엔드포인트 수정

* add UserIdentityNotFoundException

* modify PerformanceDurtion

* feat: 공연장 생성시 좌석도 함께 생성

* feat: seat 초기화 적용, 버그 수정

PerformanceHall이 생성될 때 Seat을 같이 생성,
PerformanceEvent가 생성될 때 Reservation을 같이 생성하도록 변경

* feat: Find PerformanceEvent

PerformanceId와 LocalDate로부터 PerformanceEventId를 반환하도록 추가

잘못된 PerformanceEventId로 빈좌석정보를 확인했을 때 에러 반환

* chore: .env 무시

* feat: Reinforce Simultaneous test code

동시에 여러 사람의 접근이 있어도 통과하는지 테스트 코드 추가
동시에 여러 사람이 서로 다른 좌석에 접근할 때 테스트 코드 추가

* feat: Review/Reply 연결

review와 reply 마무리

* comment: user 설명 추가

username과 password의 조건 설명 추가

* chore: 필요없는 코드 지우기

* feat: Sort Reviews and Replies

GET을 통해 리뷰나 댓글을 조회할 때 최신순으로 반환한다

* style: add new line at EOF

---------

Co-authored-by: Dohyeon Kim <[email protected]>

* save

* Revert "Review & Reply (#20)" (#21)

This reverts commit 9510784.

* hotfix: test 안되던 오류 수정

* 빌드 안되던 버그 수정 (#22)

* merge test - generate performancehallentity.kt

* feat: searchPerformance

* chore: 도커 컴포즈

dockerfile 작성해서 도커 이미지 잘 만들어지고 http 파일로 테스트까지
가능한 상태입니다

* modify searchPerformance

* add: docker-compose

* modify build.gradle.kts

* add wildcard import in UserService.kt

* change Performance attribute 'genre' to 'category'

* change category to ENUM Type

* add some Init Datas

* add some Init Datas

* assign posterimageURL

* add: Entity

엔티티 작업중

* assign posterimageURL

* add: SeatService

임시저장하겠습니다

* feat: SeatService

좌석 확인, 예매, 예매 취소 기능 구현
아직 동시성 처리 안됐습니다

* feat: Add Controller

컨트롤러 추가했습니다
곧 테스트 코드 추가해보겠습니다

* modify searchPerformance, GET요청은 RequestBody를 사용할 수 없다고 하여 다시 RequestParam을 사용하는 원래 방식으로 변경

* feat: SeatCreation

performanceHallId와 type을 받아 좌석엔티티들을 자동으로 생성하는 서비스
함수와 performanceEventId를 받아 빈 예약 가능 엔티티들을 자동을 생성하는
서비스를 만들었습니다

추후 createPerformanceHall과 createPerformanceEvent함수를 수정해서
과정을 더 자동화할 수 있을 것 같습니다

* add: SeatIntegrationTest

SeatIntegrationTest 만들었습니다

테스트 전부 통과하며 빌드 성공합니다
다만 테스트에 mysql 데이터베이스가 쓰이며 초기화가 자동으로 되지 않아
문제가 생기니 이는 개선이 필요합니다

* chore: use h2 while test

application.yaml 파일을 테스트 코드를 위해 하나 추가해줬습니다
테스트코드에서 @transactional까지 사용한다면 테스트 코드가 서로 영향을
끼치지 않게 됩니다

* fix: Seat Reservation

reservation 바뀐 정보 반영하도록 save 사용했고, Detail확인하는 영역은
컨트롤러까지 분리했습니다

* style: seat ktlint

seat폴더의 파일들에 ktlint 적용

* modify MakeFile

* 공연 검색 기능 구현

* fromEntity parameter change: receive Entities -> receive DTOs

* modify searchPerformance endpoint URL

* chore: makefile

OS 따라서 다르게 작동하게 수정

* 공연 1개 상세 정보 반환

* minor modify: change how null type is handled

* 초기 데이터 수정, 공연이벤트는 일단 공연 기간의 첫날과 마지막날만 생성하였음

* modify DataInitializer, SeatIntegrationTest

* add PerformanceDetail Uri

* make PerformanceItegrationTest.kt

* feat: 예매 동시성

동시성 처리 완료
동시성 처리는 잘 되지만, 테스트 코드 작성이 많이 까다로움

* feat: Get My Reservation Api

유저가 로그인한채로 본인의 예약 목록을 확인할 수 있는 기능 추가

* feat: Seat Get TestCode

Get API가 정상작동하는지 테스트코드 추가

* modify SearchPerformanceResponse

* check auth for create, delete performance

* check auth for create, delete performanceEvent, performanceHall

* add posterUri attr to BriefPerformanceDetail

* minor change

* feat: 예매목록 Brief로 주기

기존에 id만 주던 것을 Brief 데이터의 리스트를 주는 것으로 수정
signin을 할 때 User도 같이 반환하도록 수정

* fix: 로그아웃, 토큰 재발급

버그 수정, 엔드포인트 수정

* add UserIdentityNotFoundException

* modify PerformanceDurtion

* feat: 공연장 생성시 좌석도 함께 생성

* feat: seat 초기화 적용, 버그 수정

PerformanceHall이 생성될 때 Seat을 같이 생성,
PerformanceEvent가 생성될 때 Reservation을 같이 생성하도록 변경

* feat: Find PerformanceEvent

PerformanceId와 LocalDate로부터 PerformanceEventId를 반환하도록 추가

잘못된 PerformanceEventId로 빈좌석정보를 확인했을 때 에러 반환

* chore: .env 무시

* feat: Reinforce Simultaneous test code

동시에 여러 사람의 접근이 있어도 통과하는지 테스트 코드 추가
동시에 여러 사람이 서로 다른 좌석에 접근할 때 테스트 코드 추가

* feat: Review/Reply 연결

review와 reply 마무리

* comment: user 설명 추가

username과 password의 조건 설명 추가

* chore: 필요없는 코드 지우기

* feat: Sort Reviews and Replies

GET을 통해 리뷰나 댓글을 조회할 때 최신순으로 반환한다

* style: add new line at EOF

* hotfix: test 안되던 오류 수정

---------

Co-authored-by: Dohyeon Kim <[email protected]>

* roll back 401 -> 403 when access denied

* setup .env

* fix: Change Reservation

ReservationEntity 예매하면서 만들어지도록 변경

* CI: fixed CI (#23)

* hotfix: change CI/CD jdk to 23

* hotfix: use compose in CI

* hotfix: fix ci

* hotfix: reset ci

* fix: build test on all branch

* fix: error 핸들링

SeatService에서 DataIntegrityViolationException을 핸들링하기 위해
saveAndFlush를 사용했다. 기존에는 save가 트랜잭션이 끝나고 완료되어서
오류가 핸들링이 안 되었었다

* fix: Seat Test

* fix: test conflict resolve

테스트에서 같은 username을 쓰던 부분을 수정

* feat: Seat Api Test

* fix: 예매 취소 POST -> DELETE

* Reservation 수정 (#25)

* merge test - generate performancehallentity.kt

* feat: searchPerformance

* chore: 도커 컴포즈

dockerfile 작성해서 도커 이미지 잘 만들어지고 http 파일로 테스트까지
가능한 상태입니다

* modify searchPerformance

* add: docker-compose

* modify build.gradle.kts

* add wildcard import in UserService.kt

* change Performance attribute 'genre' to 'category'

* change category to ENUM Type

* add some Init Datas

* add some Init Datas

* assign posterimageURL

* add: Entity

엔티티 작업중

* assign posterimageURL

* add: SeatService

임시저장하겠습니다

* feat: SeatService

좌석 확인, 예매, 예매 취소 기능 구현
아직 동시성 처리 안됐습니다

* feat: Add Controller

컨트롤러 추가했습니다
곧 테스트 코드 추가해보겠습니다

* modify searchPerformance, GET요청은 RequestBody를 사용할 수 없다고 하여 다시 RequestParam을 사용하는 원래 방식으로 변경

* feat: SeatCreation

performanceHallId와 type을 받아 좌석엔티티들을 자동으로 생성하는 서비스
함수와 performanceEventId를 받아 빈 예약 가능 엔티티들을 자동을 생성하는
서비스를 만들었습니다

추후 createPerformanceHall과 createPerformanceEvent함수를 수정해서
과정을 더 자동화할 수 있을 것 같습니다

* add: SeatIntegrationTest

SeatIntegrationTest 만들었습니다

테스트 전부 통과하며 빌드 성공합니다
다만 테스트에 mysql 데이터베이스가 쓰이며 초기화가 자동으로 되지 않아
문제가 생기니 이는 개선이 필요합니다

* chore: use h2 while test

application.yaml 파일을 테스트 코드를 위해 하나 추가해줬습니다
테스트코드에서 @transactional까지 사용한다면 테스트 코드가 서로 영향을
끼치지 않게 됩니다

* fix: Seat Reservation

reservation 바뀐 정보 반영하도록 save 사용했고, Detail확인하는 영역은
컨트롤러까지 분리했습니다

* style: seat ktlint

seat폴더의 파일들에 ktlint 적용

* modify MakeFile

* 공연 검색 기능 구현

* fromEntity parameter change: receive Entities -> receive DTOs

* modify searchPerformance endpoint URL

* chore: makefile

OS 따라서 다르게 작동하게 수정

* 공연 1개 상세 정보 반환

* minor modify: change how null type is handled

* 초기 데이터 수정, 공연이벤트는 일단 공연 기간의 첫날과 마지막날만 생성하였음

* modify DataInitializer, SeatIntegrationTest

* add PerformanceDetail Uri

* make PerformanceItegrationTest.kt

* feat: 예매 동시성

동시성 처리 완료
동시성 처리는 잘 되지만, 테스트 코드 작성이 많이 까다로움

* feat: Get My Reservation Api

유저가 로그인한채로 본인의 예약 목록을 확인할 수 있는 기능 추가

* feat: Seat Get TestCode

Get API가 정상작동하는지 테스트코드 추가

* modify SearchPerformanceResponse

* check auth for create, delete performance

* check auth for create, delete performanceEvent, performanceHall

* add posterUri attr to BriefPerformanceDetail

* minor change

* feat: 예매목록 Brief로 주기

기존에 id만 주던 것을 Brief 데이터의 리스트를 주는 것으로 수정
signin을 할 때 User도 같이 반환하도록 수정

* fix: 로그아웃, 토큰 재발급

버그 수정, 엔드포인트 수정

* add UserIdentityNotFoundException

* modify PerformanceDurtion

* feat: 공연장 생성시 좌석도 함께 생성

* feat: seat 초기화 적용, 버그 수정

PerformanceHall이 생성될 때 Seat을 같이 생성,
PerformanceEvent가 생성될 때 Reservation을 같이 생성하도록 변경

* feat: Find PerformanceEvent

PerformanceId와 LocalDate로부터 PerformanceEventId를 반환하도록 추가

잘못된 PerformanceEventId로 빈좌석정보를 확인했을 때 에러 반환

* chore: .env 무시

* feat: Reinforce Simultaneous test code

동시에 여러 사람의 접근이 있어도 통과하는지 테스트 코드 추가
동시에 여러 사람이 서로 다른 좌석에 접근할 때 테스트 코드 추가

* feat: Review/Reply 연결

review와 reply 마무리

* comment: user 설명 추가

username과 password의 조건 설명 추가

* chore: 필요없는 코드 지우기

* feat: Sort Reviews and Replies

GET을 통해 리뷰나 댓글을 조회할 때 최신순으로 반환한다

* style: add new line at EOF

* hotfix: test 안되던 오류 수정

* fix: Change Reservation

ReservationEntity 예매하면서 만들어지도록 변경

* fix: error 핸들링

SeatService에서 DataIntegrityViolationException을 핸들링하기 위해
saveAndFlush를 사용했다. 기존에는 save가 트랜잭션이 끝나고 완료되어서
오류가 핸들링이 안 되었었다

* fix: Seat Test

* fix: test conflict resolve

테스트에서 같은 username을 쓰던 부분을 수정

* feat: Seat Api Test

* fix: 예매 취소 POST -> DELETE

---------

Co-authored-by: Dohyeon Kim <[email protected]>

* add: Review, Reply DTO Instant -> LocalDatTime

* feat: Cursor Pagination Tools

CursorSpecification은 조건 추가해수는 기능
CursorPageService는 cursor 포함해서 검색하는 기능
CursorEncoder는 cursor를 컨트롤러에서 인코딩/디코딩 할 수 있도록 하는
기능

* feat: CursorPageable 적용

* fix: modify CursorPageable

디폴트 값을 데이터 클래스가 생성될 때 채워지는 것으로 적용

* fix: Reply Test

Instant 대신 LocalDateTime을 씀에 따라 테스트에서의 파싱도 변경

* social login 구현중 중간 save

* setup .env

* add SocialLoginApi.http

* remove .env

* feat: response

hasNext와 nextCursor 반환

* write swagger api for socialauthcontroller

* modify social login api docs description

* add social login query paramter explanations

* fix: nextCursor 수정

원래 객체 자체를 인코딩해서 ".id",".id"같은 값이 인코딩되어 나왔습니다
get을 사용해서 객체의 값을 가져올 수 있도록 수정했습니다

* feat: Performance Pagination 완성

* social endpoint permitall

* feat: pagination 적용된 review 조회

v2로 만들었습니다

* social login receive socialAccessToken, not authorizatoinCode

* fix: Review Cursor

기능 완성

* feat: Reply에도 Cursor 적용

* fix: 엔드포인트 분리

* feat: performance 엔드포인트 분리

v1과 v2로 나누어 선택할 수 있도록

* feat: permitAll for pagination

* fix: test 코드 수정

* fix: test 수정

* feat: Performance Search & Get Review 페이지네이션 적용 완료

* modify makefile / test: h2 -> mysql

* modify social login explanation

* feat: Exception 처리

* fix: 기존 테스트 코드 유지

* feat: Reply Pagination 완성

Performance, Review, Reply Pagination 구현 완료

* feat: Performance Date 추가

* CI: add env on CI

* CI: add check on pull_requests

* Pagination 구현 (#26)

* merge test - generate performancehallentity.kt

* feat: searchPerformance

* chore: 도커 컴포즈

dockerfile 작성해서 도커 이미지 잘 만들어지고 http 파일로 테스트까지
가능한 상태입니다

* modify searchPerformance

* add: docker-compose

* modify build.gradle.kts

* add wildcard import in UserService.kt

* change Performance attribute 'genre' to 'category'

* change category to ENUM Type

* add some Init Datas

* add some Init Datas

* assign posterimageURL

* add: Entity

엔티티 작업중

* assign posterimageURL

* add: SeatService

임시저장하겠습니다

* feat: SeatService

좌석 확인, 예매, 예매 취소 기능 구현
아직 동시성 처리 안됐습니다

* feat: Add Controller

컨트롤러 추가했습니다
곧 테스트 코드 추가해보겠습니다

* modify searchPerformance, GET요청은 RequestBody를 사용할 수 없다고 하여 다시 RequestParam을 사용하는 원래 방식으로 변경

* feat: SeatCreation

performanceHallId와 type을 받아 좌석엔티티들을 자동으로 생성하는 서비스
함수와 performanceEventId를 받아 빈 예약 가능 엔티티들을 자동을 생성하는
서비스를 만들었습니다

추후 createPerformanceHall과 createPerformanceEvent함수를 수정해서
과정을 더 자동화할 수 있을 것 같습니다

* add: SeatIntegrationTest

SeatIntegrationTest 만들었습니다

테스트 전부 통과하며 빌드 성공합니다
다만 테스트에 mysql 데이터베이스가 쓰이며 초기화가 자동으로 되지 않아
문제가 생기니 이는 개선이 필요합니다

* chore: use h2 while test

application.yaml 파일을 테스트 코드를 위해 하나 추가해줬습니다
테스트코드에서 @transactional까지 사용한다면 테스트 코드가 서로 영향을
끼치지 않게 됩니다

* fix: Seat Reservation

reservation 바뀐 정보 반영하도록 save 사용했고, Detail확인하는 영역은
컨트롤러까지 분리했습니다

* style: seat ktlint

seat폴더의 파일들에 ktlint 적용

* modify MakeFile

* 공연 검색 기능 구현

* fromEntity parameter change: receive Entities -> receive DTOs

* modify searchPerformance endpoint URL

* chore: makefile

OS 따라서 다르게 작동하게 수정

* 공연 1개 상세 정보 반환

* minor modify: change how null type is handled

* 초기 데이터 수정, 공연이벤트는 일단 공연 기간의 첫날과 마지막날만 생성하였음

* modify DataInitializer, SeatIntegrationTest

* add PerformanceDetail Uri

* make PerformanceItegrationTest.kt

* feat: 예매 동시성

동시성 처리 완료
동시성 처리는 잘 되지만, 테스트 코드 작성이 많이 까다로움

* feat: Get My Reservation Api

유저가 로그인한채로 본인의 예약 목록을 확인할 수 있는 기능 추가

* feat: Seat Get TestCode

Get API가 정상작동하는지 테스트코드 추가

* modify SearchPerformanceResponse

* check auth for create, delete performance

* check auth for create, delete performanceEvent, performanceHall

* add posterUri attr to BriefPerformanceDetail

* minor change

* feat: 예매목록 Brief로 주기

기존에 id만 주던 것을 Brief 데이터의 리스트를 주는 것으로 수정
signin을 할 때 User도 같이 반환하도록 수정

* fix: 로그아웃, 토큰 재발급

버그 수정, 엔드포인트 수정

* add UserIdentityNotFoundException

* modify PerformanceDurtion

* feat: 공연장 생성시 좌석도 함께 생성

* feat: seat 초기화 적용, 버그 수정

PerformanceHall이 생성될 때 Seat을 같이 생성,
PerformanceEvent가 생성될 때 Reservation을 같이 생성하도록 변경

* feat: Find PerformanceEvent

PerformanceId와 LocalDate로부터 PerformanceEventId를 반환하도록 추가

잘못된 PerformanceEventId로 빈좌석정보를 확인했을 때 에러 반환

* chore: .env 무시

* feat: Reinforce Simultaneous test code

동시에 여러 사람의 접근이 있어도 통과하는지 테스트 코드 추가
동시에 여러 사람이 서로 다른 좌석에 접근할 때 테스트 코드 추가

* feat: Review/Reply 연결

review와 reply 마무리

* comment: user 설명 추가

username과 password의 조건 설명 추가

* chore: 필요없는 코드 지우기

* feat: Sort Reviews and Replies

GET을 통해 리뷰나 댓글을 조회할 때 최신순으로 반환한다

* style: add new line at EOF

* hotfix: test 안되던 오류 수정

* fix: Change Reservation

ReservationEntity 예매하면서 만들어지도록 변경

* fix: error 핸들링

SeatService에서 DataIntegrityViolationException을 핸들링하기 위해
saveAndFlush를 사용했다. 기존에는 save가 트랜잭션이 끝나고 완료되어서
오류가 핸들링이 안 되었었다

* fix: Seat Test

* fix: test conflict resolve

테스트에서 같은 username을 쓰던 부분을 수정

* feat: Seat Api Test

* fix: 예매 취소 POST -> DELETE

* add: Review, Reply DTO Instant -> LocalDatTime

* feat: Cursor Pagination Tools

CursorSpecification은 조건 추가해수는 기능
CursorPageService는 cursor 포함해서 검색하는 기능
CursorEncoder는 cursor를 컨트롤러에서 인코딩/디코딩 할 수 있도록 하는
기능

* feat: CursorPageable 적용

* fix: modify CursorPageable

디폴트 값을 데이터 클래스가 생성될 때 채워지는 것으로 적용

* fix: Reply Test

Instant 대신 LocalDateTime을 씀에 따라 테스트에서의 파싱도 변경

* feat: response

hasNext와 nextCursor 반환

* fix: nextCursor 수정

원래 객체 자체를 인코딩해서 ".id",".id"같은 값이 인코딩되어 나왔습니다
get을 사용해서 객체의 값을 가져올 수 있도록 수정했습니다

* feat: Performance Pagination 완성

* feat: pagination 적용된 review 조회

v2로 만들었습니다

* fix: Review Cursor

기능 완성

* feat: Reply에도 Cursor 적용

* fix: 엔드포인트 분리

* feat: performance 엔드포인트 분리

v1과 v2로 나누어 선택할 수 있도록

* feat: permitAll for pagination

* fix: test 코드 수정

* fix: test 수정

* feat: Performance Search & Get Review 페이지네이션 적용 완료

* feat: Exception 처리

* fix: 기존 테스트 코드 유지

* feat: Reply Pagination 완성

Performance, Review, Reply Pagination 구현 완료

* feat: Performance Date 추가

---------

Co-authored-by: Dohyeon Kim <[email protected]>

* rollback userservice.signup()

* rollback signup

* 소셜 로그인 구현 (#27)

* merge test - generate performancehallentity.kt

* feat: searchPerformance

* chore: 도커 컴포즈

dockerfile 작성해서 도커 이미지 잘 만들어지고 http 파일로 테스트까지
가능한 상태입니다

* modify searchPerformance

* add: docker-compose

* modify build.gradle.kts

* add wildcard import in UserService.kt

* change Performance attribute 'genre' to 'category'

* change category to ENUM Type

* add some Init Datas

* add some Init Datas

* assign posterimageURL

* add: Entity

엔티티 작업중

* assign posterimageURL

* add: SeatService

임시저장하겠습니다

* feat: SeatService

좌석 확인, 예매, 예매 취소 기능 구현
아직 동시성 처리 안됐습니다

* feat: Add Controller

컨트롤러 추가했습니다
곧 테스트 코드 추가해보겠습니다

* modify searchPerformance, GET요청은 RequestBody를 사용할 수 없다고 하여 다시 RequestParam을 사용하는 원래 방식으로 변경

* feat: SeatCreation

performanceHallId와 type을 받아 좌석엔티티들을 자동으로 생성하는 서비스
함수와 performanceEventId를 받아 빈 예약 가능 엔티티들을 자동을 생성하는
서비스를 만들었습니다

추후 createPerformanceHall과 createPerformanceEvent함수를 수정해서
과정을 더 자동화할 수 있을 것 같습니다

* add: SeatIntegrationTest

SeatIntegrationTest 만들었습니다

테스트 전부 통과하며 빌드 성공합니다
다만 테스트에 mysql 데이터베이스가 쓰이며 초기화가 자동으로 되지 않아
문제가 생기니 이는 개선이 필요합니다

* chore: use h2 while test

application.yaml 파일을 테스트 코드를 위해 하나 추가해줬습니다
테스트코드에서 @transactional까지 사용한다면 테스트 코드가 서로 영향을
끼치지 않게 됩니다

* fix: Seat Reservation

reservation 바뀐 정보 반영하도록 save 사용했고, Detail확인하는 영역은
컨트롤러까지 분리했습니다

* style: seat ktlint

seat폴더의 파일들에 ktlint 적용

* modify MakeFile

* 공연 검색 기능 구현

* fromEntity parameter change: receive Entities -> receive DTOs

* modify searchPerformance endpoint URL

* chore: makefile

OS 따라서 다르게 작동하게 수정

* 공연 1개 상세 정보 반환

* minor modify: change how null type is handled

* 초기 데이터 수정, 공연이벤트는 일단 공연 기간의 첫날과 마지막날만 생성하였음

* modify DataInitializer, SeatIntegrationTest

* add PerformanceDetail Uri

* make PerformanceItegrationTest.kt

* feat: 예매 동시성

동시성 처리 완료
동시성 처리는 잘 되지만, 테스트 코드 작성이 많이 까다로움

* feat: Get My Reservation Api

유저가 로그인한채로 본인의 예약 목록을 확인할 수 있는 기능 추가

* feat: Seat Get TestCode

Get API가 정상작동하는지 테스트코드 추가

* modify SearchPerformanceResponse

* check auth for create, delete performance

* check auth for create, delete performanceEvent, performanceHall

* add posterUri attr to BriefPerformanceDetail

* minor change

* feat: 예매목록 Brief로 주기

기존에 id만 주던 것을 Brief 데이터의 리스트를 주는 것으로 수정
signin을 할 때 User도 같이 반환하도록 수정

* fix: 로그아웃, 토큰 재발급

버그 수정, 엔드포인트 수정

* add UserIdentityNotFoundException

* modify PerformanceDurtion

* backup <user> package to <archive/user_old>

* modify endpoint

* applying spring security

* setup .env

* fix .http localhost port number

* apply spring security

* apply spring security

* minor

* remove .env from tracked files

* gitignore

* remove unused method

* minor

* minor

* add new line at EOF

* modify jwtfilter comment

* convert Instant to KoreanLocalDateTime in PerformanceEventDTO

* add permission

* throw AuthenticateException when accessToken is not valid

* save

* roll back 401 -> 403 when access denied

* setup .env

* social login 구현중 중간 save

* add SocialLoginApi.http

* remove .env

* write swagger api for socialauthcontroller

* modify social login api docs description

* add social login query paramter explanations

* social endpoint permitall

* social login receive socialAccessToken, not authorizatoinCode

* modify social login explanation

* rollback userservice.signup()

* rollback signup

---------

Co-authored-by: ChungPlusPlus <[email protected]>

* readme skeleton update

* readme.md skeleton update (#29)

* merge test - generate performancehallentity.kt

* feat: searchPerformance

* chore: 도커 컴포즈

dockerfile 작성해서 도커 이미지 잘 만들어지고 http 파일로 테스트까지
가능한 상태입니다

* modify searchPerformance

* add: docker-compose

* modify build.gradle.kts

* add wildcard import in UserService.kt

* change Performance attribute 'genre' to 'category'

* change category to ENUM Type

* add some Init Datas

* add some Init Datas

* assign posterimageURL

* add: Entity

엔티티 작업중

* assign posterimageURL

* add: SeatService

임시저장하겠습니다

* feat: SeatService

좌석 확인, 예매, 예매 취소 기능 구현
아직 동시성 처리 안됐습니다

* feat: Add Controller

컨트롤러 추가했습니다
곧 테스트 코드 추가해보겠습니다

* modify searchPerformance, GET요청은 RequestBody를 사용할 수 없다고 하여 다시 RequestParam을 사용하는 원래 방식으로 변경

* feat: SeatCreation

performanceHallId와 type을 받아 좌석엔티티들을 자동으로 생성하는 서비스
함수와 performanceEventId를 받아 빈 예약 가능 엔티티들을 자동을 생성하는
서비스를 만들었습니다

추후 createPerformanceHall과 createPerformanceEvent함수를 수정해서
과정을 더 자동화할 수 있을 것 같습니다

* add: SeatIntegrationTest

SeatIntegrationTest 만들었습니다

테스트 전부 통과하며 빌드 성공합니다
다만 테스트에 mysql 데이터베이스가 쓰이며 초기화가 자동으로 되지 않아
문제가 생기니 이는 개선이 필요합니다

* chore: use h2 while test

application.yaml 파일을 테스트 코드를 위해 하나 추가해줬습니다
테스트코드에서 @transactional까지 사용한다면 테스트 코드가 서로 영향을
끼치지 않게 됩니다

* fix: Seat Reservation

reservation 바뀐 정보 반영하도록 save 사용했고, Detail확인하는 영역은
컨트롤러까지 분리했습니다

* style: seat ktlint

seat폴더의 파일들에 ktlint 적용

* modify MakeFile

* 공연 검색 기능 구현

* fromEntity parameter change: receive Entities -> receive DTOs

* modify searchPerformance endpoint URL

* chore: makefile

OS 따라서 다르게 작동하게 수정

* 공연 1개 상세 정보 반환

* minor modify: change how null type is handled

* 초기 데이터 수정, 공연이벤트는 일단 공연 기간의 첫날과 마지막날만 생성하였음

* modify DataInitializer, SeatIntegrationTest

* add PerformanceDetail Uri

* make PerformanceItegrationTest.kt

* feat: 예매 동시성

동시성 처리 완료
동시성 처리는 잘 되지만, 테스트 코드 작성이 많이 까다로움

* feat: Get My Reservation Api

유저가 로그인한채로 본인의 예약 목록을 확인할 수 있는 기능 추가

* feat: Seat Get TestCode

Get API가 정상작동하는지 테스트코드 추가

* modify SearchPerformanceResponse

* check auth for create, delete performance

* check auth for create, delete performanceEvent, performanceHall

* add posterUri attr to BriefPerformanceDetail

* minor change

* feat: 예매목록 Brief로 주기

기존에 id만 주던 것을 Brief 데이터의 리스트를 주는 것으로 수정
signin을 할 때 User도 같이 반환하도록 수정

* fix: 로그아웃, 토큰 재발급

버그 수정, 엔드포인트 수정

* add UserIdentityNotFoundException

* modify PerformanceDurtion

* backup <user> package to <archive/user_old>

* modify endpoint

* applying spring security

* setup .env

* fix .http localhost port number

* apply spring security

* apply spring security

* minor

* remove .env from tracked files

* gitignore

* remove unused method

* minor

* minor

* add new line at EOF

* modify jwtfilter comment

* convert Instant to KoreanLocalDateTime in PerformanceEventDTO

* add permission

* throw AuthenticateException when accessToken is not valid

* save

* roll back 401 -> 403 when access denied

* setup .env

* social login 구현중 중간 save

* add SocialLoginApi.http

* remove .env

* write swagger api for socialauthcontroller

* modify social login api docs description

* add social login query paramter explanations

* social endpoint permitall

* social login receive socialAccessToken, not authorizatoinCode

* modify social login explanation

* rollback userservice.signup()

* rollback signup

* readme skeleton update

---------

Co-authored-by: ChungPlusPlus <[email protected]>

* feat: data 추가중

* feat: MUSICAL data 완료

* feat: PLAY 데이터 추가

* feat: CLASSIC 데이터 추가

* feat: CONCERT 데이터 추가

* 공연 데이터 추가 (#30)

* merge test - generate performancehallentity.kt

* feat: searchPerformance

* chore: 도커 컴포즈

dockerfile 작성해서 도커 이미지 잘 만들어지고 http 파일로 테스트까지
가능한 상태입니다

* modify searchPerformance

* add: docker-compose

* modify build.gradle.kts

* add wildcard import in UserService.kt

* change Performance attribute 'genre' to 'category'

* change category to ENUM Type

* add some Init Datas

* add some Init Datas

* assign posterimageURL

* add: Entity

엔티티 작업중

* assign posterimageURL

* add: SeatService

임시저장하겠습니다

* feat: SeatService

좌석 확인, 예매, 예매 취소 기능 구현
아직 동시성 처리 안됐습니다

* feat: Add Controller

컨트롤러 추가했습니다
곧 테스트 코드 추가해보겠습니다

* modify searchPerformance, GET요청은 RequestBody를 사용할 수 없다고 하여 다시 RequestParam을 사용하는 원래 방식으로 변경

* feat: SeatCreation

performanceHallId와 type을 받아 좌석엔티티들을 자동으로 생성하는 서비스
함수와 performanceEventId를 받아 빈 예약 가능 엔티티들을 자동을 생성하는
서비스를 만들었습니다

추후 createPerformanceHall과 createPerformanceEvent함수를 수정해서
과정을 더 자동화할 수 있을 것 같습니다

* add: SeatIntegrationTest

SeatIntegrationTest 만들었습니다

테스트 전부 통과하며 빌드 성공합니다
다만 테스트에 mysql 데이터베이스가 쓰이며 초기화가 자동으로 되지 않아
문제가 생기니 이는 개선이 필요합니다

* chore: use h2 while test

application.yaml 파일을 테스트 코드를 위해 하나 추가해줬습니다
테스트코드에서 @transactional까지 사용한다면 테스트 코드가 서로 영향을
끼치지 않게 됩니다

* fix: Seat Reservation

reservation 바뀐 정보 반영하도록 save 사용했고, Detail확인하는 영역은
컨트롤러까지 분리했습니다

* style: seat ktlint

seat폴더의 파일들에 ktlint 적용

* modify MakeFile

* 공연 검색 기능 구현

* fromEntity parameter change: receive Entities -> receive DTOs

* modify searchPerformance endpoint URL

* chore: makefile

OS 따라서 다르게 작동하게 수정

* 공연 1개 상세 정보 반환

* minor modify: change how null type is handled

* 초기 데이터 수정, 공연이벤트는 일단 공연 기간의 첫날과 마지막날만 생성하였음

* modify DataInitializer, SeatIntegrationTest

* add PerformanceDetail Uri

* make PerformanceItegrationTest.kt

* feat: 예매 동시성

동시성 처리 완료
동시성 처리는 잘 되지만, 테스트 코드 작성이 많이 까다로움

* feat: Get My Reservation Api

유저가 로그인한채로 본인의 예약 목록을 확인할 수 있는 기능 추가

* feat: Seat Get TestCode

Get API가 정상작동하는지 테스트코드 추가

* modify SearchPerformanceResponse

* check auth for create, delete performance

* check auth for create, delete performanceEvent, performanceHall

* add posterUri attr to BriefPerformanceDetail

* minor change

* feat: 예매목록 Brief로 주기

기존에 id만 주던 것을 Brief 데이터의 리스트를 주는 것으로 수정
signin을 할 때 User도 같이 반환하도록 수정

* fix: 로그아웃, 토큰 재발급

버그 수정, 엔드포인트 수정

* add UserIdentityNotFoundException

* modify PerformanceDurtion

* feat: 공연장 생성시 좌석도 함께 생성

* feat: seat 초기화 적용, 버그 수정

PerformanceHall이 생성될 때 Seat을 같이 생성,
PerformanceEvent가 생성될 때 Reservation을 같이 생성하도록 변경

* feat: Find PerformanceEvent

PerformanceId와 LocalDate로부터 PerformanceEventId를 반환하도록 추가

잘못된 PerformanceEventId로 빈좌석정보를 확인했을 때 에러 반환

* chore: .env 무시

* feat: Reinforce Simultaneous test code

동시에 여러 사람의 접근이 있어도 통과하는지 테스트 코드 추가
동시에 여러 사람이 서로 다른 좌석에 접근할 때 테스트 코드 추가

* feat: Review/Reply 연결

review와 reply 마무리

* comment: user 설명 추가

username과 password의 조건 설명 추가

* chore: 필요없는 코드 지우기

* feat: Sort Reviews and Replies

GET을 통해 리뷰나 댓글을 조회할 때 최신순으로 반환한다

* style: add new line at EOF

* hotfix: test 안되던 오류 수정

* fix: Change Reservation

ReservationEntity 예매하면서 만들어지도록 변경

* fix: error 핸들링

SeatService에서 DataIntegrityViolationException을 핸들링하기 위해
saveAndFlush를 사용했다. 기존에는 save가 트랜잭션이 끝나고 완료되어서
오류가 핸들링이 안 되었었다

* fix: Seat Test

* fix: test conflict resolve

테스트에서 같은 username을 쓰던 부분을 수정

* feat: Seat Api Test

* fix: 예매 취소 POST -> DELETE

* add: Review, Reply DTO Instant -> LocalDatTime

* feat: Cursor Pagination Tools

CursorSpecification은 조건 추가해수는 기능
CursorPageService는 cursor 포함해서 검색하는 기능
CursorEncoder는 cursor를 컨트롤러에서 인코딩/디코딩 할 수 있도록 하는
기능

* feat: CursorPageable 적용

* fix: modify CursorPageable

디폴트 값을 데이터 클래스가 생성될 때 채워지는 것으로 적용

* fix: Reply Test

Instant 대신 LocalDateTime을 씀에 따라 테스트에서의 파싱도 변경

* feat: response

hasNext와 nextCursor 반환

* fix: nextCursor 수정

원래 객체 자체를 인코딩해서 ".id",".id"같은 값이 인코딩되어 나왔습니다
get을 사용해서 객체의 값을 가져올 수 있도록 수정했습니다

* feat: Performance Pagination 완성

* feat: pagination 적용된 review 조회

v2로 만들었습니다

* fix: Review Cursor

기능 완성

* feat: Reply에도 Cursor 적용

* fix: 엔드포인트 분리

* feat: performance 엔드포인트 분리

v1과 v2로 나누어 선택할 수 있도록

* feat: permitAll for pagination

* fix: test 코드 수정

* fix: test 수정

* feat: Performance Search & Get Review 페이지네이션 적용 완료

* feat: Exception 처리

* fix: 기존 테스트 코드 유지

* feat: Reply Pagination 완성

Performance, Review, Reply Pagination 구현 완료

* feat: Performance Date 추가

* feat: data 추가중

* feat: MUSICAL data 완료

* feat: PLAY 데이터 추가

* feat: CLASSIC 데이터 추가

* feat: CONCERT 데이터 추가

---------

Co-authored-by: Dohyeon Kim <[email protected]>

* readme save

* feat: readMe 추가작성

* feat: Swaager summary

* feat: Swagger summary for UserController

* CI: remove pull request trigger

* CD: add --build on rerun script

* read me save

* feat: Cascade 설정 (#31)

* readme save

* readme save

* fix: README.md

* readme save

* feat: add stack

* feat: add language

* readme save

* feat: add redis

* remove --- lines

* add JWT logo

* add empty lines

* add empty lines

* fix(README.md): add simple deploy descriptions

* index 추가 (#33)

* feat: Cascade 설정

* feat: index 추가중

* feat: 조회 성능 향상을 위한 index 추가

---------

Co-authored-by: Dohyeon Kim <[email protected]>
Co-authored-by: ChungPlusPlus <[email protected]>
Co-authored-by: ChungPlusPlus <[email protected]>
  • Loading branch information
4 people authored Feb 2, 2025
1 parent 9e91aec commit 27b2128
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 5 deletions.
16 changes: 13 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
# 22-5-team4-server

<br/>
<div align="center">
<h1>🧇 WaffleTicket 🎫 (Interpark Ticket clone)</h1>
<h3></h3>
<h1>🧇 WaffleTicket 🎫 (Interpark Ticket clone)</h1>
<h3></h3>
</div>
<br/><br/>

> 이 프로젝트는 **Spring Boot**를 사용한 **RESTful API 서버**이며,
> 주요 기능은 **공연 검색 및 예매**, **게시글 CRUD** 등입니다.
Expand Down Expand Up @@ -39,7 +43,7 @@
- **프레임워크(Framework)**: <img src="https://img.shields.io/badge/Spring Boot-6DB33F?style=flat&logo=springboot&logoColor=white" style="vertical-align: middle;">
- **DB(Database)**: <img src="https://img.shields.io/badge/MySQL-4479A1?style=flat&logo=mysql&logoColor=white" style="vertical-align: middle;">
- **빌드/의존성 관리**: <img src="https://img.shields.io/badge/Gradle-02303A?style=flat&logo=gradle&logoColor=white" style="vertical-align: middle;">
- **인증(Authentication)**: JWT (<img src="https://img.shields.io/badge/Spring Security-6DB33F?style=flat&logo=springsecurity&logoColor=white" style="vertical-align: middle;">), OAuth 2.0(<img src="https://img.shields.io/badge/kakao-FFCD00?style=flat&logo=kakao&logoColor=black" style="vertical-align: middle;"> <img src="https://img.shields.io/badge/NAVER-03C75A?style=flat&logo=naver&logoColor=white" style="vertical-align: middle;">)
- **인증(Authentication)**: JWT (<img src="https://img.shields.io/badge/JSON Web Tokens-000000?style=flat&logo=jsonwebtokens&logoColor=white" style="vertical-align: middle;"> <img src="https://img.shields.io/badge/Spring Security-6DB33F?style=flat&logo=springsecurity&logoColor=white" style="vertical-align: middle;">), OAuth 2.0(<img src="https://img.shields.io/badge/kakao-FFCD00?style=flat&logo=kakao&logoColor=black" style="vertical-align: middle;"> <img src="https://img.shields.io/badge/NAVER-03C75A?style=flat&logo=naver&logoColor=white" style="vertical-align: middle;">)
- **부하 테스트**: <img src="https://img.shields.io/badge/Gatling-FF9E2A?logo=gatling&logoColor=fff&style=flat" style="vertical-align: middles;">
- **기타**:
- Docker & Docker Compose <img src="https://img.shields.io/badge/docker-2496ED?style=flat&logo=docker&logoColor=white" style="vertical-align: middle;">
Expand Down Expand Up @@ -205,7 +209,13 @@ JWT_SECRET_KEY는 32자 이상의 적당한 문자열을 사용하면 됩니다


## 배포 (deployment)

- Github workflow를 통해 자동으로 이루어집니다.
- 현재 단일 EC2에 배포하는 형식으로 이루어져 있으며, 권한이 제한된 배포용 계정으로 접속해 배포합니다.
- IP 제어가 필요하나 현재는 적용되어 있지 않습니다.
- 추후 IAM 인증을 통해 Workflow의 EC2 SSH 접근 권한을 일시적으로 허용하고 배포한 뒤 다시 롤백하는 방식으로 변경 예정
- 추후 MSA 구조 적용 시 ArgoCD를 이용할 예정
- Fargate는 k8s 노드 롤링 등으로 인한 예상치 못한 다운타임을 생각하지 않아도 되나, 현재 서비스에 stateful하게 동작하는 메커니즘이 없어 문제가 되지 않는다고 판단함.
- 결정적으로, stateless하게 동작한다면 k8s 노드 또한 노드 롤링 시 graceful shutdown을 지원하기에 문제가 되지 않습니다.

## 기여 (contributing)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ import jakarta.persistence.*
import java.time.Instant

@Entity
@Table(name = "reply")
@Table(
name = "reply",
indexes = [jakarta.persistence.Index(name = "idx__createdAt", columnList = "created_at")]
)
data class ReplyEntity(
@Id
@GeneratedValue(strategy = GenerationType.UUID)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ import jakarta.persistence.*
import java.time.Instant

@Entity
@Table(name = "reviews")
@Table(
name = "reviews",
indexes = [Index(name = "idx__createdAt", columnList = "created_at")]
)
class ReviewEntity(
@Id
@GeneratedValue(strategy = GenerationType.UUID)
Expand Down

0 comments on commit 27b2128

Please sign in to comment.