Skip to content

Commit

Permalink
refactor: (#281) UseCase의 Response Wrapping 동작 이전
Browse files Browse the repository at this point in the history
  • Loading branch information
khcho0125 committed Jan 11, 2023
1 parent d99a5ec commit dcf74e4
Show file tree
Hide file tree
Showing 8 changed files with 30 additions and 105 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package team.comit.simtong.domain.holiday.usecase

import team.comit.simtong.domain.holiday.dto.QueryEmployeeHolidayResponse
import team.comit.simtong.domain.holiday.model.value.HolidayQueryType
import team.comit.simtong.domain.holiday.spi.HolidayQueryUserPort
import team.comit.simtong.domain.holiday.spi.HolidaySecurityPort
import team.comit.simtong.domain.holiday.spi.QueryHolidayPort
import team.comit.simtong.domain.holiday.spi.vo.EmployeeHoliday
import team.comit.simtong.domain.user.exception.UserExceptions
import team.comit.simtong.global.annotation.ReadOnlyUseCase
import java.util.UUID
Expand All @@ -28,31 +28,16 @@ class QueryEmployeeHolidayUseCase(
private val queryUserPort: HolidayQueryUserPort
) {

fun execute(year: Int, month: Int, type: HolidayQueryType, teamId: UUID?): QueryEmployeeHolidayResponse {
fun execute(year: Int, month: Int, type: HolidayQueryType, teamId: UUID?): List<EmployeeHoliday> {
val currentUserId = securityPort.getCurrentUserId()
val user = queryUserPort.queryUserById(currentUserId) ?: throw UserExceptions.NotFound()

val holidays = queryHolidayPort.queryHolidaysByYearAndMonthAndTeamId(
return queryHolidayPort.queryHolidaysByYearAndMonthAndTeamId(
year = year,
month = month,
type = type.toHolidayType(),
spotId = user.spotId,
teamId = teamId
)

val response = holidays.map {
QueryEmployeeHolidayResponse.Holiday(
date = it.date,
type = it.type,
user = QueryEmployeeHolidayResponse.Holiday.Employee(
id = it.userId,
name = it.userName,
team = it.teamName,
spot = it.spotName
)
)
}

return QueryEmployeeHolidayResponse(response)
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package team.comit.simtong.domain.holiday.usecase

import team.comit.simtong.domain.holiday.dto.IndividualHolidayResponse
import team.comit.simtong.domain.holiday.dto.QueryIndividualHolidaysResponse
import team.comit.simtong.domain.holiday.dto.QueryIndividualRequest
import team.comit.simtong.domain.holiday.model.value.HolidayStatus
import team.comit.simtong.domain.holiday.model.Holiday
import team.comit.simtong.domain.holiday.spi.HolidaySecurityPort
import team.comit.simtong.domain.holiday.spi.QueryHolidayPort
import team.comit.simtong.global.annotation.ReadOnlyUseCase
Expand All @@ -22,23 +20,14 @@ class QueryIndividualHolidayUseCase(
private val securityPort: HolidaySecurityPort
) {

fun execute(request: QueryIndividualRequest) : QueryIndividualHolidaysResponse {
fun execute(request: QueryIndividualRequest): List<Holiday> {
val currentUserId = securityPort.getCurrentUserId()

val holidays = queryHolidayPort.queryHolidaysByPeriodAndUserIdAndStatus(
return queryHolidayPort.queryHolidaysByPeriodAndUserIdAndStatus(
startAt = request.startAt,
endAt = request.endAt,
userId = currentUserId,
status = HolidayStatus.valueOf(request.status)
status = request.status
)

val response = holidays.map {
IndividualHolidayResponse(
date = it.date,
type = it.type.name
)
}

return QueryIndividualHolidaysResponse(response)
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package team.comit.simtong.domain.menu.usecase

import team.comit.simtong.domain.menu.dto.MenuResponse
import team.comit.simtong.domain.menu.model.Menu
import team.comit.simtong.domain.menu.spi.MenuQueryUserPort
import team.comit.simtong.domain.menu.spi.MenuSecurityPort
import team.comit.simtong.domain.menu.spi.QueryMenuPort
Expand All @@ -14,7 +14,7 @@ import java.time.LocalDate
*
* @author kimbeomjin
* @date 2022/09/21
* @version 1.0.0
* @version 1.2.5
**/
@ReadOnlyUseCase
class QueryMenuByMonthUseCase(
Expand All @@ -23,13 +23,10 @@ class QueryMenuByMonthUseCase(
private val menuSecurityPort: MenuSecurityPort
) {

fun execute(startAt: LocalDate, endAt: LocalDate): MenuResponse {
fun execute(startAt: LocalDate, endAt: LocalDate): List<Menu> {
val currentUserId = menuSecurityPort.getCurrentUserId()
val user = queryUserPort.queryUserById(currentUserId) ?: throw UserExceptions.NotFound()

val menu = queryMenuPort.queryMenusByPeriodAndSpotId(startAt, endAt, user.spotId)
val result = menu.map { MenuResponse.MenuElement(it.date, it.meal) }

return MenuResponse(result)
return queryMenuPort.queryMenusByPeriodAndSpotId(startAt, endAt, user.spotId)
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package team.comit.simtong.domain.menu.usecase

import team.comit.simtong.domain.menu.dto.MenuResponse
import team.comit.simtong.domain.menu.model.Menu
import team.comit.simtong.domain.menu.spi.QueryMenuPort
import team.comit.simtong.domain.spot.model.Spot
import team.comit.simtong.global.annotation.ReadOnlyUseCase
Expand All @@ -12,17 +12,14 @@ import java.time.LocalDate
*
* @author kimbeomjin
* @date 2022/10/11
* @version 1.0.0
* @version 1.2.5
**/
@ReadOnlyUseCase
class QueryPublicMenuUseCase(
private val queryMenuPort: QueryMenuPort,
) {

fun execute(startAt: LocalDate, endAt: LocalDate): MenuResponse {
val menu = queryMenuPort.queryMenusByPeriodAndSpotName(startAt, endAt, Spot.HEAD_SHOP)
val result = menu.map { MenuResponse.MenuElement(it.date, it.meal) }

return MenuResponse(result)
fun execute(startAt: LocalDate, endAt: LocalDate): List<Menu> {
return queryMenuPort.queryMenusByPeriodAndSpotName(startAt, endAt, Spot.HEAD_SHOP)
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package team.comit.simtong.domain.schedule.usecase

import team.comit.simtong.domain.schedule.dto.QueryEntireSpotScheduleResponse
import team.comit.simtong.domain.schedule.dto.SpotScheduleResponse
import team.comit.simtong.domain.schedule.model.value.Scope
import team.comit.simtong.domain.schedule.spi.QuerySchedulePort
import team.comit.simtong.domain.schedule.spi.vo.SpotSchedule
import team.comit.simtong.global.annotation.ReadOnlyUseCase
import java.time.LocalDate

Expand All @@ -20,22 +19,7 @@ class QueryEntireSpotScheduleUseCase(
private val querySchedulePort: QuerySchedulePort
) {

fun execute(startAt: LocalDate, endAt: LocalDate): QueryEntireSpotScheduleResponse {
val list = querySchedulePort.querySpotSchedulesByPeriodAndScope(startAt, endAt, Scope.ENTIRE)

val response = list.map {
SpotScheduleResponse(
id = it.id,
startAt = it.startAt,
endAt = it.endAt,
title = it.title,
spot = SpotScheduleResponse.SpotElement(
id = it.spotId,
name = it.spotName
)
)
}

return QueryEntireSpotScheduleResponse(response)
fun execute(startAt: LocalDate, endAt: LocalDate): List<SpotSchedule> {
return querySchedulePort.querySpotSchedulesByPeriodAndScope(startAt, endAt, Scope.ENTIRE)
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package team.comit.simtong.domain.schedule.usecase

import team.comit.simtong.domain.schedule.dto.QueryIndividualSpotScheduleResponse
import team.comit.simtong.domain.schedule.dto.ScheduleResponse
import team.comit.simtong.domain.schedule.model.Schedule
import team.comit.simtong.domain.schedule.model.value.Scope
import team.comit.simtong.domain.schedule.spi.QuerySchedulePort
import team.comit.simtong.domain.schedule.spi.ScheduleQueryUserPort
Expand All @@ -16,7 +15,7 @@ import java.time.LocalDate
*
* @author kimbeomjin
* @date 2022/12/02
* @version 1.0.0
* @version 1.2.5
**/
@ReadOnlyUseCase
class QueryIndividualSpotScheduleUseCase(
Expand All @@ -25,7 +24,7 @@ class QueryIndividualSpotScheduleUseCase(
private val securityPort: ScheduleSecurityPort
) {

fun execute(startAt: LocalDate, endAt: LocalDate): QueryIndividualSpotScheduleResponse {
fun execute(startAt: LocalDate, endAt: LocalDate): List<Schedule> {
val user = queryUserPort.queryUserById(securityPort.getCurrentUserId())
?: throw UserExceptions.NotFound()

Expand All @@ -37,19 +36,7 @@ class QueryIndividualSpotScheduleUseCase(
startAt, endAt, user.spotId, Scope.ENTIRE
)

val schedules = (ownSpotSchedules + individualSchedules) // 개인 일정과 소속 지점 일정 합치기
.sortedBy { it.startAt } // 시작일 기준 오름차순으로 정렬

val response = schedules.map {
ScheduleResponse(
id = it.id,
startAt = it.startAt,
endAt = it.endAt,
title = it.title,
scope = it.scope
)
}

return QueryIndividualSpotScheduleResponse(response)
return (ownSpotSchedules + individualSchedules) // 개인 일정과 소속 지점 일정 합치기
.sortedBy(Schedule::startAt) // 시작일 기준 오름차순으로 정렬
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package team.comit.simtong.domain.spot.usecase

import team.comit.simtong.domain.spot.dto.SpotResponse
import team.comit.simtong.domain.spot.model.Spot
import team.comit.simtong.domain.spot.spi.QuerySpotPort
import team.comit.simtong.global.annotation.ReadOnlyUseCase

Expand All @@ -17,15 +17,7 @@ class ShowSpotListUseCase(
private val querySpotPort: QuerySpotPort
) {

fun execute(): SpotResponse {
val result = querySpotPort.queryAllSpot().map {
SpotResponse.SpotElement(
id = it.id,
name = it.name,
location = it.location
)
}

return SpotResponse(result)
fun execute(): List<Spot> {
return querySpotPort.queryAllSpot()
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package team.comit.simtong.domain.team.usecase

import team.comit.simtong.domain.team.dto.QueryTeamsResponse
import team.comit.simtong.domain.team.model.Team
import team.comit.simtong.domain.team.spi.QueryTeamPort
import team.comit.simtong.global.annotation.ReadOnlyUseCase
import java.util.UUID
Expand All @@ -10,6 +10,7 @@ import java.util.UUID
* 팀 리스트를 조회하는 QueryTeamsUseCase
*
* @author kimbeomjin
* @author Chokyunghyeon
* @date 2022/12/20
* @version 1.0.0
**/
Expand All @@ -18,14 +19,7 @@ class QueryTeamsUseCase(
private val queryTeamPort: QueryTeamPort
) {

fun execute(spotId: UUID): QueryTeamsResponse {
val teams = queryTeamPort.queryTeamsBySpotId(spotId).map {
QueryTeamsResponse.TeamElement(
id = it.id,
name = it.name
)
}

return QueryTeamsResponse(teams)
fun execute(spotId: UUID): List<Team> {
return queryTeamPort.queryTeamsBySpotId(spotId)
}
}

0 comments on commit dcf74e4

Please sign in to comment.