Справочник тегов
Полный справочник всех доступных тегов и комментариев.
AR комментарии
Комментарии к структуре Fields*:
| Комментарий |
Описание |
Пример |
serverConf |
Ключ конфигурации |
//ar:serverConf:mydb |
namespace |
Таблица (PG) или спейс (Octopus) |
//ar:namespace:users |
backend |
Тип БД |
//ar:backend:postgres |
enableSelectAll |
Генерация SelectAll |
//ar:enableSelectAll:10000 |
Синтаксис
// Отдельные строки
//ar:serverConf:mydb
//ar:namespace:users
//ar:backend:postgres
// Или через точку с запятой
//ar:serverConf:mydb;namespace:users;backend:postgres
Теги Fields*
| Тег |
Описание |
Пример |
primary_key |
Первичный ключ |
ar:"primary_key" |
unique |
Уникальный индекс |
ar:"unique" |
selector |
Имя селектора |
ar:"selector:SelectByEmail" |
size |
Размер поля (байты) |
ar:"size:256" |
serializer |
Сериализатор |
ar:"serializer:Json" |
mutators |
Мутаторы |
ar:"mutators:inc,dec" |
init_by_db |
Инициализация БД |
ar:"init_by_db" |
Примеры
type FieldsUser struct {
Id int64 `ar:"primary_key;init_by_db"`
Email string `ar:"unique;size:256;selector:SelectByEmail"`
Counter uint32 `ar:"mutators:inc,dec"`
Settings string `ar:"serializer:Json;size:4096"`
}
Теги Indexes*
| Тег |
Описание |
Пример |
fields |
Поля индекса |
ar:"fields:Email,Status" |
unique |
Уникальный |
ar:"unique" |
primary_key |
Составной PK |
ar:"primary_key" |
selector |
Имя селектора |
ar:"selector:SelectByEmailStatus" |
order |
Сортировка |
ar:"order:Email asc,Status desc" |
condition |
Условие (WHERE) |
ar:"condition:Status[=]1" |
Синтаксис условий
| Условие |
Синтаксис |
SQL |
| Равенство |
Field[=]value |
field = value |
| Не равно |
Field[<>]value |
field <> value |
| Больше |
Field[>]value |
field > value |
| Меньше |
Field[<]value |
field < value |
| IS NULL |
Field[is null] |
field IS NULL |
| IS NOT NULL |
Field[is not null] |
field IS NOT NULL |
| Пустая строка |
Field[=]'' |
field = '' |
| Битовая маска |
Flags&4[=]4 |
flags & 4 = 4 |
Объединение через &&:
ar:"condition:Status[=]1&&DeletedAt[is null]&&Flags&4[=]4"
Теги IndexParts*
| Тег |
Описание |
Пример |
index |
Родительский индекс |
ar:"index:StatusCreated" |
fieldnum |
Количество полей |
ar:"fieldnum:1" |
selector |
Имя селектора |
ar:"selector:SelectByStatus" |
type IndexPartsUser struct {
StatusOnly bool `ar:"index:StatusCreated;fieldnum:1;selector:SelectByStatusOnly"`
}
Теги Serializers*
| Тег |
Описание |
Пример |
pkg |
Пакет сериализатора |
ar:"pkg:github.com/app/ser" |
object |
Имя объекта |
ar:"object:MySerializer" |
marshaler |
Функция сериализации |
ar:"marshaler:CustomMarshal" |
unmarshaler |
Функция десериализации |
ar:"unmarshaler:CustomUnmarshal" |
type SerializersUser struct {
Settings map[string]interface{} `ar:""` // Встроенный
Profile *types.Profile `ar:"pkg:github.com/app/types;object:ProfileS"`
}
Теги Mutators*
| Тег |
Описание |
Пример |
update |
Функция/процедура UPDATE |
ar:"update:updateProfile" |
replace |
Функция/процедура REPLACE |
ar:"replace:replaceProfile" |
pkg |
Пакет с функцией |
ar:"pkg:github.com/app/conv" |
type MutatorsUser struct {
ProfilePart bool `ar:"update:updateProfile;pkg:github.com/app/conv"`
}
Теги Flags*
| Тег |
Описание |
Пример |
flags |
Список флагов |
ar:"flags:Active,Verified,_,Admin" |
_ пропускает позицию бита
- Генерирует константы
{Field}{Flag}Flag
type FlagsUser struct {
Status string `ar:"flags:Active,Verified,Premium,_,Admin"`
}
// Генерирует:
// StatusActiveFlag = 1 << 0
// StatusVerifiedFlag = 1 << 1
// StatusPremiumFlag = 1 << 2
// StatusAdminFlag = 1 << 4
Теги Triggers*
| Тег |
Описание |
Пример |
pkg |
Пакет с функцией |
ar:"pkg:github.com/app/repair" |
func |
Имя функции |
ar:"func:RepairTuple" |
type TriggersUser struct {
RepairTuple bool `ar:"pkg:github.com/app/repair;func:RepairUserTuple"`
}
Теги FieldsObject*
| Тег |
Описание |
Пример |
key |
Поле в связанном объекте |
ar:"key:Id" |
object |
Имя связанной модели |
ar:"object:User" |
field |
Поле в текущем объекте |
ar:"field:UserId" |
shard_by |
Функция шардирования |
ar:"shard_by:*" |
type FieldsObjectOrder struct {
User int64 `ar:"key:Id;object:User;field:UserId"`
}
Теги ProcFields*
| Тег |
Описание |
Пример |
input |
Входной параметр |
ar:"input" |
output |
Выходной параметр |
ar:"output" |
output:N |
Выходной с номером |
ar:"output:2" |
serializer |
Сериализатор |
ar:"serializer:Json" |
size |
Размер параметра |
ar:"size:256" |
type ProcFieldsStats struct {
UserId string `ar:"input;size:32"`
Result int64 `ar:"output"`
}
Встроенные мутаторы
| Мутатор |
Метод |
Операция |
inc |
Inc{Field}(delta) |
field += delta |
dec |
Dec{Field}(delta) |
field -= delta |
and |
And{Field}(mask) |
field &= mask |
or |
Or{Field}(mask) |
field \|= mask |
xor |
Xor{Field}(mask) |
field ^= mask |
set_bit |
SetBit{Field}(mask) |
field \|= mask |
clear_bit |
ClearBit{Field}(mask) |
field &= ~mask |
Встроенные сериализаторы
| Сериализатор |
Описание |
Пример |
Json |
encoding/json |
serializer:Json |
Printf |
Форматирование |
serializer:Printf,%d.%d.%d |
Mapstructure |
mapstructure |
serializer:Mapstructure |