Хорошая идея.
Однако есть несколько сложностей:
-
Многие качественные плагины создают и управляют собственными таблицами. Судя по вашему коду, вы ещё не учли этот аспект?
- Проблема в том, что после удаления плагина миграция исчезает.
- Что, если плагин каким-то образом изменяет данные в основной таблице (например, добавляет запись)? Например, через запрос в Data Explorer или что-то менее очевидное.
-
Я не вижу способа, которым ваш плагин защищает пользователя от удаления пользовательских полей, кроме как через конкретный плагин, который он хочет «очистить». Вы полагаетесь на то, что пользователь сам их идентифицирует? Вы просто блокируете удаление пользовательских полей, которые находятся в ядре?
Кстати, обратите внимание на это:
Это выглядит немного рискованно. Что, если обновление ядра добавит новые поля, которых нет в вашем каталоге? Вы готовы рискнуть удалить новые поля ядра, которые вы явно не перечислили?
В любом случае желаю вам удачи в разработке, это определённо интересное дополнение.