Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[REFACTOR/#181] 월간 캘린더 리팩토링 #182

Merged
merged 12 commits into from
Aug 18, 2024
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package com.terning.data.datasource

import com.terning.data.dto.NonDataBaseResponse
import com.terning.domain.entity.request.ScrapRequestModel
import com.terning.domain.entity.CalendarScrapRequest

interface ScrapDataSource {
suspend fun postScrap(
scrapRequestModel: ScrapRequestModel,
calendarScrapRequest: CalendarScrapRequest,
): NonDataBaseResponse

suspend fun deleteScrap(
scrapRequestModel: ScrapRequestModel,
calendarScrapRequest: CalendarScrapRequest,
): NonDataBaseResponse

suspend fun patchScrap(
scrapRequestModel: ScrapRequestModel,
calendarScrapRequest: CalendarScrapRequest,
): NonDataBaseResponse
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,24 @@ import com.terning.data.datasource.ScrapDataSource
import com.terning.data.dto.NonDataBaseResponse
import com.terning.data.dto.request.ScrapColorRequestDto
import com.terning.data.service.ScrapService
import com.terning.domain.entity.request.ScrapRequestModel
import com.terning.domain.entity.CalendarScrapRequest
import javax.inject.Inject

class ScrapDataSourceImpl @Inject constructor(
private val scrapService: ScrapService,
) : ScrapDataSource {
override suspend fun postScrap(scrapRequestModel: ScrapRequestModel): NonDataBaseResponse =
override suspend fun postScrap(calendarScrapRequest: CalendarScrapRequest): NonDataBaseResponse =
scrapService.postScrap(
scrapRequestModel.id,
ScrapColorRequestDto(scrapRequestModel.color)
calendarScrapRequest.id,
ScrapColorRequestDto(calendarScrapRequest.color)
)

override suspend fun deleteScrap(scrapRequestModel: ScrapRequestModel): NonDataBaseResponse =
scrapService.deleteScrap(scrapRequestModel.id)
override suspend fun deleteScrap(calendarScrapRequest: CalendarScrapRequest): NonDataBaseResponse =
scrapService.deleteScrap(calendarScrapRequest.id)

override suspend fun patchScrap(scrapRequestModel: ScrapRequestModel): NonDataBaseResponse =
override suspend fun patchScrap(calendarScrapRequest: CalendarScrapRequest): NonDataBaseResponse =
scrapService.patchScrap(
scrapRequestModel.id,
ScrapColorRequestDto(scrapRequestModel.color)
calendarScrapRequest.id,
ScrapColorRequestDto(calendarScrapRequest.color)
)
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.terning.data.dto.response

import com.terning.domain.entity.response.CalendarScrapDetailModel
import com.terning.domain.entity.CalendarScrapDetail
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

Expand All @@ -24,19 +24,4 @@ data class CalendarDayListResponseDto(
val startYear: Int,
@SerialName("startMonth")
val startMonth: Int
){
fun toScrapDetailModelList(): CalendarScrapDetailModel =
CalendarScrapDetailModel(
scrapId = scrapId,
internshipAnnouncementId = internshipAnnouncementId,
title = title,
dDay = dDay,
workingPeriod = workingPeriod,
color = color,
companyImage = companyImage,
startYear = startYear,
startMonth = startMonth,
deadLine = ""
)

}
)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.terning.data.dto.response

import com.terning.domain.entity.response.CalendarScrapDetailModel
import com.terning.domain.entity.CalendarScrapDetail
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

Expand Down Expand Up @@ -32,19 +32,4 @@ data class CalendarMonthListResponseDto(
@SerialName("startMonth")
val startMonth: Int
)

fun toScrapDetailModelList(): List<CalendarScrapDetailModel> = scraps.map { scrap ->
CalendarScrapDetailModel(
scrapId = scrap.scrapId,
internshipAnnouncementId = scrap.internshipAnnouncementId,
title = scrap.title,
dDay = scrap.dDay,
workingPeriod = scrap.workingPeriod,
color = scrap.color,
companyImage = scrap.companyImage,
startYear = scrap.startYear,
startMonth = scrap.startMonth,
deadLine = deadline
)
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.terning.data.dto.response

import com.terning.domain.entity.response.CalendarScrapModel
import com.terning.domain.entity.CalendarScrap
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

Expand All @@ -20,14 +20,4 @@ data class CalendarMonthResponseDto(
@SerialName("color")
val color: String
)

fun toScrapModelList(): List<CalendarScrapModel> = scraps.map { scrap ->
CalendarScrapModel(
scrapId = scrap.scrapId,
title = scrap.title,
color = scrap.color,
deadLine = deadline,
isScrapped = true
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.terning.data.mapper

import com.terning.data.dto.response.CalendarMonthListResponseDto
import com.terning.domain.entity.CalendarScrapDetail

fun CalendarMonthListResponseDto.toCalendarScrapDetailList(): List<CalendarScrapDetail> = scraps.map { scrap ->
CalendarScrapDetail(
scrapId = scrap.scrapId,
internshipAnnouncementId = scrap.internshipAnnouncementId,
title = scrap.title,
dDay = scrap.dDay,
workingPeriod = scrap.workingPeriod,
color = scrap.color,
companyImage = scrap.companyImage,
startYear = scrap.startYear,
startMonth = scrap.startMonth,
deadLine = deadline
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.terning.data.mapper

import com.terning.data.dto.response.CalendarDayListResponseDto
import com.terning.domain.entity.CalendarScrapDetail

fun CalendarDayListResponseDto.toCalendarScrapDetail() =
CalendarScrapDetail(
scrapId = scrapId,
internshipAnnouncementId = internshipAnnouncementId,
title = title,
dDay = dDay,
workingPeriod = workingPeriod,
color = color,
companyImage = companyImage,
startYear = startYear,
startMonth = startMonth,
deadLine = ""
)
14 changes: 14 additions & 0 deletions data/src/main/java/com/terning/data/mapper/CalendarScrapMapper.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.terning.data.mapper

import com.terning.data.dto.response.CalendarMonthResponseDto
import com.terning.domain.entity.CalendarScrap

fun CalendarMonthResponseDto.toCalendarScrapList(): List<CalendarScrap> = scraps.map { scrap ->
CalendarScrap(
scrapId = scrap.scrapId,
title = scrap.title,
color = scrap.color,
deadLine = deadline,
isScrapped = true
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@ import com.terning.data.datasource.CalendarDataSource
import com.terning.data.dto.request.CalendarDayListRequestDto
import com.terning.data.dto.request.CalendarMonthListRequestDto
import com.terning.data.dto.request.CalendarMonthRequestDto
import com.terning.domain.entity.response.CalendarScrapDetailModel
import com.terning.domain.entity.response.CalendarScrapModel
import com.terning.data.mapper.toCalendarScrapDetail
import com.terning.data.mapper.toCalendarScrapDetailList
import com.terning.data.mapper.toCalendarScrapList
import com.terning.domain.entity.CalendarScrapDetail
import com.terning.domain.entity.CalendarScrap
import com.terning.domain.repository.CalendarRepository
import java.time.LocalDate
import java.time.format.DateTimeFormatter
Expand All @@ -17,7 +20,7 @@ class CalendarRepositoryImpl @Inject constructor(
override suspend fun getScrapMonth(
year: Int,
month: Int
): Result<Map<String, List<CalendarScrapModel>>> =
): Result<Map<String, List<CalendarScrap>>> =
runCatching {
val result = calendarDataSource.getCalendarMonth(
request = CalendarMonthRequestDto(
Expand All @@ -27,7 +30,7 @@ class CalendarRepositoryImpl @Inject constructor(
).result

val scrapModelMapByDeadLine = result.flatMap { dto ->
dto.toScrapModelList()
dto.toCalendarScrapList()
}.groupBy { it.deadLine }

scrapModelMapByDeadLine
Expand All @@ -36,7 +39,7 @@ class CalendarRepositoryImpl @Inject constructor(
override suspend fun getScrapMonthList(
year: Int,
month: Int
): Result<Map<String, List<CalendarScrapDetailModel>>> =
): Result<Map<String, List<CalendarScrapDetail>>> =
runCatching {
val result = calendarDataSource.getCalendarMonthList(
request = CalendarMonthListRequestDto(
Expand All @@ -46,21 +49,21 @@ class CalendarRepositoryImpl @Inject constructor(
).result

val scrapModelMapByDeadLine = result.flatMap { dto ->
dto.toScrapDetailModelList()
dto.toCalendarScrapDetailList()
}.groupBy { it.deadLine }

scrapModelMapByDeadLine
}

override suspend fun getScrapDayList(
currentDate: LocalDate
): Result<List<CalendarScrapDetailModel>> =
): Result<List<CalendarScrapDetail>> =
runCatching {
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
val request = CalendarDayListRequestDto(currentDate.format(formatter))
val response = calendarDataSource.getCalendarDayList(request)
val scrapModelList = response.result.map { scrap ->
scrap.toScrapDetailModelList()
scrap.toCalendarScrapDetail()
}
scrapModelList
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
package com.terning.data.repositoryimpl

import com.terning.data.datasource.ScrapDataSource
import com.terning.domain.entity.request.ScrapRequestModel
import com.terning.domain.entity.CalendarScrapRequest
import com.terning.domain.repository.ScrapRepository
import javax.inject.Inject

class ScrapRepositoryImpl @Inject constructor(
private val scrapDataSource: ScrapDataSource,
) : ScrapRepository {
override suspend fun postScrap(scrapRequestModel: ScrapRequestModel)
override suspend fun postScrap(calendarScrapRequest: CalendarScrapRequest)
: Result<Unit> = runCatching {
scrapDataSource.postScrap(scrapRequestModel)
scrapDataSource.postScrap(calendarScrapRequest)
}

override suspend fun deleteScrap(scrapRequestModel: ScrapRequestModel)
override suspend fun deleteScrap(calendarScrapRequest: CalendarScrapRequest)
: Result<Unit> = runCatching {
scrapDataSource.deleteScrap(scrapRequestModel)
scrapDataSource.deleteScrap(calendarScrapRequest)
}

override suspend fun patchScrap(scrapRequestModel: ScrapRequestModel)
override suspend fun patchScrap(calendarScrapRequest: CalendarScrapRequest)
: Result<Unit> = runCatching {
scrapDataSource.patchScrap(scrapRequestModel)
scrapDataSource.patchScrap(calendarScrapRequest)
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.terning.domain.entity.response
package com.terning.domain.entity

data class CalendarScrapModel(
data class CalendarScrap(
val scrapId: Long,
val title: String,
val deadLine: String,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.terning.domain.entity.response
package com.terning.domain.entity

data class CalendarScrapDetailModel(
data class CalendarScrapDetail(
val scrapId: Long,
val internshipAnnouncementId: Long,
val title: String,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.terning.domain.entity

data class CalendarScrapRequest(
val id: Long,
val color: Int? = 0,
)

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.terning.domain.repository

import com.terning.domain.entity.response.CalendarScrapDetailModel
import com.terning.domain.entity.response.CalendarScrapModel
import com.terning.domain.entity.CalendarScrapDetail
import com.terning.domain.entity.CalendarScrap
import java.time.LocalDate

interface CalendarRepository{
suspend fun getScrapMonth(year: Int, month: Int): Result<Map<String, List<CalendarScrapModel>>>
suspend fun getScrapMonthList(year: Int, month: Int): Result<Map<String,List<CalendarScrapDetailModel>>>
suspend fun getScrapDayList(currentDate: LocalDate): Result<List<CalendarScrapDetailModel>>
suspend fun getScrapMonth(year: Int, month: Int): Result<Map<String, List<CalendarScrap>>>
suspend fun getScrapMonthList(year: Int, month: Int): Result<Map<String,List<CalendarScrapDetail>>>
suspend fun getScrapDayList(currentDate: LocalDate): Result<List<CalendarScrapDetail>>
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.terning.domain.repository

import com.terning.domain.entity.request.ScrapRequestModel
import com.terning.domain.entity.CalendarScrapRequest

interface ScrapRepository {
suspend fun postScrap(scrapRequestModel: ScrapRequestModel): Result<Unit>
suspend fun deleteScrap(scrapRequestModel: ScrapRequestModel): Result<Unit>
suspend fun patchScrap(scrapRequestModel: ScrapRequestModel): Result<Unit>
suspend fun postScrap(calendarScrapRequest: CalendarScrapRequest): Result<Unit>
suspend fun deleteScrap(calendarScrapRequest: CalendarScrapRequest): Result<Unit>
suspend fun patchScrap(calendarScrapRequest: CalendarScrapRequest): Result<Unit>
}
Loading
Loading