Documentation
¶
Index ¶
- Constants
- Variables
- func GetColumnLength(columnType string) int
- func GetDataType(sqlType string) (dataType string, isUnsigned bool)
- func GetGoModule(file string) (string, error)
- func GetGoModuleName() (string, error)
- func IsDateObject(dataType string) bool
- func IsExistInArray(value string, array []string) bool
- func IsNumberObject(dataType string) bool
- func IsStringObject(dataType string) bool
- func IsTimeObject(dataType string) bool
- func SplitComma(str string) []string
- func TemplateEngine() *gview.View
- func TrimBreak(str string) (rStr string, err error)
- func WriteFile(fileName, data string, cover bool) (err error)
- type AddColumnDef
- type CodeGenDef
- type ColumnDef
- type DetailColumnDef
- type EditColumnDef
- type GenOptions
- type ImportOptions
- type ListColumnDef
- type QueryColumnDef
- type TableDef
- func (s *TableDef) AddChildren(column *ColumnDef) (err error)
- func (s *TableDef) AddRelatedInfo(ctx context.Context, ...) (*TableDef, error)
- func (s *TableDef) AddWithInfo(ctx context.Context, destValueColumn, originalColumn string) error
- func (s *TableDef) IsInList(columnName string) bool
- func (s *TableDef) ProcessCascadeColumn(column *ColumnDef) (err error)
- func (s *TableDef) ProcessCascades() error
- func (s *TableDef) ProcessColumnRelatedAndForeign(ctx context.Context, column *ColumnDef, yamlInputPath string, ...) error
- func (s *TableDef) ProcessColumns(ctx context.Context, yamlInputPath string, goModuleName string, ...) (err error)
- func (s *TableDef) ProcessRelatedAndForeign(ctx context.Context, yamlInputPath string, goModuleName string, ...) error
- func (s *TableDef) SetAddColumnValues(addColumn *AddColumnDef, baseColumn *ColumnDef)
- func (s *TableDef) SetDetailColumnValues(detailColumn *DetailColumnDef, baseColumn *ColumnDef)
- func (s *TableDef) SetEditColumnValues(editColumn *EditColumnDef, baseColumn *ColumnDef)
- func (s *TableDef) SetListColumnValues(listColumn *ListColumnDef, baseColumn *ColumnDef)
- func (s *TableDef) SetQueryColumnValues(queryColumn *QueryColumnDef, baseColumn *ColumnDef) (hasConversion bool)
- func (s *TableDef) SetVariableNames(goModuleName string)
Constants ¶
View Source
const ( RelatedTablePrefix = "Rltd" RelatedTableJsonPrefix = "rltd" )
Variables ¶
View Source
var ( ColumnTypeStr = []string{"char", "varchar", "varchar2", "tinytext", "text", "mediumtext", "longtext", "binary", "varbinary", "blob"} ColumnTypeDate = []string{"date"} ColumnTypeTime = []string{"datetime", "time", "timestamp"} ColumnTypeNumber = []string{"tinyint", "smallint", "mediumint", "int", "integer", "bigint", "float", "double", "decimal", "numeric", "bit"} ColumnNameNotEdit = []string{"created_by", "created_at", "updated_by", "updated_at", "deleted_at"} ColumnNameNotList = []string{"updated_by", "updated_at", "deleted_at"} ColumnNameNotDetail = []string{"updated_by", "updated_at", "deleted_at"} ColumnNameNotQuery = []string{"updated_by", "updated_at", "deleted_at", "remark"} )
Functions ¶
func GetDataType ¶
func GetGoModule ¶
func GetGoModuleName ¶
func IsExistInArray ¶
IsExistInArray 判断 value 是否存在在切片array中
func SplitComma ¶ added in v0.0.4
func TemplateEngine ¶
Types ¶
type AddColumnDef ¶
type AddColumnDef struct {
Name string `yaml:"-"` // 字段名
Sort int `yaml:"sort"` // 排序
HtmlType string `yaml:"htmlType,omitempty"` // 前端控件类型
Base *ColumnDef `yaml:"-"` // 对应字段
Comment string `yaml:"-"` // 字段描述(从字段基本属性中复制)
GoType string `yaml:"-"` // go字段类型(从字段基本属性中复制)
GoField string `yaml:"-"` // go字段变量名(从字段基本属性中复制)
HtmlField string `yaml:"-"` // 字段前端变量名(从字段基本属性中复制)
}
type CodeGenDef ¶
type CodeGenDef struct {
ApiVersion string `yaml:"apiVersion"` // 代码生成版本,当前为 v1
Table *TableDef `yaml:"table"` // 数据库表基本属性
Columns map[string]*ColumnDef `yaml:"columns"` // 数据库表所有字段
VirtualColumns map[string]*ColumnDef `yaml:"virtualColumns"` // 虚拟字段,必须关联到关联表中的字段,通常用于列表、详情和查询
ListColumns map[string]*ListColumnDef `yaml:"listColumns"` // 列表界面中展示字段
AddColumns map[string]*AddColumnDef `yaml:"addColumns"` // 新增界面可输入字段
EditColumns map[string]*EditColumnDef `yaml:"editColumns"` // 编辑界面可输入字段
QueryColumns map[string]*QueryColumnDef `yaml:"queryColumns"` // 列表界面中可查询字段
DetailColumns map[string]*DetailColumnDef `yaml:"detailColumns"` // 详情界面中展示字段
}
type ColumnDef ¶
type ColumnDef struct {
Name string `yaml:"-"` // 字段名
Comment string `yaml:"comment,omitempty"` // 字段描述
SqlType string `yaml:"sqlType,omitempty"` // 字段数据类型
Sort int `yaml:"sort"` // 显示排序
GoType string `yaml:"goType,omitempty"` // go字段类型,可以不填(会根据ColumnType自动判断)
ProtoType string `yaml:"-"` // protobuf类型
ConvertFunc string `yaml:"-"` // 对该类型的类型转换函数
GoField string `yaml:"goField,omitempty"` // go字段变量名,可以不填(会根据ColumnName按驼峰规则自动填充)
HtmlField string `yaml:"htmlField,omitempty"` // 字段前端变量名,可以不填(会根据ColumnName按小驼峰规则自动填充)
HtmlType string `yaml:"htmlType,omitempty"` // 前端控件类型
IsPk bool `yaml:"isPk,omitempty"` // 是否为主键(目前仅支持单字段主键,不支持联合主键)
IsIncrement bool `yaml:"isIncrement,omitempty"` // 是否为自增长字段
IsRequired bool `yaml:"isRequired,omitempty"` // 是否必填
DictType string `yaml:"dictType,omitempty"` // 参照的字典名称
RelatedTableName string `yaml:"relatedTableName,omitempty"` // 关联表名称
RelatedKeyColumn map[string]*ColumnDef `yaml:"-"` // 关联表的主键
RelatedValueColumnName string `yaml:"relatedValueColumnName,omitempty"` // 关联表Value字段名
IsCascade bool `yaml:"isCascade,omitempty"` // 是否需要级联查询(需要与关联表联合使用,级联规则为 当前表.ParentColumnName = 级联表.CascadeColumnName)
ParentColumnName string `yaml:"parentColumnName,omitempty"` // 级联查询时本表中的上级字段名
CascadeColumnName string `yaml:"cascadeColumnName,omitempty"` // 级联查询时关联表中对应字段名
IsCascadeParent bool `yaml:"-"` // 是否为级联查询的上级字段
CascadeParent *ColumnDef `yaml:"-"` // 级联父字段指针
CascadeChildrenColumns *gset.StrSet `yaml:"-"` // 所有级联子字段名(按级联顺序)
IsVirtual bool `yaml:"-"` // 是否虚拟字段,如果是虚拟,必须给出 ForeignXXX 三个字段的正确值
ForeignTableName string `yaml:"foreignTableName,omitempty"` // 虚拟字段实际所在的表
ForeignKeyColumnName string `yaml:"foreignKeyColumnName,omitempty"` // 与虚拟字段所在表的主键关联(参照)之当前表字段,即外键。注意,当前表中不应当出现多个字段同时关联某一个表的主键
ForeignValueColumnName string `yaml:"foreignValueColumnName,omitempty"` // 虚拟字段对应所在表的实际字段
ForeignTableClass string `yaml:"-"` // 虚拟字段所在表的ClassName
CombinedTableClass string `yaml:"-"` // 关联、虚拟值字段所属实际表的ClassName
CombinedHtmlTableClass string `yaml:"-"` // 关联、虚拟值字段所属实际表的前端类名(用于构建字典填充和下拉框内容延迟填充)
CombinedHtmlField string `yaml:"-"` // 关联、虚拟字段的前端变量名
}
func (*ColumnDef) SetColumnValues ¶
type DetailColumnDef ¶
type DetailColumnDef struct {
Name string `yaml:"-"` // 字段名
Sort int `yaml:"sort"` // 排序
HtmlType string `yaml:"htmlType,omitempty"` // 前端控件类型
ColSpan int `yaml:"colSpan,omitempty"` // 占据的栏位数(缺省为12,一行总栏位为24,即一行放两个字段的详情)
IsRowStart bool `yaml:"isRowStart,omitempty"` // 是否另起新行
Base *ColumnDef `yaml:"-"` // 对应字段
Comment string `yaml:"-"` // 字段描述(从字段基本属性中复制)
GoType string `yaml:"-"` // go字段类型(从字段基本属性中复制)
GoField string `yaml:"-"` // go字段变量名(从字段基本属性中复制)
HtmlField string `yaml:"-"` // 字段前端变量名(从字段基本属性中复制)
}
type EditColumnDef ¶
type EditColumnDef struct {
Name string `yaml:"-"` // 字段名
Sort int `yaml:"sort"` // 排序
HtmlType string `yaml:"htmlType,omitempty"` // 前端控件类型
IsDisabled bool `yaml:"isDisabled,omitempty"` // 是否为不可编辑状态
Base *ColumnDef `yaml:"-"` // 对应字段
Comment string `yaml:"-"` // 字段描述(从字段基本属性中复制)
GoType string `yaml:"-"` // go字段类型(从字段基本属性中复制)
GoField string `yaml:"-"` // go字段变量名(从字段基本属性中复制)
HtmlField string `yaml:"-"` // 字段前端变量名(从字段基本属性中复制)
}
type GenOptions ¶
type ImportOptions ¶
type ListColumnDef ¶
type ListColumnDef struct {
Name string `yaml:"-"` // 字段名
Sort int `yaml:"sort"` // 排序
HtmlType string `yaml:"htmlType,omitempty"` // 前端控件类型
IsInlineEditable bool `yaml:"isInlineEditable,omitempty"` // 是否允许行内编辑(目前仅应用于 yes/no 及 正常/停用 字典字段)
MinWidth int `yaml:"minWidth,omitempty"` // 列最小显示宽度
IsFixed bool `yaml:"isFixed,omitempty"` // 在列表中是否固定在最左边
IsOverflowTooltip bool `yaml:"isOverflowTooltip,omitempty"` // 在列表中是否省略一行显示不下的内容并将完整内容放在 tooltip 中
Base *ColumnDef `yaml:"-"` // 对应字段
Comment string `yaml:"-"` // 字段描述
GoType string `yaml:"-"` // go字段类型,可以不填(会根据ColumnType自动判断)
GoField string `yaml:"-"` // go字段变量名,可以不填(会根据ColumnName按驼峰规则自动填充)
HtmlField string `yaml:"-"` // 字段前端变量名,可以不填(会根据ColumnName按小驼峰规则自动填充)
}
type QueryColumnDef ¶
type QueryColumnDef struct {
Name string `yaml:"-"` // 字段名
Sort int `yaml:"sort"` // 排序
HtmlType string `yaml:"htmlType,omitempty"` // 前端控件类型
QueryType string `yaml:"queryType,omitempty"` // 查询类型 EQ|LIKE|BETWEEN
FieldValidation string `yaml:"-"` // 查询请求中的参数验证规则
FieldConversion string `yaml:"-"` // 查询请求中的必要类型转换
Base *ColumnDef `yaml:"-"` // 对应字段
Comment string `yaml:"-"` // 字段描述(从字段基本属性中复制)
GoType string `yaml:"-"` // go字段类型(从字段基本属性中复制)
GoField string `yaml:"-"` // go字段变量名(从字段基本属性中复制)
HtmlField string `yaml:"-"` // 字段前端变量名(从字段基本属性中复制)
}
type TableDef ¶
type TableDef struct {
Name string `yaml:"name"` // 表名
Comment string `yaml:"comment,omitempty"` // 表描述
BackendPackage string `yaml:"backendPackage,omitempty"` // Go文件根目录,通常以 cartx/app/ 打头,下面可以有子目录,对应老方法的 PackageName
ClassName string `yaml:"-"` // 对应Go单例名,Name去掉前缀然后转大驼峰
StructName string `yaml:"-"` // 对应Go的 struct 名,Name去掉前缀然后转小驼峰
GoFileName string `yaml:"-"` // 对应Go的文件名,Name去掉前缀然后转小写下划线分隔
RouteChildPath string `yaml:"-"` // 对应的 http route 子路径,小写短横线分隔(Kebab命名规则)
FrontendModule string `yaml:"frontendModule,omitempty"` // 前端模块路径,对应老方法的 ModuleName
FrontendPath string `yaml:"-"` // 前端模块路径,将 FrontendModule 做 Kebab 处理
FrontendFileName string `yaml:"-"` // 前端API文件名,Name去掉前缀然后转小写短横线分隔(Kebab命名规则)
TemplateCategory string `yaml:"templateCategory,omitempty"` // 代码生成类型 crud/tree
PackageName string `yaml:"-"` // Go 文件的 package
PackageNameProto string `yaml:"-"` // proto 文件的 package,由 BackendPackage 将 / 换成 . ,并且全小写,与Java client互通时这就是interface的 package name
ModuleName string `yaml:"-"` // Go模块及前端模块名,已废弃
BusinessName string `yaml:"businessName,omitempty"` // 业务名,如不填写,则由表名去掉前缀得到
FunctionName string `yaml:"functionName,omitempty"` // 功能名称(用于菜单显示和代码注释)
FunctionAuthor string `yaml:"functionAuthor,omitempty"` // 功能作者
TreeCode string `yaml:"treeCode,omitempty"` // tree类型对应的当前记录键字段
TreeParentCode string `yaml:"treeParentCode,omitempty"` // tree类型对应的父记录查询字段
TreeName string `yaml:"treeName,omitempty"` // tree类型对应的当前记录显示字段
Overwrite bool `yaml:"overwrite,omitempty"` // 生成时是否覆盖现有代码和菜单设置
SortColumn string `yaml:"sortColumn,omitempty"` // 排序字段
SortType string `yaml:"sortType,omitempty"` // 排序方式 asc/desc
ShowDetail bool `yaml:"showDetail,omitempty"` // 是否有显示详情功能
IsRpc bool `yaml:"isRpc,omitempty"` // 是否生成dubbogo rpc代码
SeparatePackage bool `yaml:"separatePackage,omitempty"` // 是否将代码生成到单独的目录下
RpcPort int `yaml:"rpcPort"` // rpc provider 服务侦听端口
CreateTime *gtime.Time `yaml:"createTime,omitempty"` // 当前配置初始生成时间
UpdateTime *gtime.Time `yaml:"updateTime,omitempty"` // 当前配置最后修改时间
Id int64 `yaml:"-"` // 仅用于迁移 tools_gen_table 时使用
HasTimeColumnInMain bool `yaml:"-"` // 主表字段中是否有时间字段
HasTimeColumn bool `yaml:"-"` // 主表+外表+关联表中是否有时间字段被用到
HasCheckboxColumn bool `yaml:"-"` // 主表中是否有html类型为checkbox的字段
HasUpFileColumn bool `yaml:"-"` // 主表+外表+关联表中是否有UpFile字段
HasConversion bool `yaml:"-"` // 是否需要字段值转换
CreatedAtColumn *ColumnDef `yaml:"-"` // created_at字段
CreatedByColumn *ColumnDef `yaml:"-"` // created_by字段
HasCreatedBy bool `yaml:"-"` // 是否有created_by字段
HasUpdatedBy bool `yaml:"-"` // 是否有updated_by字段
IsPkInEdit bool `yaml:"-"` // 主键是否出现在 EditColumn 中
PkColumns map[string]*ColumnDef `yaml:"-"` // 主键列信息(可以有多个)
ColumnMap map[string]*ColumnDef `yaml:"-"` // 所有列的map,key为 Name
Columns []*ColumnDef `yaml:"-"` // 数据库表所有字段
VirtualColumnMap map[string]*ColumnDef `yaml:"-"` // 所有虚拟列的map,key为 Name
VirtualColumns []*ColumnDef `yaml:"-"` // 所有虚拟字段
ListColumns []*ListColumnDef `yaml:"-"` // 列表界面中展示字段
AddColumns []*AddColumnDef `yaml:"-"` // 新增界面可输入字段
EditColumns []*EditColumnDef `yaml:"-"` // 编辑界面可输入字段
QueryColumns []*QueryColumnDef `yaml:"-"` // 列表界面中可查询字段
DetailColumns []*DetailColumnDef `yaml:"-"` // 详情界面中展示字段
OrmWithMapping string `yaml:"-"` // orm with 映射信息
RefColumns *gmap.ListMap `yaml:"-"` // 作为关联表时,要被查询的所有数据列信息
RelatedTableMap *gmap.ListMap `yaml:"-"` // 关联表map
RelatedTables []interface{} `yaml:"-"` // 关联表slice
ClassNameWhenRelated string `yaml:"-"` // 当作为 relatedTable 时的类名
JsonNameWhenRelated string `yaml:"-"` // 当作为 relatedTable 时的json名
CombinedClassName string `yaml:"-"` // 如果为二级嵌套,同ClassName;如果为三级嵌套,则为外表Class+关联表Class
HasVirtualQueries bool `yaml:"-"` // 是否有虚拟字段参与查询
VirtualQueryRelated map[string]*TableDef `yaml:"-"` // 虚拟字段参与查询的关联表
FkColumnNameSet *gset.StrSet `yaml:"-"` // 所有的外键字段
FkColumnsNotInList []*ColumnDef `yaml:"-"` // 没有出现在 list 列表中的 ForeignKeyColumnName 字段
AllRelatedTableMap *gmap.ListMap `yaml:"-"` // 所有的被关联表map,包含二级嵌套和三级嵌套
AllRelatedTables []interface{} `yaml:"-"` // 所有的被关联表slice,包含二级嵌套和三级嵌套
}
func LoadTableDefYaml ¶
func (*TableDef) AddChildren ¶ added in v0.0.4
func (*TableDef) AddRelatedInfo ¶ added in v0.0.4
func (*TableDef) AddWithInfo ¶ added in v0.0.4
func (*TableDef) ProcessCascadeColumn ¶ added in v0.0.4
func (*TableDef) ProcessCascades ¶ added in v0.0.4
func (*TableDef) ProcessColumnRelatedAndForeign ¶ added in v0.0.4
func (*TableDef) ProcessColumns ¶
func (*TableDef) ProcessRelatedAndForeign ¶ added in v0.0.4
func (*TableDef) SetAddColumnValues ¶
func (s *TableDef) SetAddColumnValues(addColumn *AddColumnDef, baseColumn *ColumnDef)
func (*TableDef) SetDetailColumnValues ¶ added in v0.0.4
func (s *TableDef) SetDetailColumnValues(detailColumn *DetailColumnDef, baseColumn *ColumnDef)
func (*TableDef) SetEditColumnValues ¶
func (s *TableDef) SetEditColumnValues(editColumn *EditColumnDef, baseColumn *ColumnDef)
func (*TableDef) SetListColumnValues ¶
func (s *TableDef) SetListColumnValues(listColumn *ListColumnDef, baseColumn *ColumnDef)
func (*TableDef) SetQueryColumnValues ¶
func (s *TableDef) SetQueryColumnValues(queryColumn *QueryColumnDef, baseColumn *ColumnDef) (hasConversion bool)
func (*TableDef) SetVariableNames ¶
Click to show internal directories.
Click to hide internal directories.