ListTagUseCase.kt
package com.example.realworldkotlinspringbootjdbc.usecase
import arrow.core.Either
import arrow.core.right
import com.example.realworldkotlinspringbootjdbc.domain.ArticleRepository
import com.example.realworldkotlinspringbootjdbc.domain.article.Tag
import com.example.realworldkotlinspringbootjdbc.util.MyError
import org.springframework.stereotype.Service
interface ListTagUseCase {
fun execute(): Either<Error, List<Tag>> = throw NotImplementedError()
sealed interface Error : MyError
}
@Service
class ListTagUseCaseImpl(
val articleRepository: ArticleRepository
) : ListTagUseCase {
override fun execute(): Either<ListTagUseCase.Error, List<Tag>> = articleRepository.tags().fold(
{ TODO("成功する想定なため、この分岐に入ることはない。こういう時にUnexpected?") },
{ it.right() }
)
}