refactor: user 내 DTO, Mapper 패키지 분리

This commit is contained in:
이상진 2025-10-07 17:03:49 +09:00
parent ef64a740c2
commit 038381424c
13 changed files with 53 additions and 44 deletions

View File

@ -13,7 +13,7 @@ import com.sangdol.roomescape.schedule.infrastructure.persistence.ScheduleStatus
import com.sangdol.roomescape.schedule.web.ScheduleOverviewResponse import com.sangdol.roomescape.schedule.web.ScheduleOverviewResponse
import com.sangdol.roomescape.theme.business.ThemeService import com.sangdol.roomescape.theme.business.ThemeService
import com.sangdol.roomescape.user.business.UserService import com.sangdol.roomescape.user.business.UserService
import com.sangdol.roomescape.user.web.UserContactResponse import com.sangdol.roomescape.user.dto.UserContactResponse
import io.github.oshai.kotlinlogging.KLogger import io.github.oshai.kotlinlogging.KLogger
import io.github.oshai.kotlinlogging.KotlinLogging import io.github.oshai.kotlinlogging.KotlinLogging
import org.springframework.data.repository.findByIdOrNull import org.springframework.data.repository.findByIdOrNull
@ -159,5 +159,4 @@ class ReservationService(
} }
} }
} }

View File

@ -4,7 +4,7 @@ import com.sangdol.roomescape.payment.web.PaymentWithDetailResponse
import com.sangdol.roomescape.reservation.infrastructure.persistence.ReservationEntity import com.sangdol.roomescape.reservation.infrastructure.persistence.ReservationEntity
import com.sangdol.roomescape.reservation.infrastructure.persistence.ReservationStatus import com.sangdol.roomescape.reservation.infrastructure.persistence.ReservationStatus
import com.sangdol.roomescape.schedule.web.ScheduleOverviewResponse import com.sangdol.roomescape.schedule.web.ScheduleOverviewResponse
import com.sangdol.roomescape.user.web.UserContactResponse import com.sangdol.roomescape.user.dto.UserContactResponse
import jakarta.validation.constraints.NotEmpty import jakarta.validation.constraints.NotEmpty
import java.time.Instant import java.time.Instant
import java.time.LocalDate import java.time.LocalDate

View File

@ -2,15 +2,15 @@ package com.sangdol.roomescape.user.business
import com.sangdol.common.persistence.IDGenerator import com.sangdol.common.persistence.IDGenerator
import com.sangdol.roomescape.common.types.CurrentUserContext import com.sangdol.roomescape.common.types.CurrentUserContext
import com.sangdol.roomescape.user.business.dto.UserLoginCredentials import com.sangdol.roomescape.user.dto.UserContactResponse
import com.sangdol.roomescape.user.business.dto.toCredentials import com.sangdol.roomescape.user.dto.UserCreateRequest
import com.sangdol.roomescape.user.dto.UserCreateResponse
import com.sangdol.roomescape.user.dto.UserLoginCredentials
import com.sangdol.roomescape.user.exception.UserErrorCode import com.sangdol.roomescape.user.exception.UserErrorCode
import com.sangdol.roomescape.user.exception.UserException import com.sangdol.roomescape.user.exception.UserException
import com.sangdol.roomescape.user.infrastructure.persistence.* import com.sangdol.roomescape.user.infrastructure.persistence.*
import com.sangdol.roomescape.user.web.UserContactResponse import com.sangdol.roomescape.user.mapper.toCredentials
import com.sangdol.roomescape.user.web.UserCreateRequest import com.sangdol.roomescape.user.mapper.toEntity
import com.sangdol.roomescape.user.web.UserCreateResponse
import com.sangdol.roomescape.user.web.toEntity
import io.github.oshai.kotlinlogging.KLogger import io.github.oshai.kotlinlogging.KLogger
import io.github.oshai.kotlinlogging.KotlinLogging import io.github.oshai.kotlinlogging.KotlinLogging
import org.springframework.data.repository.findByIdOrNull import org.springframework.data.repository.findByIdOrNull

