Я использую базу данных Room в своем приложении и пытаюсь следовать шаблону MVP, поэтому я хочу использовать презентатор для вызова функций, которые выполняют операции с базой данных. android Контекст приложения необходим для получения ссылки на базу данных, поэтому в View (Activity) я вызываю:
AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "AppDatabase").build();
AppDatabase
- абстрактный класс, расширяющий RoomDatabase
, имеет кучу android
импорта и содержит DAO
интерфейс. Этот дизайн взят из официального руководства Android.
Теперь, если бы я передал и использовал этот AppDatabase
объект (или интерфейс DAO
), он сломал бы шаблон MVP, так как это тот, который фактически содержит методы работы с базой данных) в презентере? DAO содержит SQL запросов и имеет набор android импортов с такими методами, как dao.insert(item)
.
edit:
AppDatabase
class и ItemDao
интерфейс:
@TypeConverters({Converters.class})
public abstract class AppDatabase extends RoomDatabase {
public abstract ItemDao itemDao();
}
@Dao
public interface ItemDao {
@Query("SELECT * FROM item")
List<Item> getAll();
@Query("SELECT * FROM item WHERE date BETWEEN :from AND :to")
List<Item> findItemsBetweenDates(LocalDate from, LocalDate to);
@Insert
void insert(Item... items);
}