database/api2sql/define/core.go

52 lines
3.0 KiB
Go

// Package define ...
//
// Description : define ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2023-07-29 21:04
package define
// Database 数据库的配置
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 21:04 2023/7/29
type Database struct {
Driver string `json:"driver" gorm:"driver" ini:"driver" xml:"driver" yaml:"driver"` // 数据库驱动 : 暂时支持 mysql / sqlite
Flag string `json:"flag" gorm:"flag" ini:"flag" xml:"flag" yaml:"flag"` // 数据库标识, 全局唯一
Description string `json:"description" gorm:"description" ini:"description" xml:"description" yaml:"description"` // 数据库描述
Logger *LoggerConfig `json:"logger" gorm:"logger" ini:"logger" xml:"logger" yaml:"logger"` // 日志配置
Config map[string]interface{} `json:"config" gorm:"config" ini:"config" xml:"config" yaml:"config"` // 数据库的配置
TableList []*Table `json:"table_list" gorm:"table_list" ini:"table_list" xml:"table_list" yaml:"table_list"` // 数据表列表
}
// Table 数据表结构
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 16:43 2023/7/30
type Table struct {
Name string `json:"name" gorm:"name" ini:"name" xml:"name" yaml:"name"` // 数据表名称
Split bool `json:"split" gorm:"split" ini:"split" xml:"split" yaml:"split"` // 是否分表
SplitCount int64 `json:"split_count" gorm:"split_count" ini:"split_count" xml:"split_count" yaml:"split_count"` // 分表数量
SplitField string `json:"split_field" gorm:"split_field" ini:"split_field" xml:"split_field" yaml:"split_field"` // 分表字段
PrimaryField string `json:"primary_field" gorm:"primary_field" ini:"primary_field" xml:"primary_field" yaml:"primary_field"` // 主键字段
FieldList []*TableField `json:"field_list" gorm:"field_list" ini:"field_list" xml:"field_list" yaml:"field_list"` // 字段列表
}
// TableField 数据表字段配置
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 21:08 2023/7/29
type TableField struct {
Description string `json:"description"` // 字段描述
Name string `json:"name"` // 数据表中字段名称
Alias string `json:"alias"` // 字段别名 : 未设置和 Name 保持一致, 设置了将会以此字段值输出
Type string `json:"type"` // 数据类型 : int/uint/bool/float/string/object/array
AllowOutput bool `json:"allow_output"` // 是否允许对外输出
DefaultValue interface{} `json:"default_value"` // 针对 INSERT 语句, 在未指定字段值的情况下写入的默认值, 为nil不设置
ValidateRule interface{} `json:"validate_rule"` // 字段验证规则 : 不满足规则直接报错 TODO : 待完成
}