Как структурировать класс DTO в проекте чистой архитектуры с помощью parcelize?
Я работаю над приложением для Android в Kotlin и пытаюсь реализовать чистую архитектуру с моделями просмотра, репозиториями, источниками данных, интерфейсами и т. Д.
Прямо сейчас у меня есть класс DTO, который я разбираю с помощью Retrofit:
@Parcelize
data class NewsArticleDto(
val author: String, val title: String, val description: String,
val url: String, val urlToImage: String, val publishedAt: String, val content: String
) : Parcelable
Я хотел бы, чтобы интерактор под названием "GetNews" получал данные из NewsRepository, который, в свою очередь, получает их из источника данных (модификация), сопоставляет их с объектами NewsArticle и отправляет список NewsArticles обратно в модель просмотра.
Уровень данных находится внутри другого модуля ("ядра"), который представляет собой библиотеку Java. Репозиторий / интеракторы не знают о классе DTO, так как он находится в модуле "app".
Основной модуль не должен знать о модуле "приложение". Там тоже не должно быть SDK-логики, насколько я понимаю.
Итак, проблема здесь в том, что интерактор не знает о классе DTO, и если я полностью перенесу его в "основной" модуль, Android Studio не сможет обрабатывать @parcelize и parcelable.
Как мне структурировать свой проект, или я слишком много занимаюсь разработкой и должен ли я вообще оставить DTO в модуле "app"? Если так, то я все равно не смогу использовать интерактивник GetNews.
Это интерактор GetNews:
class GetNews(private val newsRepository: NewsRepository) {
suspend operator fun invoke(keyword: String, apiKey: String): Result<List<NewsArticle>> =
try {
newsRepository.getNews(keyword, apiKey) as Result<List<NewsArticle>>
} catch (throwable: Throwable) {
Result.Failure(throwable)
}
}
Что я пробовал:
Перемещение dto на уровень данных (не работает из-за отсутствия зависимостей)
Пробное решение отсюда: Kotlin 1.3.50 Parcelize unresolved reference error
Это моя структура проекта:
] 1
Любая помощь приветствуется.