Slide 71
Slide 71 text
BFFのアプリケーション層実装例
fun getMessageBox(userId: String, salonId: String): Mono =
clientSalonRepository.getById(salonId)
.flatMap { clientSalon ->
salonRepository.getById(salonId)
.map { it.toDto() } // サロンが掲載中なら掲載情報を使って返却する
// 非掲載(掲載情報の取得に失敗した)ならサロンボードの登録情報を使って返却する
.onErrorResume { Mono.just(clientSalon.toDto()) }
}
// メッセージの検索と、未読数の取得を行う
.flatMap { messageRepository.getMessagesBySalonId(userId, salonId) }
.map { (salon, response) ->
HairMessageBox(
total = response.total,
salon = salon,
messages = response.messages.map { it.toDto() }
)
}
• Serviceの実装例、複数のAPI(Repository)を呼び出して結果を集約していく