2023-06-23 14:54:47 +03:00
package structs
import uuid "github.com/satori/go.uuid"
type DB struct {
2023-07-19 16:02:07 +03:00
SQLite bool ` yaml:"sqlite,omitempty" json:"sqlite,omitempty" `
Tables [ ] Table ` yaml:"tables,omitempty" json:"tables,omitempty" `
Description string ` yaml:"description,omitempty" json:"description,omitempty" `
2023-06-23 14:54:47 +03:00
}
// Описание таблицы. Поле ID (индентификатор и первичный ключ) присутствуют всегда
type Table struct {
2023-08-14 16:30:06 +03:00
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" ` // Значения для заполняемого справочника
FkFields [ ] Field ` yaml:"-" json:"-" ` // Поля с описанием внешних ключей
Children [ ] Field ` yaml:"-" json:"-" ` // Дочерние (подчиненные) таблицы
2023-06-23 14:54:47 +03:00
}
// Описание поля
type Field struct {
2023-08-14 16:30:06 +03:00
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" ` // Описание поля
2023-06-23 14:54:47 +03:00
}
// Описание внешних ключей
type FK struct {
ID uuid . UUID ` yaml:"id,omitempty" json:"id,omitempty" ` // Идентификатор внешнего ключа
Name string ` yaml:"name,omitempty" json:"name,omitempty" ` // Название ключа
2023-07-19 16:02:07 +03:00
Type string ` yaml:"-" json:"-" ` // Тип первичного ключа
2023-06-23 14:54:47 +03:00
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" ` // Описание внешнего ключа
}