Как структурировать класс 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)
        }
}

Что я пробовал:

Это моя структура проекта:

Текст](https://imgur.com/eQ14M7H)[![Введите описание изображения здесь] 1

Любая помощь приветствуется.

0 ответов

Другие вопросы по тегам