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

@@ -34,5 +34,9 @@
## Поведение импорта
- Если коллекция не существует — создаётся автоматически
- Если в коллекции уже есть индексы (кроме `_id_`) — они дропаются перед созданием новых
- Индексы сравниваются с существующими перед применением:
- Совпадает по имени и определению — пропускается
- Совпадает по имени, но определение изменилось — дропается и пересоздаётся
- Совпадает по ключу, но имя другое — старый дропается, создаётся новый с нужным именем
- Есть в БД, но отсутствует в JSON — дропается как устаревший
- `--dry-run` показывает все планируемые действия без их выполнения