ds

package
v1.8.5 Latest Latest
Warning

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

Go to latest
Published: Aug 9, 2023 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProcInputParam  = "input"
	ProcOutputParam = "output"
)

Variables

View Source
var FieldMutatorsCheckerOnce sync.Once
View Source
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 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   []FieldMutator // список мутаторов (атомарных действий на уровне БД)
	Size       int64          // Размер поля, используется только для строковых значений
	Serializer Serializer     // Сериализаторы для поля
	ObjectLink string         // является ли поле ссылкой на другую сущность
}

FieldDeclaration Тип описывающий поле в сущности

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

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

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                // Тип индекса, для индексов по одному полю простой тип, для составных индексов собственный тип
	Partial   bool                  // Признак того, что индекс частичный
}

Тип для описания индекса

type IndexField

type IndexField struct {
	IndField int
	Order    IndexOrder
}

Тип для описания поля внутри индекса (номер поля и направление сортировки)

type IndexOrder

type IndexOrder uint8

Тип и константы для описания направления сортировки индекса

const (
	IndexOrderAsc IndexOrder = iota
	IndexOrderDesc
)

type NamespaceDeclaration

type NamespaceDeclaration struct {
	ObjectName  string
	PublicName  string
	PackageName string
	ModuleName  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 {
	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       // Список флагов используемых в полях сущности
	ProcInFields    []ProcFieldDeclaration           // Описание входных параметров процедуры, важна последовательность
	ProcOutFields   ProcFieldDeclarations            // Описание выходных параметров процедуры, важна последовательность
	ProcFieldsMap   map[string]int                   // Обратный индекс от имен
}

Структура описывающая отдельную сущность представленную в декларативном файле

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) AddImport

func (rc *RecordPackage) AddImport(path string, reqImportName ...string) (ImportDeclaration, error)

func (*RecordPackage) AddIndex

func (rc *RecordPackage) AddIndex(ind IndexDeclaration) 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

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 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