ds

package
v1.11.0-beta Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 12, 2024 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProcInputParam  = "input"
	ProcOutputParam = "output"
)
View Source
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

View Source
var FieldMutatorsCheckerOnce sync.Once
View Source
var PkgNameRx = regexp.MustCompile(`([^/"]+)"?$`)

PkgNameRx регулярное выражение вырезающее имя импортируемого пакета

Functions

func GetFieldMutatorsChecker

func GetFieldMutatorsChecker() map[string]string

Types

type AppInfo

type AppInfo struct {
	// contains filtered or unexported fields
}

Описание приложения. Информация необходимая для разметки артефактов Остаётся в сгенерированных файлах, что бы было понятно какой версией сгенерированы файлы

func NewAppInfo

func NewAppInfo() *AppInfo

Конструктор для AppInfo

func (*AppInfo) String

func (i *AppInfo) String() string

Строковое представление версии генератора

func (*AppInfo) WithBuildCommit

func (i *AppInfo) WithBuildCommit(commit string) *AppInfo

func (*AppInfo) WithBuildOS

func (i *AppInfo) WithBuildOS(buildOS string) *AppInfo

func (*AppInfo) WithBuildTime

func (i *AppInfo) WithBuildTime(buildTime string) *AppInfo

func (*AppInfo) WithVersion

func (i *AppInfo) WithVersion(version string) *AppInfo

Опции для конструктора, используются для модификации полей структуры

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 FlagDeclaration struct {
	Name  string   // Имя
	Flags []string // Список имён флагов
}

Структура описывающая флаги для поля

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 PartialFieldDeclaration struct {
	Name string // Имя части поля
	Type string // Тип части поля
}

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

Add Добавляет декларацию поля процедуры в список. Возвращает ошибку, если декларация с таким порядком в ProcFieldDeclarations уже существует

func (ProcFieldDeclarations) List added in v1.6.0

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

type ServerDeclaration struct {
	Timeout          int64
	Host, Port, Conf string
}

Структура для описания конфигурации сервера Может быть указан путь к конфигурации `Conf` или параметры подключения напрямую

type TriggerDeclaration

type TriggerDeclaration struct {
	Name       string          // Имя
	Pkg        string          // Пакет для импорта
	Func       string          // Имя функции
	ImportName string          // Симлинк для импорта пакета
	Params     map[string]bool // Параметры передаваемые в функцию
}

Структура описывающая триггеры

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL