Есть идея сделать потоки выгрузки с клиента и фетч с сервера независимыми, способными работать не в системе друг с дургом и паралельно. Ранее описанная схема с длинной последовательностью – сначала цепочки выгрузок, затем фетч – хрупкая и имеет подводные камни в честве обработки ошибок, состояния гонки и др.
Идея такая...
Разделим локальное состояние (Базу данных на устройстве) на 2 слоя:
1 Слой – базовый. Состояния с сервера. Те фактические данные, которые прилетают с сервера в ответ на стандартные методы GET, PUT, PATCH. Складывается в соответствующие таблицы сущностей. Сущности в этих таблицах не мутируются клиентом, только с сервера.
2 Слой с локальными изменениями. Обновления, применяемые на клиенте. В соответствующей таблице складываются измененные поля сущностей, связанные по ключу ID. В другой таблице этого слоя будут метки на удаленные сущности.
