Здравствуйте. Сразу оговорюсь: мне нужен не код, а помощь в построении верной логики приложения.
Суть такая:
Я храню у себя данные в БД. Через бота я проверяю на стороннем сервисе эти же данные. Если они меняются - я записываю их себе в БД. Вне зависимости от изменений, на каждый запрос я отправляю себе результат запроса в телегу. Данных много, поэтому в телеге у меня они отображаются в виде слайдера (вперёд и назад). В свойствах кнопки хранится ID записи в БД, текущее положение и действие (вперёд или назад)
Порядок операций:
Делаю запрос на чужой сервер.
В результате мне придёт либо массив данных, либо null
Если есть массив данных, то
1. я преобразовываю массив в строку
2. Сообщаю, что данные есть
3. сравниваю данные из БД. В случае их отличия заношу в БД, а в случае совпадения - в отдельное поле ставлю пометку и тут же получаю номер последней записи в БД
4. отправляю оповещение в телеграм, где указываю в параметрах кнопки переключателя слайдера id той записи, которую я только что внесла в БД
Иначе если null, то
- Сообщаю, что данных нет.
- сравниваю данные из БД. В случае их отличия заношу в БД, а в случае совпадения - в отдельное поле ставлю пометку и тут же получаю номер последней записи в БД
Мне не нравится повторение действия:
сравниваю данные из БД. В случае их отличия заношу в БД, а в случае совпадения - в отдельное поле ставлю пометку и тут же получаю номер последней записи в БД. Мне нужно вносить в БД даже в случае отсутствия данных потому что потом это используется для получения хронологии изменения.
По сути, пока я не внесла данные в БД я не могу вывести оповещение в телегу, потому что мне нужно знать ID записи. Но я не могу знать ID записи, пока я преобразую массив в строку.
Как можно оптимизировать код кроме как выноса этого действия в функцию?