froOzzy / pg_stage

Anonymization of data in pg_dump
MIT License
9 stars 1 forks source link

JSONField: update, delete #63

Open wa7chman opened 7 months ago

wa7chman commented 7 months ago

Требуется добавить (мутатор ?) для частичного обновления JSONField. Например в БД было:

{"key1": 1, "key2": 2}

Должно быть что-то вроде

{"mutation_name": "json_update", "mutation_kwargs": {"key1": {"mutation_name": "first_name"}}}

Т.е. в mutation_kwargs указывается список ключей, которые необходимо заменить, и то, на что их необходимо заменить, так же будет неплохо добавить возможность очистки конкретного ключа, например

{"mutation_name": "json_update", "mutation_kwargs": {"key1": {"mutation_name": "delete"}}}

Подробный пример для понимания:
В бд был json:

{"key1": "foo", "key2": "bar", "key3": 123}

После преобразования

{"mutation_name": "json_update", "mutation_kwargs": {"key2": {"mutation_name": "first_name"}}}

должно получиться что-то вроде

{"key1": "foo", "key2": "{Какое-нибудь сгенерированное faker-ом first_name}", "key3": 123}

upd: поведение для случая когда ключа в словаре нет: просто добавляем ключ. При удалении: просто пропускаем