Модуль группирует сущности в навигации и URL. Persistent-сущность описывает данные с собственным хранением; virtual может представлять выборку только для чтения. Для обычной статьи создайте модуль, сущность и поля:
admingen-cli --path ./docs-demo module add content
admingen-cli --path ./docs-demo entity add Article --module content --table articles
admingen-cli --path ./docs-demo entity field add Article id --type int --primary-key --auto-generate identity
admingen-cli --path ./docs-demo entity field add Article title --type string --required
Пока изменён только манифест. Таблица появится после Generate и применения миграции. Для persistent нужны имя таблицы и существующий модуль. Имя сущности пишется PascalCase, таблицы — snake_case; уникальность сущностей проверяется без учёта регистра.
Посмотреть модули, поменять порядок и перенести сущность
admingen-cli --path ./docs-demo module list
admingen-cli --path ./docs-demo module show content
admingen-cli --path ./docs-demo module update content --position 0
admingen-cli --path ./docs-demo module add knowledge
admingen-cli --path ./docs-demo entity update Article --module knowledge
Позиции начинаются с нуля. Перенос Article в другой модуль меняет группировку в меню и маршрутах. До Generate проверьте, какие URL изменятся и какие клиенты их используют. Модуль не добавляет сущностям права.
Модуль можно удалить только пустым: сначала перенесите или удалите его сущности. Удаление определения и удаление строк БД — разные действия; результат смотрите в плане и миграциях.
Разделяйте операцию, интерфейс и доступ
--create=false отключает создание в самой модели CRUD. --admin-create не сможет включить его обратно. --list и --form у entity управляют интерфейсом; admin-параметры — доступом к операциям, external-параметры — режимами off, authenticated, anonymous.
Например, так можно закрыть внешнее чтение и запретить административное удаление:
admingen-cli --path ./docs-demo entity update Article \
--external-list off --external-get off \
--admin-delete=false
Если внешнее чтение нужно, но только для опубликованных записей, дополнительно задайте серверное правило status = published. Оно работает вместе с режимом операции. Подробности — разрешения и правила чтения.
Для новой виртуальной выборки используйте projection. virtual без режима projection сохраняет прежний вариант сущности без собственной таблицы. Значение system присутствует среди типов, но не означает готовую пользовательскую system entity.
Справочник команд
| Команда | Вызов |
|---|---|
entity |
admingen-cli entity [command] |
module |
admingen-cli module [command] |
entity add |
admingen-cli entity add <entity-name> [flags] |
entity delete |
admingen-cli entity delete <entity-name> [flags] |
entity update |
admingen-cli entity update <entity-name> [flags] |
module add |
admingen-cli module add <module-name> [flags] |
module delete |
admingen-cli module delete <module-name> [flags] |
module list |
admingen-cli module list [flags] |
module show |
admingen-cli module show <module-name> [flags] |
module update |
admingen-cli module update <module-name> [flags] |
Общие параметры находятся в основах CLI. Подставляйте свои имена вместо аргументов в угловых скобках. В update непереданное свойство остаётся прежним; значения по умолчанию в таблице не применяются ко всем полям повторно.
Параметры
| Параметр | Где применяется | По умолчанию | Смысл |
|---|---|---|---|
--admin-create |
entity add, entity update |
true | Разрешение Create в admin API в пределах доступной операции. |
--admin-delete |
entity add, entity update |
true | Разрешение Delete в admin API. |
--admin-get |
entity add, entity update |
true | Разрешение чтения одной записи в admin API. |
--admin-list |
entity add, entity update |
true | Разрешение списка записей в admin API. |
--admin-update |
entity add, entity update |
true | Разрешение изменения в admin API. |
--create |
entity add, entity update |
true | Включить создание записей в модели CRUD. |
--delete |
entity add, entity update |
true | Включить удаление записей в модели CRUD. |
--external-create VALUE |
entity add, entity update |
"off" | Режим внешнего Create: off, authenticated или anonymous. |
--external-delete VALUE |
entity add, entity update |
"off" | Режим внешнего Delete: off, authenticated или anonymous. |
--external-get VALUE |
entity add, entity update |
"off" | Режим внешнего Get: off, authenticated или anonymous. |
--external-list VALUE |
entity add, entity update |
"off" | Режим внешнего List: off, authenticated или anonymous. |
--external-update VALUE |
entity add, entity update |
"off" | Режим внешнего Update: off, authenticated или anonymous. |
--form |
entity add, entity update |
true | Включить форму сущности в административном интерфейсе. |
--kind VALUE |
entity add, entity update |
"persistent" | Вид сущности: persistent, virtual или system. Обычный хранимый объект — persistent. |
--list |
entity add, entity update |
true | В entity — список UI; в projection — чтение списка корневых записей. |
--module VALUE |
entity add, entity update |
пустая строка | Для init — путь Go-модуля; для сущности/проекции — существующий модуль навигации. В update означает перенос. |
--read |
entity add, entity update |
true | Включить чтение: список и отдельную запись. |
--table VALUE |
entity add, entity update |
пустая строка | Физическое имя таблицы persistent-сущности. |
--update |
entity add, entity update |
true | Включить изменение записей в модели CRUD. |
--new-name VALUE |
entity update, module update |
пустая строка | Новое имя там, где это поддерживает команда. Для сохранённого поля обычный update не переименовывает его: используйте Rename. |
--position VALUE |
module update |
0 | Новая позиция модуля в manifest, начиная с нуля. |
Переименование и удаление
admingen-cli --path ./docs-demo module update knowledge --new-name content
admingen-cli --path ./docs-demo module delete empty_module
module delete принимает только пустой модуль. entity update --new-name меняет техническое имя после проверки всей модели. Это не универсальная SQL-команда переименования таблицы: проверьте diff и зависимые связи.
Для уже сгенерированной сущности при удалении нужно выбрать --storage retain|drop. --archive-custom переносит выведенный из приложения custom-код в архив вне каталогов компиляции. Вариант drop требует --confirm-data-loss; данные удаляются при применении миграции. Полный порядок — жизненный цикл модели.