yt-gen-app/structs/backend.go

36 lines
4.1 KiB
Go
Raw Permalink Normal View History

package structs
2023-07-26 16:19:28 +03:00
import uuid "github.com/satori/go.uuid"
type Backend struct {
2023-07-26 16:19:28 +03:00
Config []ParamConfig `yaml:"config,omitempty" json:"config,omitempty"` // Параметры, передаваемые при запуске сервера
Rest map[string]*Rest `yaml:"rest,omitempty" json:"rest,omitempty"` // Подготовка REST для сервера
RestGroups []string `yaml:"-" json:"-"` // Названия групп
}
type ParamConfig struct {
2023-07-26 16:19:28 +03:00
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 VisField struct {
ID uuid.UUID `yaml:"id,omitempty" json:"id,omitempty"`
Name string `yaml:"name,omitempty" json:"name,omitempty"`
}
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
}