View File

@ -4,9 +4,9 @@ import com.sangdol.common.types.web.CommonApiResponse
import com.sangdol.roomescape.auth.web.support.Public import com.sangdol.roomescape.auth.web.support.Public
import com.sangdol.roomescape.auth.web.support.User import com.sangdol.roomescape.auth.web.support.User
import com.sangdol.roomescape.common.types.CurrentUserContext import com.sangdol.roomescape.common.types.CurrentUserContext
import com.sangdol.roomescape.user.web.UserContactResponse import com.sangdol.roomescape.user.dto.UserContactResponse
import com.sangdol.roomescape.user.web.UserCreateRequest import com.sangdol.roomescape.user.dto.UserCreateRequest
import com.sangdol.roomescape.user.web.UserCreateResponse import com.sangdol.roomescape.user.dto.UserCreateResponse
import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.responses.ApiResponse import io.swagger.v3.oas.annotations.responses.ApiResponse
import io.swagger.v3.oas.annotations.responses.ApiResponses import io.swagger.v3.oas.annotations.responses.ApiResponses

View File

@ -1,4 +1,4 @@
package com.sangdol.roomescape.user.web package com.sangdol.roomescape.user.dto
import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity
import com.sangdol.roomescape.user.infrastructure.persistence.UserStatus import com.sangdol.roomescape.user.infrastructure.persistence.UserStatus
@ -27,23 +27,7 @@ data class UserCreateRequest(
val regionCode: String?, val regionCode: String?,
) )
fun UserCreateRequest.toEntity(id: Long, status: UserStatus) = UserEntity(
id = id,
name = this.name,
email = this.email,
password = this.password,
phone = this.phone,
regionCode = this.regionCode,
status = status
)
data class UserCreateResponse( data class UserCreateResponse(
val id: Long, val id: Long,
val name: String val name: String
) )
data class UserContactResponse(
val id: Long,
val name: String,
val phone: String
)

View File

@ -0,0 +1,8 @@
package com.sangdol.roomescape.user.dto
data class UserContactResponse(
val id: Long,
val name: String,
val phone: String
)

View File

@ -1,8 +1,7 @@
package com.sangdol.roomescape.user.business.dto package com.sangdol.roomescape.user.dto
import com.sangdol.roomescape.auth.web.LoginCredentials import com.sangdol.roomescape.auth.web.LoginCredentials
import com.sangdol.roomescape.auth.web.LoginSuccessResponse import com.sangdol.roomescape.auth.web.LoginSuccessResponse
import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity
data class UserLoginCredentials( data class UserLoginCredentials(
override val id: Long, override val id: Long,
@ -15,13 +14,7 @@ data class UserLoginCredentials(
) )
} }
fun UserEntity.toCredentials() = UserLoginCredentials(
id = this.id,
password = this.password,
name = this.name,
)
data class UserLoginSuccessResponse( data class UserLoginSuccessResponse(
override val accessToken: String, override val accessToken: String,
override val name: String, override val name: String,
) : LoginSuccessResponse() ) : LoginSuccessResponse()

View File

@ -0,0 +1,22 @@
package com.sangdol.roomescape.user.mapper
import com.sangdol.roomescape.user.dto.UserCreateRequest
import com.sangdol.roomescape.user.dto.UserLoginCredentials
import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity
import com.sangdol.roomescape.user.infrastructure.persistence.UserStatus
fun UserCreateRequest.toEntity(id: Long, status: UserStatus) = UserEntity(
id = id,
name = this.name,
email = this.email,
password = this.password,
phone = this.phone,
regionCode = this.regionCode,
status = status
)
fun UserEntity.toCredentials() = UserLoginCredentials(
id = this.id,
password = this.password,
name = this.name,
)

View File

