40 lines
3.4 KiB
Go
40 lines
3.4 KiB
Go
|
package structs
|
|||
|
|
|||
|
import uuid "github.com/satori/go.uuid"
|
|||
|
|
|||
|
type DB struct {
|
|||
|
Tables []Table `yaml:"tables,omitempty"`
|
|||
|
Description string `yaml:"description,omitempty" json:"nescription,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"` // Тип первичного ключа. Если uuid, то генерируется V4, int и bigint - используется bigint с автоинкрементом, string - первичный ключ как текстовое поле. Если не указано, то поумолчанию используется UUID
|
|||
|
Description string `yaml:"description,omitempty" json:"description,omitempty"` // Описание таблицы
|
|||
|
Fields []Field `yaml:"fields,omitempty" json:"fields,omitempty"` // Поля таблицы
|
|||
|
FKs []FK `yaml:"fks,omitempty" json:"fks,omitempty"` // Внешние ключи
|
|||
|
}
|
|||
|
|
|||
|
// Описание поля
|
|||
|
type Field struct {
|
|||
|
ID uuid.UUID `yaml:"id,omitempty" json:"id,omitempty"` // Идентификатор поля. Если пустой, то генерируется автоматически для дальнейше работы
|
|||
|
Name string `yaml:"name,omitempty" json:"name,omitempty"` // Название поля
|
|||
|
Recursive bool `yaml:"recursive,omitempty" json:"recursive,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 FK struct {
|
|||
|
ID uuid.UUID `yaml:"id,omitempty" json:"id,omitempty"` // Идентификатор внешнего ключа
|
|||
|
Name string `yaml:"name,omitempty" json:"name,omitempty"` // Название ключа
|
|||
|
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"` // Описание внешнего ключа
|
|||
|
}
|