From de5dbb33296efc49af229dac81eb80454efbc2d5 Mon Sep 17 00:00:00 2001 From: janghyunjun Date: Fri, 29 Aug 2025 14:59:36 +0900 Subject: [PATCH 1/6] =?UTF-8?q?[chore]=20flyway=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EC=A3=BC=EC=9E=85=20(#282)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.gradle b/build.gradle index bc529f8d8..f49aae725 100644 --- a/build.gradle +++ b/build.gradle @@ -78,6 +78,10 @@ dependencies { // Spring Boot Actuator implementation 'org.springframework.boot:spring-boot-starter-actuator' + + // Flyway + implementation "org.flywaydb:flyway-core" + implementation "org.flywaydb:flyway-mysql" } def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile From 71d1096c68b5486c527480553150efed53bce0eb Mon Sep 17 00:00:00 2001 From: janghyunjun Date: Fri, 29 Aug 2025 14:59:45 +0900 Subject: [PATCH 2/6] [infra] baseline sql (#282) --- src/main/resources/db/migration/V1__BaseLine.sql | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/db/migration/V1__BaseLine.sql diff --git a/src/main/resources/db/migration/V1__BaseLine.sql b/src/main/resources/db/migration/V1__BaseLine.sql new file mode 100644 index 000000000..e69de29bb From 1b1f6cf85fd0c96f102c8764fac5a472219102f6 Mon Sep 17 00:00:00 2001 From: janghyunjun Date: Fri, 29 Aug 2025 15:00:01 +0900 Subject: [PATCH 3/6] =?UTF-8?q?[refactor]=20room=20status=20=EC=BB=AC?= =?UTF-8?q?=EB=9F=BC=20=EC=B6=94=EA=B0=80=20sql=20=EB=A7=88=EC=9D=B4?= =?UTF-8?q?=EA=B7=B8=EB=A0=88=EC=9D=B4=EC=85=98=20(#282)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/migration/V250828__Add_room_status.sql | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/main/resources/db/migration/V250828__Add_room_status.sql diff --git a/src/main/resources/db/migration/V250828__Add_room_status.sql b/src/main/resources/db/migration/V250828__Add_room_status.sql new file mode 100644 index 000000000..1d715cf29 --- /dev/null +++ b/src/main/resources/db/migration/V250828__Add_room_status.sql @@ -0,0 +1,14 @@ +-- 1) 컬럼 추가: 기본값 RECRUITING, NOT NULL +ALTER TABLE rooms + ADD COLUMN room_status VARCHAR(32) NOT NULL DEFAULT 'RECRUITING' + COMMENT 'Room 상태: RECRUITING/IN_PROGRESS/EXPIRED'; + +-- 2) start_date가 현재 날짜보다 "이후"이면 IN_PROGRESS로 업데이트 +UPDATE rooms +SET room_status = 'IN_PROGRESS' +WHERE start_date >= CURDATE(); + +-- 3) end_date가 현재 날짜보다 "이전"이면 EXPIRED로 업데이트 +UPDATE rooms +SET room_status = 'EXPIRED' +WHERE end_date < CURDATE(); \ No newline at end of file From 1d5eeb12bf5000dcbe801a39ad3adeb0094c2701 Mon Sep 17 00:00:00 2001 From: janghyunjun Date: Fri, 29 Aug 2025 16:24:11 +0900 Subject: [PATCH 4/6] =?UTF-8?q?[refactor]=20room=20status=20=EC=BB=AC?= =?UTF-8?q?=EB=9F=BC=20=EC=A1=B0=EA=B1=B4=20=EC=88=98=EC=A0=95=20(#282)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/db/migration/V250828__Add_room_status.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/db/migration/V250828__Add_room_status.sql b/src/main/resources/db/migration/V250828__Add_room_status.sql index 1d715cf29..11b1dcdfa 100644 --- a/src/main/resources/db/migration/V250828__Add_room_status.sql +++ b/src/main/resources/db/migration/V250828__Add_room_status.sql @@ -6,7 +6,7 @@ ALTER TABLE rooms -- 2) start_date가 현재 날짜보다 "이후"이면 IN_PROGRESS로 업데이트 UPDATE rooms SET room_status = 'IN_PROGRESS' -WHERE start_date >= CURDATE(); +WHERE start_date <= CURDATE(); -- 3) end_date가 현재 날짜보다 "이전"이면 EXPIRED로 업데이트 UPDATE rooms From 0219ab44c740cb9bbe43cb9ef919915bbc4a009c Mon Sep 17 00:00:00 2001 From: janghyunjun Date: Fri, 29 Aug 2025 16:27:22 +0900 Subject: [PATCH 5/6] =?UTF-8?q?[refactor]=20room=20=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EB=B8=94=EC=97=90=20RoomStatus=20=EC=BB=AC=EB=9F=BC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20(#282)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java | 6 ++++++ .../java/konkuk/thip/room/adapter/out/jpa/RoomStatus.java | 7 +++++++ .../konkuk/thip/room/adapter/out/mapper/RoomMapper.java | 2 ++ src/main/java/konkuk/thip/room/domain/Room.java | 4 ++++ 4 files changed, 19 insertions(+) create mode 100644 src/main/java/konkuk/thip/room/adapter/out/jpa/RoomStatus.java diff --git a/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java b/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java index ce51508d9..c3b92ac6c 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java +++ b/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java @@ -50,6 +50,11 @@ public class RoomJpaEntity extends BaseJpaEntity { @Column(name = "member_count",nullable = false) private int memberCount = 1; + @Builder.Default + @Column(name = "room_status", nullable = false) + @Enumerated(EnumType.STRING) + private RoomStatus roomStatus = RoomStatus.RECRUITING; + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "book_id", nullable = false) private BookJpaEntity bookJpaEntity; @@ -68,6 +73,7 @@ public RoomJpaEntity updateFrom(Room room) { this.endDate = room.getEndDate(); this.recruitCount = room.getRecruitCount(); this.memberCount = room.getMemberCount(); + this.roomStatus = room.getRoomStatus(); return this; } diff --git a/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomStatus.java b/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomStatus.java new file mode 100644 index 000000000..b1952c30f --- /dev/null +++ b/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomStatus.java @@ -0,0 +1,7 @@ +package konkuk.thip.room.adapter.out.jpa; + +public enum RoomStatus { + RECRUITING, + IN_PROGRESS, + EXPIRED +} diff --git a/src/main/java/konkuk/thip/room/adapter/out/mapper/RoomMapper.java b/src/main/java/konkuk/thip/room/adapter/out/mapper/RoomMapper.java index 125ff96b2..5dd3ebe81 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/mapper/RoomMapper.java +++ b/src/main/java/konkuk/thip/room/adapter/out/mapper/RoomMapper.java @@ -19,6 +19,7 @@ public RoomJpaEntity toJpaEntity(Room room, BookJpaEntity bookJpaEntity) { .endDate(room.getEndDate()) .recruitCount(room.getRecruitCount()) .memberCount(room.getMemberCount()) + .roomStatus(room.getRoomStatus()) .bookJpaEntity(bookJpaEntity) .category(room.getCategory()) .build(); @@ -36,6 +37,7 @@ public Room toDomainEntity(RoomJpaEntity roomJpaEntity) { .endDate(roomJpaEntity.getEndDate()) .recruitCount(roomJpaEntity.getRecruitCount()) .memberCount(roomJpaEntity.getMemberCount()) + .roomStatus(roomJpaEntity.getRoomStatus()) .bookId(roomJpaEntity.getBookJpaEntity().getBookId()) .category(roomJpaEntity.getCategory()) .createdAt(roomJpaEntity.getCreatedAt()) diff --git a/src/main/java/konkuk/thip/room/domain/Room.java b/src/main/java/konkuk/thip/room/domain/Room.java index 6e4d73a11..010198b5b 100644 --- a/src/main/java/konkuk/thip/room/domain/Room.java +++ b/src/main/java/konkuk/thip/room/domain/Room.java @@ -4,6 +4,7 @@ import konkuk.thip.common.exception.InvalidStateException; import konkuk.thip.common.entity.StatusType; import konkuk.thip.common.exception.code.ErrorCode; +import konkuk.thip.room.adapter.out.jpa.RoomStatus; import konkuk.thip.room.domain.value.Category; import lombok.Getter; import lombok.experimental.SuperBuilder; @@ -40,6 +41,8 @@ public class Room extends BaseDomainEntity { private int memberCount; + private RoomStatus roomStatus; + private Long bookId; private Category category; @@ -62,6 +65,7 @@ public static Room withoutId(String title, String description, boolean isPublic, .endDate(endDate) .recruitCount(recruitCount) .memberCount(1) // 처음 Room 생성 시 방장 1명 + .roomStatus(RoomStatus.RECRUITING) // 처음 Room 생성 시 -> 모집중 .bookId(bookId) .category(category) .build(); From 1d39c2069e1a4e09dce93db754913b1fae928287 Mon Sep 17 00:00:00 2001 From: janghyunjun Date: Fri, 29 Aug 2025 16:48:06 +0900 Subject: [PATCH 6/6] =?UTF-8?q?[refactor]=20=EC=BF=BC=EB=A6=AC=20=EC=A3=BC?= =?UTF-8?q?=EC=84=9D=20=EB=B3=80=EA=B2=BD=20(#282)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/db/migration/V250828__Add_room_status.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/db/migration/V250828__Add_room_status.sql b/src/main/resources/db/migration/V250828__Add_room_status.sql index 11b1dcdfa..0110d59de 100644 --- a/src/main/resources/db/migration/V250828__Add_room_status.sql +++ b/src/main/resources/db/migration/V250828__Add_room_status.sql @@ -3,7 +3,7 @@ ALTER TABLE rooms ADD COLUMN room_status VARCHAR(32) NOT NULL DEFAULT 'RECRUITING' COMMENT 'Room 상태: RECRUITING/IN_PROGRESS/EXPIRED'; --- 2) start_date가 현재 날짜보다 "이후"이면 IN_PROGRESS로 업데이트 +-- 2) start_date가 현재 날짜보다 "이전"이면 IN_PROGRESS로 업데이트 UPDATE rooms SET room_status = 'IN_PROGRESS' WHERE start_date <= CURDATE();