Documentation ¶
Index ¶
- Variables
- func GetFieldMutatorsChecker() map[string]FieldMutator
- type AppInfo
- type FieldDeclaration
- type FieldMutator
- type FieldObject
- type FlagDeclaration
- type ImportDeclaration
- type IndexDeclaration
- type IndexField
- type IndexOrder
- type NamespaceDeclaration
- type RecordPackage
- func (rc *RecordPackage) AddField(f FieldDeclaration) error
- func (rc *RecordPackage) AddFieldObject(fo FieldObject) error
- func (rc *RecordPackage) AddFlag(f FlagDeclaration) error
- func (rc *RecordPackage) AddImport(path string, reqImportName ...string) (ImportDeclaration, error)
- func (rc *RecordPackage) AddIndex(ind IndexDeclaration) error
- func (rc *RecordPackage) AddSerializer(s SerializerDeclaration) error
- func (rc *RecordPackage) AddTrigger(t TriggerDeclaration) error
- func (rc *RecordPackage) FindImport(path string) (ImportDeclaration, error)
- func (rc *RecordPackage) FindImportByPkg(pkg string) (*ImportDeclaration, error)
- func (rc *RecordPackage) FindOrAddImport(path, importname string) (ImportDeclaration, error)
- type SerializerDeclaration
- type ServerDeclaration
- type TriggerDeclaration
Constants ¶
This section is empty.
Variables ¶
var FieldMutators = [...]FieldMutator{ IncMutator, DecMutator, SetBitMutator, ClearBitMutator, AndMutator, OrMutator, XorMutator}
var FieldMutatorsCheckerOnce sync.Once
var PkgNameRx = regexp.MustCompile(`([^/"]+)"?$`)
PkgNameRx регулярное выражение вырезающее имя импортируемого пакета
Functions ¶
func GetFieldMutatorsChecker ¶
func GetFieldMutatorsChecker() map[string]FieldMutator
Types ¶
type AppInfo ¶
type AppInfo struct {
// contains filtered or unexported fields
}
Описание приложения. Информация необходимая для разметки артефактов Остаёт в сгенерированных файлах, что бы было понятно какой версией сгенерированны файлы
func (*AppInfo) WithBuildCommit ¶
func (*AppInfo) WithBuildOS ¶
func (*AppInfo) WithBuildTime ¶
func (*AppInfo) WithVersion ¶
Опции для конструктора, используются для модификации полей структуры
type FieldDeclaration ¶
type FieldDeclaration struct { Name string // Название поля Format octopus.Format // формат поля PrimaryKey bool // участвует ли поле в первичном ключе (при изменении таких полей необходимо делать delete + insert вместо update) Mutators []FieldMutator // список мутаторов (атомарных действий на уровне БД) Size int64 // Размер поля, используется только для строковых значений Serializer []string // Сериализаторф для поля ObjectLink string // является ли поле ссылкой на другую сущность }
Тип описывающий поле в сущности
func (*FieldDeclaration) SerializerName ¶
func (f *FieldDeclaration) SerializerName() string
Метод возвращающий имя сериализоватора, если он установлен, иначе пустую строку
func (*FieldDeclaration) SerializerParams ¶
func (f *FieldDeclaration) SerializerParams() string
Парамтеры передаваемые при сериализации. Используется, когда на уровне декларирования известно, что сериализоатор/десериализатор требует дополнительных константных значений
type FieldMutator ¶
type FieldMutator string
Тип и константы описывающие мутаторы для поля
const ( IncMutator FieldMutator = "inc" // инкремент (только для числовых типов) DecMutator FieldMutator = "dec" // дектиремн (только для числовых типов) SetBitMutator FieldMutator = "set_bit" // установка бита (только для целочисленных типов) ClearBitMutator FieldMutator = "clear_bit" // снятие бита (только для целочисленных типов) AndMutator FieldMutator = "and" // дизюнкция (только для целочисленных типов) OrMutator FieldMutator = "or" // конюнкция (только для целочисленных типов) XorMutator FieldMutator = "xor" // xor (только для целочисленных типов) )
type FieldObject ¶
type FieldObject struct { Name string // Имя Key string // Название поля во внешней сущности ObjectName string // Название внешней сущности Field string // Имя поля в текужей сущности Unique bool // Признак связки true => один к одному, false => один ко многим }
Структура для описания ссылочных полей (когда значение одного из полей является ключом для для другой сущности)
type FlagDeclaration ¶
Структура описывающая флаги для поля
type ImportDeclaration ¶
type ImportDeclaration struct { Path string // Путь к пакету ImportName string // Симлинк для пакета при импорте }
Структура описывающая дополнитеьный импорты
type IndexDeclaration ¶
type IndexDeclaration struct { Name string // Имя индекса Num uint8 // номер индекса, используется для частичных индексов Selector string // название функции селектора Fields []int // список номеров полей участвующих в индексе (последовательность имеет значение) FieldsMap map[string]IndexField // Обратный индекс по именам полей (используется для выявления дублей) Primary bool // признак того, что индекс является первичным ключом Unique bool // прихнак того, что индекс являетяс уникальным Type string // Тип индекса, для индексов по одному полю простой тип, для составных индексов собственный тип }
Тип для описания индекса
type IndexField ¶
type IndexField struct { IndField int Order IndexOrder }
Тип для описания поля внутри индекса (номер поля и направление сортировки)
type IndexOrder ¶
type IndexOrder uint8
Тип и константы для описания направления сортировки индекса
const ( IndexOrderAsc IndexOrder = iota IndexOrderDesc )
type NamespaceDeclaration ¶
type NamespaceDeclaration struct { Num int64 PublicName string PackageName string ModuleName string }
Структура для описания неймспейса сущности
type RecordPackage ¶
type RecordPackage struct { Server ServerDeclaration // Описание сервера Namespace NamespaceDeclaration // Описание неймспейса/таблицы Fields []FieldDeclaration // Описание полей, важна последовательность для некоторых хранилищ FieldsMap map[string]int // Обратный индекс от имен к полям FieldsObjectMap map[string]FieldObject // Обратный индекс по имени для ссылок на другие сущности Indexes []IndexDeclaration // Список индексов, важна последовательность для некоторых хранилищ IndexMap map[string]int // Обратный индекс от имён для индексов SelectorMap map[string]int // Список селекторов, используется для контроля дублей Backends []string // Список бекендов для которых надо сгенерировать пакеты (сейчас допустим один и только один) SerializerMap map[string]SerializerDeclaration // Список сериализаторов используемых в этой сущности Imports []ImportDeclaration // Список необходимых дополнительных импортов, формируется из дериктивы import ImportMap map[string]int // Обратный индекс от имен по импортам ImportPkgMap map[string]int // Обратный индекс от пакетов к импортам TriggerMap map[string]TriggerDeclaration // Список триггеров используемых в сущности FlagMap map[string]FlagDeclaration // Список флагов используемых в полях сущности }
Структура описывающая отдельную сущность представленную в декларативном файле
func NewRecordPacakge ¶
func NewRecordPacakge() *RecordPackage
Конструктор для RecordPackage, инициализирует ссылочные типы
func (*RecordPackage) AddField ¶
func (rc *RecordPackage) AddField(f FieldDeclaration) error
Добавление нового поля в результирующий пакет
func (*RecordPackage) AddFieldObject ¶
func (rc *RecordPackage) AddFieldObject(fo FieldObject) error
Добавление нового ссылочного поля
func (*RecordPackage) AddFlag ¶
func (rc *RecordPackage) AddFlag(f FlagDeclaration) error
func (*RecordPackage) AddImport ¶
func (rc *RecordPackage) AddImport(path string, reqImportName ...string) (ImportDeclaration, error)
func (*RecordPackage) AddIndex ¶
func (rc *RecordPackage) AddIndex(ind IndexDeclaration) error
Добавление индекса
func (*RecordPackage) AddSerializer ¶
func (rc *RecordPackage) AddSerializer(s SerializerDeclaration) error
func (*RecordPackage) AddTrigger ¶
func (rc *RecordPackage) AddTrigger(t TriggerDeclaration) error
func (*RecordPackage) FindImport ¶
func (rc *RecordPackage) FindImport(path string) (ImportDeclaration, error)
func (*RecordPackage) FindImportByPkg ¶
func (rc *RecordPackage) FindImportByPkg(pkg string) (*ImportDeclaration, error)
func (*RecordPackage) FindOrAddImport ¶
func (rc *RecordPackage) FindOrAddImport(path, importname string) (ImportDeclaration, error)
type SerializerDeclaration ¶
type SerializerDeclaration struct { Name string // имя Pkg string // Пакет для импорта Type string // Тип данных ImportName string // Симлинк для импорта Marshaler string // Имя функции маршалера Unmarshaler string // Имя функции анмаршаллера }
Структура описывающая сериализатор
type ServerDeclaration ¶
Структура для описания конфигурации сервера Может быть указан путь к конфигурации `Conf` или параматры подключения напрямую