structs

package
v0.0.10 Latest Latest
Warning

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

Go to latest
Published: Aug 11, 2023 License: MIT Imports: 1 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Backend

type Backend struct {
	Config     []ParamConfig    `yaml:"config,omitempty" json:"config,omitempty"` // Параметры, передаваемые при запуске сервера
	Rest       map[string]*Rest `yaml:"rest,omitempty" json:"rest,omitempty"`     // Подготовка REST для сервера
	RestGroups []string         `yaml:"-" json:"-"`                               // Названия групп
}

type DB

type DB struct {
	SQLite      bool    `yaml:"sqlite,omitempty" json:"sqlite,omitempty"`
	Tables      []Table `yaml:"tables,omitempty" json:"tables,omitempty"`
	Description string  `yaml:"description,omitempty" json:"description,omitempty"`
}

type FK

type FK struct {
	ID          uuid.UUID `yaml:"id,omitempty" json:"id,omitempty"`                   // Идентификатор внешнего ключа
	Name        string    `yaml:"name,omitempty" json:"name,omitempty"`               // Название ключа
	Type        string    `yaml:"-" json:"-"`                                         // Тип первичного ключа
	TableID     uuid.UUID `yaml:"idTable,omitempty" json:"idTable,omitempty"`         // Идентификатор таблицы, на которую ссылаемся
	TableName   string    `yaml:"tableName,omitempty" json:"tableName,omitempty"`     // Название таблицы, на которую ссылаемся
	Description string    `yaml:"description,omitempty" json:"description,omitempty"` // Описание внешнего ключа
}

Описание внешних ключей

type Field

type Field struct {
	ID          uuid.UUID `yaml:"id,omitempty" json:"id,omitempty"`                   // Идентификатор поля. Если пустой, то генерируется автоматически для дальнейше работы
	Name        string    `yaml:"name,omitempty" json:"name,omitempty"`               // Название поля
	Type        string    `yaml:"type,omitempty" json:"type,omitempty"`               // Тип поля. По умолчанию text
	Length      *int      `yaml:"length,omitempty" json:"len,omitempty"`              // Размер поля для строковых типов и Decimal
	Accuracy    *int      `yaml:"accuracy,omitempty" json:"accuracy,omitempty"`       // Точность поля для Decimal
	Description string    `yaml:"description,omitempty" json:"description,omitempty"` // Описание поля
}

Описание поля

type Frontend

type Frontend struct {
	Lang  string `yaml:"lang" json:"lang" default:"agular"`                                                // Библиотека для клиентской части
	Theme string `yaml:"theme" json:"theme" default:"primeng/resources/themes/mdc-light-indigo/theme.css"` // Стиль по умолчанию для PrimeNG
}

type ParamConfig

type ParamConfig struct {
	Name string `yaml:"name" json:"name,omitempty" default:"param"`  // Название параметра
	Type string `yaml:"type" json:"type,omitempty" default:"string"` // Тип параметра
	Help string `yaml:"help" json:"help,omitempty"`                  // Справка помощи параметра
}

type Project

type Project struct {
	// Language string `yaml:"lang"` // Язык генерации. Поддерживаются go (серверная часть) и angular (клиентская часть)
	Name            string `yaml:"name,omitempty" json:"name,omitempty"`
	Title           string `yaml:"title,omitempty" json:"title,omitempty"`
	Version         string `yaml:"version,omitempty" json:"version,omitempty"`
	Description     string `yaml:"description,omitempty" json:"description,omitempty"`
	TermsOfServices string `yaml:"termsOfServices,omitempty" json:"termsOfServices,omitempty"`
	ContactName     string `yaml:"contactName,omitempty" json:"contactName,omitempty"`
	ContactUrl      string `yaml:"contactUrl,omitempty" json:"contactUrl,omitempty"`
	ContactEmail    string `yaml:"contactEmail,omitempty" json:"contactEmail,omitempty"`
	LicenseName     string `yaml:"licenseName,omitempty" json:"licenseName,omitempty"`
	LicenseUrl      string `yaml:"licenseUrl,omitempty" json:"licenseUrl,omitempty"`
	Host            string `yaml:"host,omitempty" json:"host,omitempty"`
	BasePath        string `yaml:"basePath,omitempty" json:"basePath,omitempty"`

	DB       DB       `yaml:"db,omitempty" json:"db,omitempty"`             // Структура БД
	Roles    []Role   `yaml:"roles,omitempty" json:"roles,omitempty"`       // Роли приложения
	Backend  Backend  `yaml:"backend,omitempty" json:"backend,omitempty"`   // Структура серверной стороны
	Frontend Frontend `yaml:"frontend,omitempty" json:"frontend,omitempty"` // Структура клиентской стороны
}

