model

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Jul 20, 2022 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RelatedTablePrefix     = "Rltd"
	RelatedTableJsonPrefix = "rltd"
)

Variables

This section is empty.

Functions

This section is empty.

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       *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
	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 中
	PkColumn             *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 (*TableDef) IsInList

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

func (*TableDef) ProcessColumns

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

func (*TableDef) SetAddColumnValues

func (s *TableDef) SetAddColumnValues(addColumn *AddColumnDef, 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)

Jump to

Keyboard shortcuts

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