Сайт ↗
Разделы документации
CLI интерфейс · 0.8.1

CLI: виртуальные сущности и выбранные поля

Как собрать read-only ответ, добавить связи и настроить отдельные списки внутри каждой записи.

На этой странице

Проекция возвращает выбранные данные существующей сущности без новой таблицы. Например, ArticleCard может объединить название статьи, её раздел и ограниченный список тегов. Создание, изменение и удаление записей через такую сущность не поддерживаются.

Создание и просмотр проекции

admingen-cli --path ./docs-demo projection add ArticleCard \
  --source Article --module content --get=true --list=true \
  --field id --field title
admingen-cli --path ./docs-demo --output json projection show ArticleCard

--source должен ссылаться на persistent-сущность с одним первичным ключом. Повторяйте --field для каждого поля; формат field:alias меняет только имя в ответе. Исходное поле не переименовывается.

Добавление раздела и коллекции тегов

Если связи Article.section и Article.tags уже есть, включите их в ответ:

admingen-cli --path ./docs-demo projection relation add ArticleCard section \
  --as category --field id --field title
admingen-cli --path ./docs-demo projection relation add ArticleCard tags \
  --field id --field title --default-limit 5 --max-limit 20 \
  --order-by title --order-direction asc

Для hasMany/manyToMany задайте согласованные лимиты и порядок. Лимит ограничивает вложенный список, поэтому ответ не обязательно содержит все связанные записи. Обратное представление использует существующего владельца отношения и не создаёт нового.

Изменение выбранных данных

admingen-cli --path ./docs-demo projection field update ArticleCard title --as heading
admingen-cli --path ./docs-demo projection relation field add ArticleCard section slug
admingen-cli --path ./docs-demo projection relation update ArticleCard tags --default-limit 10

--field у add задаёт начальный состав. Далее используйте вложенные field add/update/delete. --as= убирает псевдоним. --clear-collection допустим только для вида отношения, который может существовать без collection.

projection update меняет источник, модуль и операции чтения. После смены источника проверьте всю выборку. projection delete удаляет её определение из модели. Общие права можно менять через entity update, но состав source/select задаётся командами projection.

Что проверяет генератор

Повторяющиеся выходные имена, отсутствующие исходные поля и несогласованные лимиты вызывают ошибку. Не поддерживаются запись во вложенные данные, произвольное расширение ответа и проекция из проекции.

После изменения состава проверьте клиентов API и выполните Generate. В системе администрирования проекция остаётся списком и карточкой для чтения.

Команды

Команда Вызов
projection admingen-cli projection [command]
projection add admingen-cli projection add <projection-name> [flags]
projection delete admingen-cli projection delete <projection-name> [flags]
projection field admingen-cli projection field [command]
projection relation admingen-cli projection relation [command]
projection show admingen-cli projection show <projection-name> [flags]
projection update admingen-cli projection update <projection-name> [flags]
projection field add admingen-cli projection field add <projection-name> <field-name> [flags]
projection field delete admingen-cli projection field delete <projection-name> <field-name> [flags]
projection field update admingen-cli projection field update <projection-name> <field-name> [flags]
projection relation add admingen-cli projection relation add <projection-name> <relation-name> [flags]
projection relation delete admingen-cli projection relation delete <projection-name> <relation-name> [flags]
projection relation field admingen-cli projection relation field [command]
projection relation update admingen-cli projection relation update <projection-name> <relation-name> [flags]
projection relation field add admingen-cli projection relation field add <projection-name> <relation-name> <field-name> [flags]
projection relation field delete admingen-cli projection relation field delete <projection-name> <relation-name> <field-name> [flags]
projection relation field update admingen-cli projection relation field update <projection-name> <relation-name> <field-name> [flags]

Общие параметры смотрите в основах CLI. Имена в угловых скобках замените своими. В update свойства, для которых не передан флаг, сохраняются.

Параметры выборки и коллекций

Параметр Где применяется По умолчанию Смысл
--field VALUE projection add, projection relation add пустой список Начальное выбранное поле: field или field:alias. Флаг повторяется; последующие изменения — отдельными командами field.
--get projection add, projection update projection add: true; projection update: false Включить чтение проекции по идентификатору.
--list projection add, projection update false В entity — список UI; в projection — чтение списка корневых записей.
--module VALUE projection add, projection update пустая строка Для init — путь Go-модуля; для сущности/проекции — существующий модуль навигации. В update означает перенос.
--source VALUE projection add, projection update пустая строка Сущность с хранением, из которой читает проекция.
--as VALUE projection field add, projection field update, projection relation add, projection relation update, projection relation field add, projection relation field update пустая строка Выходное имя выбранного поля/отношения; --as= очищает alias.
--new-field VALUE projection field update, projection relation field update пустая строка Новое исходное поле выбранного элемента проекции.
--default-limit VALUE projection relation add, projection relation update 0 Количество элементов вложенной коллекции по умолчанию.
--max-limit VALUE projection relation add, projection relation update 0 Максимум элементов вложенной коллекции.
--order-by VALUE projection relation add, projection relation update пустая строка Поле порядка по умолчанию вложенной коллекции.
--order-direction VALUE projection relation add, projection relation update "asc" Направление порядка по умолчанию: asc или desc.
--clear-collection projection relation update false Убрать настройки коллекции, только если итоговый relation допускает это.
--new-relation VALUE projection relation update пустая строка Новое исходное отношение выбранного элемента проекции.

Поиск, фильтрация и сортировка

У каждого выбранного scalar возможности задаются отдельно от persistent-источника. Флаги одинаковы для projection field add/update и projection relation field add/update:

Флаг Значение при добавлении Результат
--searchable false Поиск по выбранному string/text.
--filterable false Разрешённые типизированные фильтры.
--sortable false Пользовательская сортировка по полю.
admingen-cli --path ./docs-demo projection field update ArticleCard title --searchable --sortable --filterable
admingen-cli --path ./docs-demo projection relation field update ArticleCard section title --filterable --sortable
admingen-cli --path ./docs-demo projection relation field update ArticleCard tags title --searchable --sortable

В командах используйте исходные имена поля и связи, а не выходные alias. Для отключения передайте =false.

Поле belongsTo участвует в отборе и сортировке корневых записей. Поле hasMany/manyToMany управляет элементами внутри коллекции. Например, сортировка тегов меняет порядок тегов у каждой статьи, но не порядок самих статей.

В запросах API, напротив, используется выходной alias: tagsSearches, tagsFilters, tagsSort, tagsOrder, tagsLimit, tagsOffset. Лимиты и total считаются отдельно для каждого родителя. Если элементы отфильтрованы полностью, родитель остаётся с пустыми items. Подробности — формат API.

Обязательные условия выдачи

Права list/get настраиваются через entity access, состав ответа — через projection. Для дерева серверных readRule отдельного CLI-флага нет: настройте корень и коллекции в Access UI или манифесте.

Правило исходной persistent-сущности не наследуется автоматически. Пример независимых условий PageBlock, Page и items разобран в правилах доступа.