ds

package
v1.5.2 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2023 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

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

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

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

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