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"` // Тип первичного ключа. Если 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"` // Внешние ключи FkFields []Field `yaml:"-" json:"-"` // Поля с описанием внешних ключей Children []string `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 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"` // Название ключа 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"` // Описание внешнего ключа }