Para deixar o código da service mais simples, dá para criar uma extension num arquivo chamado TopicoExtensions e criar uma função que converte para um TopicoView, desse forma:
//Dentro do arquivo TopicoExtensions
// !! para informar ao compilador que o id não será nulo
// = TopicoView... para realizar o retorno na mesmo linha
fun Topico.toView() = TopicoView(this.id!!, this.titulo, this.mensagem, this.status, this.dataCriacao)
Na service:
fun listar(): List<TopicoView> {
return topicos.map { topico -> topico.toView() }
}
fun buscarPorId(id: Long): TopicoView {
return topicos.first { topico -> topico.id == id }.toView()
}
As extensions ensinadas na formação da linguagem caem bem aqui ou não?