yt-gen-app/structs/db.go

48 lines
5.0 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package structs
import uuid "github.com/satori/go.uuid"
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"`
}
// Описание таблицы. Поле ID (индентификатор и первичный ключ) присутствуют всегда
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:"-"` // Дочерние (подчиненные) таблицы
}
// Описание поля
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 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"` // Описание внешнего ключа
}