Схема БД, миграции и грид с записью
Схема базы читается на холст, сравнивается с ним, а различия превращаются в миграцию. Данные правятся в гриде с записью обратно в базу.
Схема из базы
«Данные → 🗄 Схема из БД…» по имени подключения читает таблицы, представления, колонки и внешние ключи и кладёт их группой «БД: имя». Локальный профиль подключения выполняет само приложение, agent:<агент>/<имя> выполняет сервер через агента, sqlite:<путь> это файл в песочнице воркспейса. Повторное чтение обновляет группу на месте, расставленные таблицы остаются. У поля хранится точный тип из базы. Индексы, тела представлений и ограничения CHECK читаются в поля таблицы.
Сравнение и миграция
«Сравнить» показывает, чем холст отличается от базы: по таблицам и колонкам, с бейджами «≠ БД» и «нет в БД» на узлах. «Актуализировать» перечитывает схему. «Миграция из различий» кладёт группу исполняемых узлов: «▶ Применить» с цепочкой действий sql-exec по шагу на выражение и рядом «↩ Откат». Ничего не применяется само. Удаление того, чего нет на холсте, попадает в миграцию только по галочке. Переименование колонки выражается как CHANGE COLUMN, а не как удаление и создание. Галочка «журнал в БД» ведёт таблицу myetern_migrations. Применённая группа получает отметку с датой.
ПКМ по таблице → «🗄 SQL: CREATE…» выдаёт дамп выбранных таблиц в порядке зависимостей узлом «Текст» или группой для применения.
Грид с записью
Источник вида mysql или pgsql с запросом SELECT … FROM таблица ребром в «Таблицу данных» даёт грид, в котором правится каждая ячейка. Правка становится UPDATE … WHERE ключ = …, ключом служит id или поле «БД: ключ». Перед выполнением показывается вопрос с текстом SQL и кнопка «Применить и автосохранять», для массовых правок есть тумблер узла и общий флаг в меню «Правка».
| Действие | Что делает |
|---|---|
| + Строка | добавляет строки локально, «INSERT новых» отправляет их одним вопросом, ключ автоинкремента приходит сразу в строку |
| ⎘ Строки из буфера… | превращает таблицу из буфера обмена в новые строки |
| − Строки | удаляет выбранные одним DELETE по ключу |
| ↶ откат | отменяет последнее действие обратным SQL, это откат данных, а не холста |
| ⧉ копить | правки копятся, «Применить всё» отправляет пачку одной транзакцией |
| ⏺ запись в миграцию | правки копятся как SQL вперёд и назад и уезжают группой «Миграция данных» |
Горячие клавиши грида на Alt: Alt+Z откат, Alt+B копить, Alt+A применить всё, Alt+M запись в миграцию, Alt+N строка, Alt+V строки из буфера.
Колонки и ключи из грида
«+ Колонка (ALTER)…» добавляет колонку с типом по виду. В меню колонки: переименовать в БД, удалить колонку, привести тип к виду, индекс, уникальный индекс, первичный ключ. Тот же вопрос, та же пачка, тот же откат. Полную схему с внешними ключами и представлениями по-прежнему ведут узлы «Таблица» и «Поле» вместе с миграцией из различий.
Права
Локальный профиль исполняет приложение. Подключения через агента и песочница SQLite исполняются сервером и требуют права писать в комнате и способности cap.sql.