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.