@ -5,6 +5,9 @@ import com.sangdol.roomescape.auth.web.support.User
import com.sangdol.roomescape.common.types.CurrentUserContext import com.sangdol.roomescape.common.types.CurrentUserContext
import com.sangdol.roomescape.user.business.UserService import com.sangdol.roomescape.user.business.UserService
import com.sangdol.roomescape.user.docs.UserAPI import com.sangdol.roomescape.user.docs.UserAPI
import com.sangdol.roomescape.user.dto.UserContactResponse
import com.sangdol.roomescape.user.dto.UserCreateRequest
import com.sangdol.roomescape.user.dto.UserCreateResponse
import jakarta.validation.Valid import jakarta.validation.Valid
import org.springframework.http.ResponseEntity import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.* import org.springframework.web.bind.annotation.*

View File

@ -19,7 +19,7 @@ import com.sangdol.roomescape.theme.infrastructure.persistence.ThemeEntity
import com.sangdol.roomescape.user.business.SIGNUP import com.sangdol.roomescape.user.business.SIGNUP
import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity
import com.sangdol.roomescape.user.infrastructure.persistence.UserStatus import com.sangdol.roomescape.user.infrastructure.persistence.UserStatus
import com.sangdol.roomescape.user.web.UserContactResponse import com.sangdol.roomescape.user.dto.UserContactResponse
import io.kotest.core.test.TestCaseOrder import io.kotest.core.test.TestCaseOrder
import jakarta.persistence.EntityManager import jakarta.persistence.EntityManager
import kotlinx.coroutines.* import kotlinx.coroutines.*

View File

@ -22,8 +22,8 @@ import com.sangdol.roomescape.theme.infrastructure.persistence.ThemeEntity
import com.sangdol.roomescape.theme.web.ThemeCreateRequest import com.sangdol.roomescape.theme.web.ThemeCreateRequest
import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity
import com.sangdol.roomescape.user.infrastructure.persistence.UserStatus import com.sangdol.roomescape.user.infrastructure.persistence.UserStatus
import com.sangdol.roomescape.user.web.MIN_PASSWORD_LENGTH import com.sangdol.roomescape.user.dto.MIN_PASSWORD_LENGTH
import com.sangdol.roomescape.user.web.UserCreateRequest import com.sangdol.roomescape.user.dto.UserCreateRequest
import java.time.LocalDate import java.time.LocalDate
import java.time.LocalTime import java.time.LocalTime

View File

@ -9,7 +9,7 @@ import com.sangdol.roomescape.auth.web.PrincipalType
import com.sangdol.roomescape.store.infrastructure.persistence.StoreRepository import com.sangdol.roomescape.store.infrastructure.persistence.StoreRepository
import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity
import com.sangdol.roomescape.user.infrastructure.persistence.UserRepository import com.sangdol.roomescape.user.infrastructure.persistence.UserRepository
import com.sangdol.roomescape.user.web.UserCreateRequest import com.sangdol.roomescape.user.dto.UserCreateRequest
import io.restassured.module.kotlin.extensions.Extract import io.restassured.module.kotlin.extensions.Extract
import io.restassured.module.kotlin.extensions.Given import io.restassured.module.kotlin.extensions.Given
import io.restassured.module.kotlin.extensions.Then import io.restassured.module.kotlin.extensions.Then

View File

@ -12,8 +12,8 @@ import com.sangdol.roomescape.supports.runTest
import com.sangdol.roomescape.user.business.SIGNUP import com.sangdol.roomescape.user.business.SIGNUP
import com.sangdol.roomescape.user.exception.UserErrorCode import com.sangdol.roomescape.user.exception.UserErrorCode
import com.sangdol.roomescape.user.infrastructure.persistence.* import com.sangdol.roomescape.user.infrastructure.persistence.*
import com.sangdol.roomescape.user.web.MIN_PASSWORD_LENGTH import com.sangdol.roomescape.user.dto.MIN_PASSWORD_LENGTH
import com.sangdol.roomescape.user.web.UserCreateRequest import com.sangdol.roomescape.user.dto.UserCreateRequest
import io.kotest.assertions.assertSoftly import io.kotest.assertions.assertSoftly
import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldBe
import io.mockk.every import io.mockk.every