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

[PC-000] suspendRunCatching 추가 #26

Merged
merged 2 commits into from
Jan 8, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions core/common/src/main/java/com/puzzle/common/ResultUtil.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.puzzle.common

import kotlin.coroutines.cancellation.CancellationException

suspend inline fun <T, R> T.suspendRunCatching(crossinline block: suspend T.() -> R): Result<R> {
return try {
Result.success(block())
} catch (e: CancellationException) {
throw e
} catch (t: Throwable) {
Result.failure(t)
}
}
1 change: 1 addition & 0 deletions core/data/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ dependencies {
implementation(projects.core.domain)
implementation(projects.core.network)
implementation(projects.core.database)
implementation(projects.core.common)
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.puzzle.data.repository

import com.puzzle.common.suspendRunCatching
import com.puzzle.database.model.terms.TermEntity
import com.puzzle.database.source.term.LocalTermDataSource
import com.puzzle.domain.model.terms.Term
Expand All @@ -12,7 +13,7 @@ class TermsRepositoryImpl @Inject constructor(
private val termDataSource: TermDataSource,
private val localTermDataSource: LocalTermDataSource,
) : TermsRepository {
override suspend fun loadTerms(): Result<Unit> = runCatching {
override suspend fun loadTerms(): Result<Unit> = suspendRunCatching {
val terms = termDataSource.loadTerms()
.getOrThrow()
.toDomain()
Expand All @@ -31,8 +32,8 @@ class TermsRepositoryImpl @Inject constructor(
localTermDataSource.clearAndInsertTerms(termsEntity)
}

override suspend fun getTerms(): Result<List<Term>> = runCatching {
override suspend fun getTerms(): Result<List<Term>> = suspendRunCatching {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저번 PR에서 제가 달았던 코멘트의 의미는 get보다 의미 범위가 조금 더 좁은 단어를 말하는 거였어요!ㅎㅎ 제가 요즘 여기저기서 스코프라는 단어를 쓸 일이 좀 있었는데, 아무 생각없이 스코프라는 단어를 썼던 것 같아요 허허... 다음 PR부턴 조금 더 명확한 표현을 쓰도록 할게요...!!!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아하 괜찮습니다!!

좀 더 좁은 의미가 흠.. 네이밍이 생각이 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

localTermDataSource.getTerms()
.map { it.toDomain() }
.map(TermEntity::toDomain)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 👍

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import java.time.LocalDateTime
data class LoadTermsResponse(
val responses: List<TermResponse>?,
) {
fun toDomain() = responses?.map { it.toDomain() } ?: emptyList()
fun toDomain() = responses?.map(TermResponse::toDomain) ?: emptyList()
}

@Serializable
Expand Down
Loading