Команды полей задают тип данных, ограничения и отображение формы. Например, добавим текст, статус и уникальный адрес статьи:
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. Защищённые идентификаторы таким способом не заменяются. Порядок действий — переименование и удаление.