feat: smart index diffing on import

Compare desired indexes against existing ones before applying changes:
- skip indexes that are already up to date
- drop and recreate if definition changed
- handle key conflicts (same key, different name)
- drop obsolete indexes not present in the JSON

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-01 13:01:55 +03:00
parent b883cc3db3
commit b03dc9849f
3 changed files with 81 additions and 20 deletions

View File

@@ -87,5 +87,9 @@ Bash-скрипты для экспорта и импорта схемы инд
## Поведение импорта
- Коллекция не существует → создаётся автоматически
- В коллекции есть индексы → дропаются перед созданием новых
- Индексы сравниваются с существующими перед применением:
- Совпадает по имени и определению → пропускается
- Совпадает по имени, но определение изменилось → дропается и пересоздаётся
- Совпадает по ключу, но имя другое → старый дропается, создаётся с новым именем
- Есть в БД, но отсутствует в JSON → дропается как устаревший
- Индекс `_id_` игнорируется при экспорте и импорте