В «чистой архитектуре» интеракторы (варианты использования) отвечают за определение бизнес-логики. Большинство примеров определяют варианты использования следующим образом:
public MyUseCase() {
public boolean execute(...) {
int id = repository.insert(a)
if(id > 0) {
b.aId= id;
repository.insert(b);
...
}
}
}
Интеракторы используют в основном простые CRUD-операции или запросы к репозиторию. Приведенный выше пример является синхронным для простоты, но вы можете найти репозитории с тем же подходом, используя асинхронные решения, такие как обратные вызовы или rxjava.
Но как насчет некомпетентности варианта использования. Например, вы не можете быть на 100% уверены, что после вставки a
он все еще будет там, когда вы вставите b
. Что делать, если после вставки a
вы получите исключение RepositoryException при вставке b
.
Все репозитории, которые я видел до сих пор, не учитывают это, поэтому мой вопрос:
Какое решение вышеупомянутой проблемы в чистой архитектуре?