type Rest

type Rest struct {
	Name      string              `yam:"name,omitempty" json:"name,omitempty" default:"noname"`                // Имя раздела запросов
	GroupName string              `yaml:"groupName,omitempty" json:"groupName,omitempty" default:"nogroup"`    // Имя группы, в которую входит данный путь REST
	Summary   string              `yaml:"summary,omitempty" json:"summary,omitempty" default:"Общее описание"` // Общее краткое описание
	Comment   string              `yaml:"comment,omitempty" json:"comment,omitempty" default:"Описание"`       // Описание (комментарий)
	Data      VisField            `yaml:"data,omitempty" json:"data,omitempty"`                                // Модель данных, на основе которой строиться запрос
	Edit      []VisField          `yaml:"edits,omitempty" json:"edits,omitempty"`                              // Список полей для редактирования
	Visible   []VisField          `yaml:"visible,omitempty" json:"visible,omitempty"`                          // Список видимых полей. Если указан хоть один, то отображаются только те, которые указаны, иначе отображаются все
	Invisible []VisField          `yaml:"invisible,omitempty" json:"invisible,omitempty"`                      // Список невидимых полей. Если указан хоть один, то отображаются все кроме указанного, иначе берется правило из поля "visible". Является приоритетным и в данном случае поле "visible" игнорируется
	Filter    []VisField          `yaml:"filter,omitempty" json:"filter,omitempty"`                            // Указывается список полей, по которым будет осуществляться поиск
	Editable  bool                `yaml:"editable,omitempty" json:"editable,omitempty"`                        // Модель является редактируемой, т.е. необходимо сгенерировать rest для данной модели. Для данного пути будут сформированы методы GET, POST, PUT и DELETE с соответствующим путем /<path>/{id}
	FieldID   VisField            `yaml:"fieldId,omitempty" json:"fieldId,omitempty"`                          // Поле, которое является ключевым при работе с конкретной записью. Если модель данных указана db, то ключевое поле берется из описания БД и игнорируется.
	Roles     map[string][]string `yaml:"roles,omitempty" json:"roles,omitempty"`                              // Список ролей, которым разрешено работать с данным. Операция: массив строк с названием ролей. Если не указано, то все роли. Операция для просмотра списка: LIST
}

type RestStruct added in v0.0.9

type RestStruct struct {
	Path    string
	Project *Project
	Rest    *Rest
}

type Role

type Role struct {
	ID      uuid.UUID `yaml:"id" json:"id"`
	Name    string    `yaml:"name" json:"name"`
	Display string    `yaml:"display" json:"display"`
}

type Table

type Table struct {
	ID          uuid.UUID `yaml:"id,omitempty" json:"id,omitempty"`                   // Идентификатор таблицы. Если пустой, то генерируется автоматически для дальнейше работы
	Name        string    `yaml:"name,omitempty" json:"name,omitempty"`               // Название таблицы
	Schema      string    `yaml:"schema,omitempty" json:"schema,omitempty"`           // Схема таблицы (для PostgreSQL либо префикс для остальных)
	Pk          string    `yaml:"pk,omitempty" json:"pk,omitempty"`                   // Тип первичного ключа. Если uuid, то генерируется V4, int и bigint - используется bigint с автоинкрементом, string - первичный ключ как текстовое поле. Если не указано, то поумолчанию используется UUID
	Description string    `yaml:"description,omitempty" json:"description,omitempty"` // Описание таблицы
	Fields      []Field   `yaml:"fields,omitempty" json:"fields,omitempty"`           // Поля таблицы
	Recursive   bool      `yaml:"recursive,omitempty" json:"recursive,omitempty"`     // Рекурсивная таблица
	FKs         []FK      `yaml:"fks,omitempty" json:"fks,omitempty"`                 // Внешние ключи
	FkFields    []Field   `yaml:"-" json:"-"`                                         // Поля с описанием внешних ключей
	Children    []string  `yaml:"-" json:"-"`                                         // Дочерние (подчиненные) таблицы
}

Описание таблицы. Поле ID (индентификатор и первичный ключ) присутствуют всегда

type TmplInOut

type TmplInOut struct {
	FileIn  string
	FileOut string
}

type VisField

type VisField struct {
	ID   uuid.UUID `yaml:"id,omitempty" json:"id,omitempty"`
	Name string    `yaml:"name,omitempty" json:"name,omitempty"`
}

Jump to

Keyboard shortcuts

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