Documentation ¶
Index ¶
- Constants
- Variables
- func GetFieldMutatorsChecker() map[string]string
- type AppInfo
- type FieldDeclaration
- type FieldObject
- type FlagDeclaration
- type ImportDeclaration
- type ImportPackage
- func (rc *ImportPackage) AddImport(path string, reqImportName ...string) (ImportDeclaration, error)
- func (rc *ImportPackage) FindImport(path string) (ImportDeclaration, error)
- func (rc *ImportPackage) FindImportByPkg(pkg string) (*ImportDeclaration, error)
- func (rc *ImportPackage) FindOrAddImport(path, importName string) (ImportDeclaration, error)
- type IndexDeclaration
- type IndexField
- type IndexOrder
- type LinkedPackageDeclaration
- type MutatorDeclaration
- type NamespaceDeclaration
- type PartialFieldDeclaration
- type ProcFieldDeclaration
- type ProcFieldDeclarations
- type ProcParameterType
- 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) AddIndex(ind IndexDeclaration) error
- func (rc *RecordPackage) AddMutator(m MutatorDeclaration) error
- func (rc *RecordPackage) AddPartialField(m MutatorDeclaration) error
- func (rc *RecordPackage) AddProcField(f ProcFieldDeclaration) error
- func (rc *RecordPackage) AddSerializer(s SerializerDeclaration) error
- func (rc *RecordPackage) AddTrigger(t TriggerDeclaration) error
- type Serializer
- type SerializerDeclaration
- type ServerDeclaration
- type TriggerDeclaration
Constants ¶
const ( ProcInputParam = "input" ProcOutputParam = "output" )
const ( IncMutator string = "inc" // инкремент (только для числовых типов) DecMutator string = "dec" // декремент (только для числовых типов) SetBitMutator string = "set_bit" // установка бита (только для целочисленных типов) ClearBitMutator string = "clear_bit" // снятие бита (только для целочисленных типов) AndMutator string = "and" // дизъюнкция (только для целочисленных типов) OrMutator string = "or" // конъюнкция (только для целочисленных типов) XorMutator string = "xor" // xor (только для целочисленных типов) )
Константы описывающие мутаторы для поля
Variables ¶
var FieldMutators = [...]string{ IncMutator, DecMutator, SetBitMutator, ClearBitMutator, AndMutator, OrMutator, XorMutator}
var FieldMutatorsCheckerOnce sync.Once
var PkgNameRx = regexp.MustCompile(`([^/"]+)"?$`)
PkgNameRx регулярное выражение вырезающее имя импортируемого пакета
Functions ¶
func GetFieldMutatorsChecker ¶
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 []string // список мутаторов (атомарных действий на уровне БД) Size int64 // Размер поля, используется только для строковых значений Serializer Serializer // Сериализаторы для поля ObjectLink string // является ли поле ссылкой на другую сущность }
FieldDeclaration Тип описывающий поле в сущности
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 ImportPackage ¶ added in v1.9.0
type ImportPackage struct { Imports []ImportDeclaration // Список необходимых дополнительных импортов, формируется из директивы import ImportMap map[string]int // Обратный индекс от имен по импортам ImportPkgMap map[string]int // Обратный индекс от пакетов к импортам }
func NewImportPackage ¶ added in v1.9.0
func NewImportPackage() ImportPackage
func (*ImportPackage) AddImport ¶ added in v1.9.0
func (rc *ImportPackage) AddImport(path string, reqImportName ...string) (ImportDeclaration, error)
func (*ImportPackage) FindImport ¶ added in v1.9.0
func (rc *ImportPackage) FindImport(path string) (ImportDeclaration, error)
func (*ImportPackage) FindImportByPkg ¶ added in v1.9.0
func (rc *ImportPackage) FindImportByPkg(pkg string) (*ImportDeclaration, error)
func (*ImportPackage) FindOrAddImport ¶ added in v1.9.0
func (rc *ImportPackage) FindOrAddImport(path, importName string) (ImportDeclaration, error)
type IndexDeclaration ¶
type IndexDeclaration struct { Name string // Имя индекса Num uint8 // Номер индекса в описании спейса Selector string // Название функции селектора Fields []int // Список номеров полей участвующих в индексе (последовательность имеет значение) FieldsMap map[string]IndexField // Обратный индекс по именам полей (используется для выявления дублей) Primary bool // Признак того, что индекс является первичным ключом Unique bool // Признак того, что индекс является уникальным Type string // Тип индекса, для индексов по одному полю простой тип, для составных индексов собственный тип Partial bool // Признак того, что индекс частичный }
Тип для описания индекса
type IndexField ¶
type IndexField struct { IndField int Order IndexOrder }
Тип для описания поля внутри индекса (номер поля и направление сортировки)
type IndexOrder ¶
type IndexOrder uint8
Тип и константы для описания направления сортировки индекса
const ( IndexOrderAsc IndexOrder = iota IndexOrderDesc )
type LinkedPackageDeclaration ¶ added in v1.9.0
type LinkedPackageDeclaration struct { Types map[string]struct{} // Имена типов связанных структур Import ImportPackage // Описание импорта пакета связанных структур }
type MutatorDeclaration ¶ added in v1.9.0
type MutatorDeclaration struct { Name string // имя Pkg string // Пакет для импорта Type string // Тип данных ImportName string // Симлинк для импорта Update string // Имя функции для параметров обновления Replace string // Имя функции для параметров замены PartialFields []PartialFieldDeclaration }
MutatorDeclaration Структура описывающая мутатор
type NamespaceDeclaration ¶
type NamespaceDeclaration struct { ObjectName string PublicName string PackageName string ModuleName string }
Структура для описания неймспейса сущности
type PartialFieldDeclaration ¶ added in v1.9.0
type ProcFieldDeclaration ¶ added in v1.6.0
type ProcFieldDeclaration struct { Name string // Название поля Format octopus.Format // формат поля Type ProcParameterType // тип параметра (IN, OUT, INOUT) Size int64 // Размер поля, используется только для строковых значений Serializer Serializer // Сериализатора для поля OrderIndex int // Порядковый номер параметра в сигнатуре вызова процедуры }
ProcFieldDeclaration Тип описывающий поле процедуры
type ProcFieldDeclarations ¶ added in v1.6.0
type ProcFieldDeclarations map[int]ProcFieldDeclaration
ProcFieldDeclarations Индекс порядкового значения полей процедуры
func (ProcFieldDeclarations) Add ¶ added in v1.6.0
func (pfd ProcFieldDeclarations) Add(field ProcFieldDeclaration) error
Add Добавляет декларацию поля процедуры в список. Возвращает ошибку, если декларация с таким порядком в ProcFieldDeclarations уже существует
func (ProcFieldDeclarations) List ¶ added in v1.6.0
func (pfd ProcFieldDeclarations) List() []ProcFieldDeclaration
List список деклараций процедуры в описанном порядке описания
func (ProcFieldDeclarations) Validate ¶ added in v1.6.0
func (pfd ProcFieldDeclarations) Validate() bool
Validate проверяет корректность декларируемых значений порядкового номера полей процедуры
type ProcParameterType ¶ added in v1.6.0
type ProcParameterType uint8
const ( IN ProcParameterType //тип входного параметра процедуры OUT //тип выходного параметра процедуры INOUT //тип одновременно и входного и выходного параметра процедуры )
func (ProcParameterType) String ¶ added in v1.6.0
func (p ProcParameterType) String() string
type RecordPackage ¶
type RecordPackage struct { ImportPackage 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 // Список сериализаторов используемых в этой сущности MutatorMap map[string]MutatorDeclaration // Список мутаторов используемых в этой сущности TriggerMap map[string]TriggerDeclaration // Список триггеров используемых в сущности FlagMap map[string]FlagDeclaration // Список флагов используемых в полях сущности ProcInFields []ProcFieldDeclaration // Описание входных параметров процедуры, важна последовательность ProcOutFields ProcFieldDeclarations // Описание выходных параметров процедуры, важна последовательность ProcFieldsMap map[string]int // Обратный индекс от имен LinkedStructsMap map[string]LinkedPackageDeclaration // Описание пакетов связанных типов ImportStructFieldsMap map[string][]PartialFieldDeclaration // Описаний структур импортируемых полей сущности }
Структура описывающая отдельную сущность представленную в декларативном файле
func NewRecordPackage ¶ added in v1.5.3
func NewRecordPackage() *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) AddIndex ¶
func (rc *RecordPackage) AddIndex(ind IndexDeclaration) error
Добавление индекса
func (*RecordPackage) AddMutator ¶ added in v1.9.0
func (rc *RecordPackage) AddMutator(m MutatorDeclaration) error
func (*RecordPackage) AddPartialField ¶ added in v1.9.0
func (rc *RecordPackage) AddPartialField(m MutatorDeclaration) error
func (*RecordPackage) AddProcField ¶ added in v1.6.0
func (rc *RecordPackage) AddProcField(f ProcFieldDeclaration) error
Добавление нового параметра процедуры в результирующий пакет
func (*RecordPackage) AddSerializer ¶
func (rc *RecordPackage) AddSerializer(s SerializerDeclaration) error
func (*RecordPackage) AddTrigger ¶
func (rc *RecordPackage) AddTrigger(t TriggerDeclaration) error
type Serializer ¶ added in v1.6.0
type Serializer []string
Serializer Сериализаторы для поля
func (Serializer) Name ¶ added in v1.6.0
func (s Serializer) Name() string
Name возвращает имя сериализатора, если он установлен, иначе пустую строку
func (Serializer) Params ¶ added in v1.6.0
func (s Serializer) Params() string
Params Параметры передаваемые при сериализации. Используется, когда на уровне декларирования известно, что сериализатор/десериализатор требует дополнительных константных значений
type SerializerDeclaration ¶
type SerializerDeclaration struct { Name string // имя Pkg string // Пакет для импорта Type string // Тип данных ImportName string // Симлинк для импорта Marshaler string // Имя функции маршалера Unmarshaler string // Имя функции анмаршаллера }
Структура описывающая сериализатор
type ServerDeclaration ¶
Структура для описания конфигурации сервера Может быть указан путь к конфигурации `Conf` или параметры подключения напрямую