Шаблон репозитория Android преобразует комнату в модель домена

Я отчаянно ищу возможность преобразовать модель комнаты в модель домена, чтобы включить автономные функции для моего приложения. Я успешно реализовал этот шаблон, как описано в этой лаборатории кода: https://codelabs.developers.google.com/codelabs/kotlin-android-training-repository/#0

Но я использую в своей доменной модели библиотеку пейджинга -> PagedList<com.trashmaster.muellmister.network.Place> и мне нужно преобразовать ее в PagedList<com.trashmaster.muellmister.data.Place> для вставки данных. введите здесь описание изображения

В моей ViewModel с другой стороны мне нужно (преобразовать модель комнаты в сетевую модель.

var properties: LiveData<PagedList<com.trashmaster.muellmister.network.Place>> (ViewModel)

Есть ли какие-то лучшие практики? Можно ли объединить сетевую модель данных с моделью данных помещения?

Онлайн-функциональность работает безупречно, но реализовать автономную функциональность с источником данных Paging в сочетании сложно.

Вот путь к моему источнику

https://gist.github.com/DoomMortal/fa2c243d13d72a37988d12096cf8312a

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

заранее спасибо


person Max Mustermann    schedule 08.07.2020    source источник


Ответы (1)


Посмотрите на эту ссылку. Как вы можете видеть по ссылке, они использовали картограф:

fun List<DatabaseVideo>.asDomainModel(): List<DevByteVideo> {
   return map {
       DevByteVideo(
               url = it.url,
               title = it.title,
               description = it.description,
               updated = it.updated,
               thumbnail = it.thumbnail)
   }
}

Они создают domain model из database model с помощью этой функции расширения, и это то, что вам не хватает

person Biscuit    schedule 08.07.2020
comment
Спасибо за вашу помощь. Да, я уже пробовал это с этим картографом, но, к сожалению, карта возвращает только список DevByteVideo, а не PagedList DevByteVideo. Я обнаружил, что могу объединить обе модели в одну с аннотациями от обеих без каких-либо ошибок компиляции. Это не должно создавать проблем, верно? - person Max Mustermann; 09.07.2020
comment
В некоторых случаях domain model и database model похожи, в этом случае я думаю, что нет смысла создавать domain model, вам следует взглянуть на этот пост stackoverflow.com/questions/47903739/ - person Biscuit; 09.07.2020
comment
Спасибо за вашу помощь. Я продолжил этот подход, но теперь я вижу странное поведение, когда полученные данные не записываются в локальную базу данных. Ошибок нет, и в инспекторе базы данных Android Studio 4.1 нет данных в базе данных. Обновил суть. Новой Entity-Model является MainModel, и я обновляю локальную базу данных с помощью bufferPlaces, расположенного в репозитории, доступ к которому осуществляется через ViewModel. - person Max Mustermann; 09.07.2020