structs

package
v0.1.6 Latest Latest
Warning

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

Go to latest
Published: Jan 11, 2024 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
	TypeParentTable string    `yaml:"-" json:"-"`                                         // Поле для типа от родительских таблицы первичных ключей
	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"` // Описание поля
	IsArray         bool      `yaml:"isArray,omitempty" json:"isArray,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
	DefaultPathAfterLogin string `yaml:"defaultPathAfterLogin" json:"defaultPathAfterLogin" default:"/"`                   // Путь переадресация после успешной аутентификации
}

type Interface added in v0.0.20

type Interface struct {
	ID     uuid.UUID `yaml:"id,omitempty" json:"id,omitempty"`
	Name   string    `yaml:"name,omitempty" json:"name,omitempty" default:"noname"`
	Fields []Field   `yaml:"fields,omitempty" json:"fields,omitempty"`
}

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"`
	Interfaces      []Interface `yaml:"interfaces,omitempty" json:"interfaces,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
	Methods    []string            `yaml:"methods,omitempty" json:"methods,omitempty"`                          // Методы, которые нужно генерировать. Если указаны, то стандартные методы и параметр "editable" игнорируется
	ParamQuery []Field             `yaml:"paramQuery,omitempty" json:"paramQuery,omitempty"`                    // параметры запроса
	Unsafe     bool                `yaml:"unsafe,omitempty" json:"unsafe,omitempty"`                            // Раздел запроса не нужно защищать
}

type RestStruct added in v0.0.9

type RestStruct struct {
	Path            string
	PathPackageName string
	Project         *Project
	Rest            *Rest
	PathParams      []Field

	// Поля для формирования документации к БД
	Table    *Table
	Children []Table
	Parents  []Table
}

type Role

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

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" default:"uuid"`        // Тип первичного ключа. Если 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"`                     // Внешние ключи
	Values        []map[string]interface{} `yaml:"values,omitempty" json:"values,omitempty"`               // Значения для заполняемого справочника
	IncludeValues string                   `yaml:"includeValues,omitempty" json:"includeValues,omitempty"` // Относительный путь к файлу со значениями для заполнения справочника. yml и json будут подставлены автоматически
	FkFields      []Field                  `yaml:"-" json:"-"`                                             // Поля с описанием внешних ключей
	Children      []Field                  `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