Существуют ли готовые решения для отката действий на сайте, аналогичные операции SQL-отката?

Как можно реализовать механизм отмены последних изменений в базе данных при использовании API в проекте Laravel? Сейчас планирую создавать мини-бэкап при каждом изменяющем методе API для возможности отмены изменений. Есть ли более элегантное решение, которое позволило бы автоматически генерировать запросы для отмены выполненных изменений на основе исходного SQL запроса?
  • 12 мая 2024 г. 17:10
Ответы на вопрос 2
Для отката действий на сайте, аналогичных операциям SQL-отката, можно использовать технику "отмены изменений" или "отката транзакций". В случае Laravel, можно использовать механизм миграций и отката миграций для отмены последних изменений в базе данных.

Чтобы реализовать механизм отмены последних изменений в базе данных при использовании API в проекте Laravel, можно воспользоваться функциональностью отката миграций. Для этого необходимо создать миграции и в них указать отмену изменений, которые вы хотите откатить.

Например, если в вашем проекте была создана миграция для добавления новой таблицы, то для отмены этого изменения можно создать новую миграцию, в которой будет указан код для удаления этой таблицы.

Если вы хотите автоматизировать процесс отмены изменений, основанных на исходных SQL запросах, вам может потребоваться создать свою собственную логику отката. Например, вы можете сохранять исходные SQL запросы и их параметры в специальной таблице или файле, чтобы в дальнейшем использовать их для генерации запросов отмены.

Таким образом, можно реализовать механизм отмены изменений в базе данных при использовании API в проекте Laravel, используя миграции и создавая логику отмены изменений на основе исходных SQL запросов.
Проектируйте структуру базы данных так, чтобы сохранялась полная история действий над каждым классом данных, словно сохраняете лог для спец. служб. 
Api пользователя не должно использовать DELETE, только INSERT, и UPDATE только для выставления даты удаления записи, выставления метки последней актуальной записи истории. Операцию DELETE имеет право использовать только служебный метод для зачистки истории, когда устаревшие записи становятся неактуальными ни для одного актора системы.
Похожие вопросы