Декларации¶
Декларативное описание моделей — основа go-activerecord. Модели описываются с помощью специальных комментариев и структур.
Содержание раздела¶
- Поля (Fields) — основная структура Fields* и теги полей
- Индексы — Indexes и IndexParts
- Сериализаторы — Serializers* и встроенные сериализаторы
- Мутаторы и флаги — Mutators и Flags
- Триггеры — Triggers* для обработки исключений
- Связи и процедуры — FieldsObject и ProcFields
Обзор¶
Модель описывается набором структур с префиксами:
graph LR
A[Fields*<br/>Поля таблицы] --> G[argen]
B[Indexes*<br/>Индексы] --> G
C[IndexParts*<br/>Частичные индексы] --> G
D[Serializers*<br/>Сериализаторы] --> G
E[Flags*<br/>Битовые флаги] --> G
F[Triggers*<br/>Триггеры] --> G
G --> H[Сгенерированный код]
| Структура | Назначение |
|---|---|
Fields* |
Поля таблицы/спейса |
Indexes* |
Составные индексы |
IndexParts* |
Частичные селекторы |
Serializers* |
Сериализация полей |
Mutators* |
Пользовательские мутаторы |
Flags* |
Именованные битовые флаги |
Triggers* |
Обработка исключений |
FieldsObject* |
Связи между моделями |
ProcFields* |
Хранимые процедуры |
Минимальный пример¶
package repository
//ar:serverConf:mydb
//ar:namespace:users
//ar:backend:postgres
type FieldsUser struct {
Id int64 `ar:"primary_key"`
Name string `ar:"size:256"`
}
AR комментарии¶
Комментарии начинаются с //ar: и описывают метаданные модели:
//ar:serverConf:mydb // Ключ конфигурации
//ar:namespace:users // Имя таблицы (PG) или номер спейса (Octopus)
//ar:backend:postgres // Тип бэкенда
//ar:enableSelectAll:10000 // Разрешить SelectAll с лимитом
| Комментарий | Описание |
|---|---|
serverConf |
Ключ в конфигурации для параметров подключения |
namespace |
Имя таблицы (PostgreSQL) или номер спейса (Octopus) |
backend |
Тип БД: postgres или octopus |
enableSelectAll |
Генерация SelectAll с указанным лимитом (макс. 20000) |
Именование¶
- Имя пакета: regex
^[a-z]{1,20}$(только строчные, макс. 20 символов) - Имя структуры:
Fields{ModelName},Indexes{ModelName}и т.д. - ModelName: определяет имя генерируемого пакета
Важно
Имя пакета в декларации должно быть repository.
Следующие шаги¶
- Поля (Fields) — начните с описания полей
- Справочник тегов — все доступные теги