Это в основном вопрос дизайна.У меня есть 2 сущности Payment
и User
, имеющие отношения один-к-одному.Вызов API возвращает список Payments
, каждый Payment
содержит User
.Платежи отображаются в представлении Recycler, каждая строка содержит информацию от сущностей Payment
и User
.И чтобы получить их из БД (используя Комната ), мне нужно выполнить запрос на соединение, который возвращает комбинацию обеих сущностей:
@Query("SELECT payment.*, user.* FROM payment INNER JOIN user ON payment.user_id = user.userId")
fun findPaymentsAndUsers(): List<PaymentAndUser>
data class PaymentAndUser(
@Embedded val payment: Payment,
@Embedded val user: User)
Мой вопрос заключается в том, как я могу создать свои репозиториибез нарушения каких-либо принципов Чистая архитектура ?
- Конечно, я не могу создать 2 независимых репозитория и передавать данные между ними через вызывающий UseCase , потому что ониуже возвращаются вместе либо в вызове API, либо в запросе Room DAO .
- принцип единой ответственности гласит, что каждый репозиторий должен обрабатывать только свою собственную сущность,поэтому я не могу создать
PaymentRepository
и обработать все оттуда. - Я также не могу сгруппировать обе сущности в Aggregate и создать хранилище, которое обрабатывает их обоих, потому что они являются двумя независимыми сущностями.которые могут существовать независимо друг от друга.
Каждый Android Clean Architecture образец, который я нашелимеет одну или две сущности, которые полностью независимы, без запросов на соединение или какой-либо группировки, что совершенно нереально в реальных приложениях.
Есть ли способ, которым это можно реализовать правильно?