common

package
v0.1.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 29, 2022 License: MIT Imports: 19 Imported by: 2

Documentation

Index

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 GetColumnLength

func GetColumnLength(columnType string) int

GetColumnLength 获取字段长度

func GetDataType

func GetDataType(sqlType string) (dataType string, isUnsigned bool)

func GetGoModule

func GetGoModule(file string) (string, error)

func GetGoModuleName

func GetGoModuleName() (string, error)

func IsDateObject

func IsDateObject(dataType string) bool

IsDateObject 判断是否是数据库时间类型

func IsExistInArray

func IsExistInArray(value string, array []string) bool

IsExistInArray 判断 value 是否存在在切片array中

func IsNumberObject

func IsNumberObject(dataType string) bool

IsNumberObject 是否数字类型

func IsStringObject

func IsStringObject(dataType string) bool

IsStringObject 判断是否是数据库字符串类型

func IsTimeObject

func IsTimeObject(dataType string) bool

IsTimeObject 判断是否是数据库时间类型

func SplitComma added in v0.0.4

func SplitComma(str string) []string

func TemplateEngine

func TemplateEngine() *gview.View

func TrimBreak

func TrimBreak(str string) (rStr string, err error)

func WriteFile

func WriteFile(fileName, data string, cover bool) (err error)

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

func (c *ColumnDef) SetColumnValues() error

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 GenOptions struct {
	YamlInputPath string
	GoModuleName  string
	ServiceOnly   bool
	SmartCache    bool
	FrontendType  string
	FrontendPath  string
}

type ImportOptions

type ImportOptions struct {
	BackendPackage      string
	FrontendModule      string
	GoModuleName        string
	TableNames          []string
	TablePrefixesOnly   []string
	RemoveTablePrefixes []string
	YamlOutputPath      string
	SeparatePackage     bool
	TemplateCategory    string
	Author              string
	Overwrite           bool
	ShowDetail          bool
	IsRpc               bool
}

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 LoadTableDefYaml(ctx context.Context, tableName string, yamlInputPath string, goModuleName string, cache map[string]*TableDef) (*TableDef, error)

func (*TableDef) AddChildren added in v0.0.4

func (s *TableDef) AddChildren(column *ColumnDef) (err error)

func (*TableDef) AddRelatedInfo added in v0.0.4

func (s *TableDef) AddRelatedInfo(ctx context.Context, relatedTableName, relatedValueColumnName, originalColumnName string, yamlInputPath string, goModuleName string, cache map[string]*TableDef) (*TableDef, error)

func (*TableDef) AddWithInfo added in v0.0.4

func (s *TableDef) AddWithInfo(ctx context.Context, destValueColumn, originalColumn string) error

func (*TableDef) IsInList

func (s *TableDef) IsInList(columnName string) bool

func (*TableDef) ProcessCascadeColumn added in v0.0.4

func (s *TableDef) ProcessCascadeColumn(column *ColumnDef) (err error)

func (*TableDef) ProcessCascades added in v0.0.4

func (s *TableDef) ProcessCascades() error

func (*TableDef) ProcessColumnRelatedAndForeign added in v0.0.4

func (s *TableDef) ProcessColumnRelatedAndForeign(ctx context.Context, column *ColumnDef, yamlInputPath string, goModuleName string, cache map[string]*TableDef) error

func (*TableDef) ProcessColumns

func (s *TableDef) ProcessColumns(ctx context.Context, yamlInputPath string, goModuleName string, cache map[string]*TableDef) (err error)

func (*TableDef) ProcessRelatedAndForeign added in v0.0.4

func (s *TableDef) ProcessRelatedAndForeign(ctx context.Context, yamlInputPath string, goModuleName string, cache map[string]*TableDef) error

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

func (s *TableDef) SetVariableNames(goModuleName string)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL