[#44] 매장 기능 도입 #45

Merged
pricelees merged 116 commits from feat/#44 into main 2025-09-20 03:15:06 +00:00
7 changed files with 20 additions and 20 deletions
Showing only changes of commit 06549e8ac1 - Show all commits

View File

@ -131,7 +131,7 @@ class ThemeService(
request.availableMinutes,
request.expectedMinutesFrom,
request.expectedMinutesTo,
request.isOpen,
request.isActive,
).also {
log.info { "[ThemeService.updateTheme] 테마 수정 완료: id=$id, request=${request}" }
}

View File

@ -23,7 +23,7 @@ class ThemeEntity(
var expectedMinutesTo: Short,
@Column(columnDefinition = "TINYINT", length = 1)
var isOpen: Boolean
var isActive: Boolean
) : AuditingBaseEntity(id) {
fun modifyIfNotNull(
@ -37,7 +37,7 @@ class ThemeEntity(
availableMinutes: Short?,
expectedMinutesFrom: Short?,
expectedMinutesTo: Short?,
isOpen: Boolean?
isActive: Boolean?
) {
name?.let { this.name = it }
description?.let { this.description = it }
@ -49,7 +49,7 @@ class ThemeEntity(
availableMinutes?.let { this.availableMinutes = it }
expectedMinutesFrom?.let { this.expectedMinutesFrom = it }
expectedMinutesTo?.let { this.expectedMinutesTo = it }
isOpen?.let { this.isOpen = it }
isActive?.let { this.isActive = it }
}
}

View File

@ -5,8 +5,8 @@ import org.springframework.data.jpa.repository.Query
interface ThemeRepository : JpaRepository<ThemeEntity, Long> {
@Query("SELECT t FROM ThemeEntity t WHERE t.isOpen = true")
fun findOpenedThemes(): List<ThemeEntity>
@Query("SELECT t FROM ThemeEntity t WHERE t.isActive = true")
fun findActiveThemes(): List<ThemeEntity>
fun existsByName(name: String): Boolean
}

View File

@ -16,7 +16,7 @@ data class ThemeCreateRequest(
val availableMinutes: Short,
val expectedMinutesFrom: Short,
val expectedMinutesTo: Short,
val isOpen: Boolean
val isActive: Boolean
)
data class ThemeCreateResponseV2(
@ -35,7 +35,7 @@ fun ThemeCreateRequest.toEntity(id: Long) = ThemeEntity(
availableMinutes = this.availableMinutes,
expectedMinutesFrom = this.expectedMinutesFrom,
expectedMinutesTo = this.expectedMinutesTo,
isOpen = this.isOpen
isActive = this.isActive
)
data class ThemeUpdateRequest(
@ -49,7 +49,7 @@ data class ThemeUpdateRequest(
val availableMinutes: Short? = null,
val expectedMinutesFrom: Short? = null,
val expectedMinutesTo: Short? = null,
val isOpen: Boolean? = null,
val isActive: Boolean? = null,
) {
fun isAllParamsNull(): Boolean {
return name == null &&
@ -62,7 +62,7 @@ data class ThemeUpdateRequest(
availableMinutes == null &&
expectedMinutesFrom == null &&
expectedMinutesTo == null &&
isOpen == null
isActive == null
}
}
@ -71,7 +71,7 @@ data class AdminThemeSummaryResponse(
val name: String,
val difficulty: Difficulty,
val price: Int,
val isOpen: Boolean
val isActive: Boolean
)
fun ThemeEntity.toAdminThemeSummaryResponse() = AdminThemeSummaryResponse(
@ -79,7 +79,7 @@ fun ThemeEntity.toAdminThemeSummaryResponse() = AdminThemeSummaryResponse(
name = this.name,
difficulty = this.difficulty,
price = this.price,
isOpen = this.isOpen
isActive = this.isActive
)
data class AdminThemeSummaryListResponse(
@ -102,7 +102,7 @@ data class AdminThemeDetailResponse(
val availableMinutes: Short,
val expectedMinutesFrom: Short,
val expectedMinutesTo: Short,
val isOpen: Boolean,
val isActive: Boolean,
val createdAt: LocalDateTime,
val createdBy: OperatorInfo,
val updatedAt: LocalDateTime,
@ -122,7 +122,7 @@ fun ThemeEntity.toAdminThemeDetailResponse(createdBy: OperatorInfo, updatedBy: O
availableMinutes = this.availableMinutes,
expectedMinutesFrom = this.expectedMinutesFrom,
expectedMinutesTo = this.expectedMinutesTo,
isOpen = this.isOpen,
isActive = this.isActive,
createdAt = this.createdAt,
createdBy = createdBy,
updatedAt = this.updatedAt,

View File

@ -114,7 +114,7 @@ create table if not exists theme (
available_minutes smallint not null,
expected_minutes_from smallint not null,
expected_minutes_to smallint not null,
is_open boolean not null,
is_active boolean not null,
created_at timestamp not null,
created_by bigint not null,
updated_at timestamp not null,

View File

@ -168,7 +168,7 @@ object ThemeFixture {
availableMinutes = 80,
expectedMinutesFrom = 60,
expectedMinutesTo = 70,
isOpen = true
isActive = true
)
}

View File

@ -353,8 +353,8 @@ class ThemeApiTest(
context("관리자가 모든 테마를 조회한다.") {
val endpoint = "/admin/themes"
val requests = listOf(
createRequest.copy(name = "open", isOpen = true),
createRequest.copy(name = "close", isOpen = false)
createRequest.copy(name = "open", isActive = true),
createRequest.copy(name = "close", isActive = false)
)
context("권한이 없으면 접근할 수 없다.") {
@ -403,7 +403,7 @@ class ThemeApiTest(
expect = {
body("data.themes.size()", equalTo(requests.size))
assertProperties(
props = setOf("id", "name", "difficulty", "price", "isOpen"),
props = setOf("id", "name", "difficulty", "price", "isActive"),
propsNameIfList = "themes",
)
}
@ -507,7 +507,7 @@ class ThemeApiTest(
body("data.id", equalTo(createdTheme.id))
assertProperties(
props = setOf(
"id", "name", "description", "thumbnailUrl", "difficulty", "price", "isOpen",
"id", "name", "description", "thumbnailUrl", "difficulty", "price", "isActive",
"minParticipants", "maxParticipants",
"availableMinutes", "expectedMinutesFrom", "expectedMinutesTo",
"createdAt", "createdBy", "updatedAt", "updatedBy"