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

CLI: поля, ограничения и отображение

Как добавлять и менять поля, включать поиск и задавать Markdown или изображения.

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

Команды полей задают тип данных, ограничения и отображение формы. Например, добавим текст, статус и уникальный адрес статьи:

admingen-cli --path ./docs-demo field add Article body --type text --required
admingen-cli --path ./docs-demo field add Article status --type enum --enum draft,published --required
admingen-cli --path ./docs-demo field add Article slug --type string --required --unique

field — сокращение для entity field; обе формы меняют одну модель. После правок просмотрите план: уникальность, смена типа и настройки связи могут затронуть существующие данные.

Как выбрать тип и обязательность

string подходит для короткой строки, text — для длинного текста. int и int64 хранят целые числа, float — дробные с обычными ограничениями плавающей точки. bool — это true/false, UUID — идентификатор, date — день календаря, datetime — момент времени.

Enum ограничивает набор значений. JSON хранит JSON-значение, но не создаёт произвольную типизированную форму. Для image и gallery есть отдельные настройки.

--required задаёт обязательность, --nullable — возможность хранить null. Это разные свойства. При поддерживаемой автогенерации идентификатор поставляет БД или генератор значения. Настройки required/default/autogeneration должны быть согласованы, а не включены все сразу.

Как изменить одно свойство

admingen-cli --path ./docs-demo field update Article body --title "Текст статьи"
admingen-cli --path ./docs-demo field update Article slug --readonly=true
admingen-cli --path ./docs-demo field update Article slug --readonly=false

Update меняет только переданные свойства. Чтобы отключить логический параметр, используйте =false. Пустое строковое значение можно передать для очищаемой настройки, если итоговая модель остаётся допустимой.

Сохранённое поле не переименовывается обычным update/new-name. Используйте Rename с preview и ревизиями. Удалить поле и создать заново — не то же самое, что переименовать с сохранением данных.

Как параметры влияют на интерфейс и API

hidden скрывает поле в интерфейсе, readonly ограничивает редактирование существующей записи. Оба параметра не заменяют серверные права. --ui-component и --ui-width выбирают поддерживаемое представление, но не вставляют произвольный React-код.

sortable, filterable, searchable соответствуют List behavior. После Generate становятся доступны поддерживаемые серверные сортировка, типизированные фильтры и поиск. Клиент использует sort/order, filters, searches по контракту API. Новые произвольные query-параметры при этом не появляются. Несовместимые с типом настройки отклоняются.

Команды и параметры

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

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

Параметр Где применяется По умолчанию Смысл
--auto-generate VALUE field add, field update пустая строка Генерация PK: uuid или identity; проверьте совместимость с типом поля.
--default VALUE field add, field update пустая строка Строковое представление значения по умолчанию. Не обещает автоматическое заполнение любого пропущенного поля в API.
--description VALUE field add, field update пустая строка Пояснение назначения поля.
--enum VALUE field add, field update пустой список Список уникальных допустимых значений, например draft,published; порядок сохраняется.
--filterable field add, field update false Включить типизированные серверные фильтры для поддерживаемого поля.
--hidden field add, field update false Скрыть поле в сгенерированном интерфейсе; не является политикой безопасности API.
--image-settings VALUE field add, field update пустая строка JSON настроек image/gallery; null явно очищает настройки, если итоговая модель это допускает.
--indexed field add, field update false Запросить индекс для поля.
--nullable field add, field update false Разрешить null в пределах правил типа/связи.
--primary-key field add, field update false Сделать поле первичным ключом сущности.
--readonly field add, field update false Ограничить изменение существующего значения в сгенерированной форме; Create имеет отдельное поведение.
--relation-foreign-key VALUE field add, field update пустая строка FK-поле для встроенного описания связи поля.
--relation-target VALUE field add, field update пустая строка Имя целевой сущности для ссылочного поля.
--relation-type VALUE field add, field update пустая строка Тип встроенного описания отношения поля.
--required field add, field update false Сделать значение обязательным по правилам модели и формы.
--searchable field add, field update false Включить серверный поиск для поддерживаемого string/text-поля.
--sortable field add, field update false Включить сортировку списка на сервере для поддерживаемого поля.
--title VALUE field add, field update пустая строка Читаемое название проекта или поля.
--type VALUE field add, field update пустая строка Для поля — поддерживаемый тип данных; для relation — belongsTo, hasMany или manyToMany.
--ui-component VALUE field add, field update пустая строка Поддерживаемое представление поля. Произвольный React-компонент этим параметром не внедряется.
--ui-width VALUE field add, field update пустая строка Положительное целое число пикселей строкой, например 240.
--unique field add, field update false Запросить уникальность значений.
--new-name VALUE field update пустая строка Новое имя там, где это поддерживает команда. Для сохранённого поля обычный update не переименовывает его: используйте Rename.

Markdown и изображения

admingen-cli --path ./docs-demo field update Article body --ui-component markdown
admingen-cli --path ./docs-demo field update Article title --ui-width 320 --searchable --sortable --filterable
admingen-cli --path ./docs-demo field add Article cover --type image --nullable \
  --image-settings '{"profile":"cover","formats":["jpeg","png","webp"],"quality":85,"output":"auto","sizes":[{"name":"sm","width":320},{"name":"lg","width":1600}]}'

Markdown меняет отображение text, а не SQL-тип. Для string/text есть поддерживаемые варианты textarea/password/email/url; пустой component выбирает Default.

--image-settings принимает строгий JSON: неизвестный ключ вызовет ошибку. У Gallery дополнительно есть maxCount. Профиль avatar задаёт квадрат, cover — 16:9. Положительный aspect переопределяет пропорции; profile: custom с aspect: 0 сохраняет исходные.

Не путайте разрешённые входные форматы с output: выходной формат принимает auto/jpeg/png. Как создаются размеры и обрабатываются файлы, описано в изображениях.

Если поле уже сгенерировано

После первой успешной генерации тип хранения закреплён. Для преобразования данных создайте новое поле и собственную миграцию. Title, Description и Presentation можно менять отдельно от типа хранения.

Удаление обычного сгенерированного столбца требует field delete ... --confirm-data-loss. Защищённые идентификаторы таким способом не заменяются. Порядок действий — переименование и удаление.