[#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.availableMinutes,
request.expectedMinutesFrom, request.expectedMinutesFrom,
request.expectedMinutesTo, request.expectedMinutesTo,
request.isOpen, request.isActive,
).also { ).also {
log.info { "[ThemeService.updateTheme] 테마 수정 완료: id=$id, request=${request}" } log.info { "[ThemeService.updateTheme] 테마 수정 완료: id=$id, request=${request}" }
} }

View File

@ -23,7 +23,7 @@ class ThemeEntity(
var expectedMinutesTo: Short, var expectedMinutesTo: Short,
@Column(columnDefinition = "TINYINT", length = 1) @Column(columnDefinition = "TINYINT", length = 1)
var isOpen: Boolean var isActive: Boolean
) : AuditingBaseEntity(id) { ) : AuditingBaseEntity(id) {
fun modifyIfNotNull( fun modifyIfNotNull(
@ -37,7 +37,7 @@ class ThemeEntity(
availableMinutes: Short?, availableMinutes: Short?,
expectedMinutesFrom: Short?, expectedMinutesFrom: Short?,
expectedMinutesTo: Short?, expectedMinutesTo: Short?,
isOpen: Boolean? isActive: Boolean?
) { ) {
name?.let { this.name = it } name?.let { this.name = it }
description?.let { this.description = it } description?.let { this.description = it }
@ -49,7 +49,7 @@ class ThemeEntity(
availableMinutes?.let { this.availableMinutes = it } availableMinutes?.let { this.availableMinutes = it }
expectedMinutesFrom?.let { this.expectedMinutesFrom = it } expectedMinutesFrom?.let { this.expectedMinutesFrom = it }
expectedMinutesTo?.let { this.expectedMinutesTo = 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> { interface ThemeRepository : JpaRepository<ThemeEntity, Long> {
@Query("SELECT t FROM ThemeEntity t WHERE t.isOpen = true") @Query("SELECT t FROM ThemeEntity t WHERE t.isActive = true")
fun findOpenedThemes(): List<ThemeEntity> fun findActiveThemes(): List<ThemeEntity>
fun existsByName(name: String): Boolean fun existsByName(name: String): Boolean
} }

View File

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

View File

@ -114,7 +114,7 @@ create table if not exists theme (
available_minutes smallint not null, available_minutes smallint not null,
expected_minutes_from smallint not null, expected_minutes_from smallint not null,
expected_minutes_to 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_at timestamp not null,
created_by bigint not null, created_by bigint not null,
updated_at timestamp not null, updated_at timestamp not null,

View File

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

View File

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