Итак, возникает вопрос: как я могу получить резервные копии на стороне клиента, чтобы пользователь мог получить свои собственные данные в загружаемый файл, который впоследствии может быть использован для восстановления всех данных?
Информация о моем стеке:
Я использую React, mobx, apollo в интерфейсе. Я использую Hasura с Postgresql в бэкэнде.
Мое приложение будет мультитенантным, я еще не реализовал мультитенантность, но, вероятно, это произойдет так, что каждый арендатор будет использовать одну и ту же Hasura database, а tenant_id позволит им получить доступ только к их собственным данным.
Сами данные построены на нескольких таблицах с отношениями «один ко многим». Таким образом, резервная копия, по сути, должна представлять собой своего рода образ всех данных пользователей, содержащий необходимую информацию, чтобы при ее восстановлении все отношения работали, как прежде.
Сначала я подошел к этой проблеме наивно (или, по крайней мере, я думаю, что это наивный) способ, который означал, что я добавил кнопку на своей стороне клиента для загрузки данных, нажатие кнопки приводит к тому, что apollo выполняет запрос данных от Hasura и экспортирует данные как JSON для загрузки клиента.
Теперь в глубине души я думаю, что есть более надежный и безопасный способ сделать это. Конечно, я не хочу, чтобы пользователь мог получить весь дамп из базы данных, а только все записи, к которым у пользователя есть доступ.