Seria correto tb implementar funções dentro da model para "converter", como no exemplo abaixo? É menos trabalhoso e evita criar várias classes "mappers" para várias entidades.
package br.com.forum.model
import br.com.forum.dto.TopicoDto
import br.com.forum.dto.TopicoView
import br.com.forum.model.enum.StatusTopico
import java.time.LocalDateTime
data class Topico(
val id: Long? = null,
val titulo: String,
val mensagem: String,
val dataCriacao: LocalDateTime = LocalDateTime.now(),
val curso: Curso,
val autor: Usuario,
val status: StatusTopico = StatusTopico.NAO_RESPONDIDO,
val respostas: List<Resposta>? = ArrayList(),
)
fun Topico.TopicoView() = TopicoView(
id = id,
titulo = titulo,
mensagem = mensagem,
dataCriacao = dataCriacao,
status = status
)
fun Topico.ToDto() = TopicoDto(
id = id,
titulo = titulo,
mensagem = mensagem,
cursoId = curso.id,
autorId = autor.id
)
fun TopicoDto.ToDomain() = Topico(
id = id,
titulo = titulo,
mensagem = mensagem,
curso = Curso(
id = cursoId,
nome = "",
categoria = ""
),
autor = Usuario(
id = autorId,
nome = "",
email = ""
)
)
fun TopicoView.ToDomain() = Topico(
id = id,
titulo = titulo,
mensagem = mensagem,
curso = Curso(
id = cursoId,
nome = "",
categoria = ""
),
autor = Usuario(
id = autorId,
nome = "",
email = ""
)
)