Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // DatabaseTemplates 保存database将要生成的文件��模版信息 DatabaseTemplates []InstanceTemplate = []InstanceTemplate{ { Name: "database", Format: pkgf("d_%s.go"), }, { Name: "sql/table", Format: pkgf("sql/%s.sql"), }, } // EntityTemplates entity的相关模版 EntityTemplates []InstanceTemplate = []InstanceTemplate{ { Name: "entity/builder", Format: pkgf("e_%s_builder.go"), }, { Name: "entity/entity", Format: pkgf("e_%s_entity.go"), }, { Name: "entity/fields", Format: pkgf("e_%s_fields.go"), }, { Name: "entity/create", Format: pkgf("e_%s_create.go"), }, { Name: "entity/delete", Format: pkgf("e_%s_delete.go"), }, { Name: "entity/query", Format: pkgf("e_%s_query.go"), }, { Name: "entity/update", Format: pkgf("e_%s_update.go"), }, { Name: "entity/meta", Format: func(t template.TemplatePathFormat) string { return fmt.Sprintf("%[1]s/%[1]s.go", t.Dir()) }, }, { Name: "entity/where", Format: pkgf("%s/where.go"), }, { Name: "entity/order", Format: pkgf("%s/order.go"), }, { Name: "rel/entity", Format: pkgf("e_%s_rel.go"), }, } // InstanceTemplates 内部使用的模版 InstanceTemplates []GenericTemplate = []GenericTemplate{ { Name: "internal/core", Format: "internal/core.go", }, { Name: "rel/rels", Format: "rels.go", }, } // ExtraCodesTemplates 额外的代码模版 ExtraCodesTemplates []GenericTemplate = []GenericTemplate{ { Name: "extraCode", Format: "extra_codes.go", }, } // SqlTemplates sql文件的模版 SqlTemplates []GenericTemplate = []GenericTemplate{} )
View Source
var FuncMap = template.FuncMap{
"joinFieldAttrNames": joinFieldAttrNames,
"joinFieldPrimaies": joinFieldPrimaies,
"joinRequiredFields": joinRequiredFields,
"joinFieldsString": joinFieldsString,
"getPrimaryField": getPrimaryField,
"snakeCaseToLowerCamelCase": snakeCaseToLowerCamelCase,
"getRequiredFields": getRequiredFields,
"getEntityRel": getEntityRel,
"getEntityRelDirection": getEntityRelDirection,
"getIndexGroups": getIndexGroups,
"getIndexMethod": getIndexMethod,
"stringFirstField": stringFirstField,
"stringJoinIndexFields": stringJoinIndexFields,
"stringJoinIndexColumns": stringJoinIndexColumns,
"stringJoinQuotedColumns": stringJoinQuotedColumns,
"getUniqueGroups": getUniqueGroups,
"getUniqueFieldGroups": getUniqueFieldGroups,
"removeArrayBrackets": removeArrayBrackets,
}
FuncMap gen中模版需要用到的函数的映射
Functions ¶
func PrepareEnv ¶
PrepareEnv 检查是否有runtime.go,如果存在检查导入部分,避免循环导入 如果不存在则创建runtime.go文件 如果存在导入部分则在文件开头添加 "// +build tools\n" 这样在生成代码时,runtime.go文件不会被编译到最终的二进制文件中
Params:
- c: 代码生成的配置。
Returns:
0: 无操作函数。 1: 错误信息。
Types ¶
type Builder ¶
type Builder struct {
*Config
// Nodes是Schema中的database info的集合。
Nodes []*DatabaseInfo
EntityMap load.EntityMap
}
Builder 用于生成资源文件的构建器。
func NewBuilder ¶
NewBuilder 根据提供的Schema,初始化一个生成器。
Params:
- c: 代码生成的配置。
- entities: 从entity package中加载的所有entity。
Returns:
0: 生成器。 1: 错误信息。
type Config ¶
type Config struct {
// PackageName 保存生成的代码的包名。
PackageName string
// Target 保存生成的代码的目标路径。
//
// 默认情况下,代码生成器将生成代码到和Package上一级目录。
// 例如,"tentity generate ./entity/schema",则生成的代码将放在"./entity"目录下。
Target string
// BuildFlags 保存生成代码时传递给go build的标志。
BuildFlags []string
// Package 定义了上面的Target目录下,Go package的路径,比如“package gen”,则
// Package为"gen"
//
// "generate project/entity" 或者在项目根目录下 "generate ./entity",
// 然后会获得执行路径下文件的Go package作为Package
Package string
// Header 它允许用户为生成的文件提供一个可选的头部签名。
// 默认情况下,这个头部签名遵循标准的 'go generate' 格式,
// 即 '// Code generated by ent, DO NOT EDIT.'
Header string
// Hooks 可选的hook列表,用于代码生成前、后在表上执行
Hooks []Hook
// Templates 外部传入的template
Templates []ExtTemplate
// ExtraCodes 保存额外的代码,它将被添加到生成的代码中
ExtraCodes []string
ExtTemplatesTargetPaths []string
}
Config 代码生成的全局配置,并在所有生成的节点之间共享
type DatabaseInfo ¶
DatabaseInfo 表示一个Builder中的一个数据库节点的信息
func NewDatabaseInfo ¶
func NewDatabaseInfo(c *Config, database *load.Database) (*DatabaseInfo, error)
NewDatabaseInfo 初始化一个DatabaseInfo
Params:
- c: 代码生成的配置。
- database: 从entity package中加载的数据库。
Returns:
0: 数据库信息。 1: 错误信息。
type EntityInfo ¶
EntityInfo 表示一个Builder中的一个实体节点的信息
func NewEntityInfo ¶
NewEntityInfo 初始化一个EntityInfo
Params:
- c: 代码生成的配置。
- entity: 从entity package中加载的实体。
Returns:
0: 实体信息。 1: 错误信息。
type ExtTemplate ¶
type ExtTemplate struct {
Tmpl *template.Template // 模板
TargetPaths []string // 目标路径,如果为空,则使用entity生成的路径为目标路径
}
ExtTemplate 用于外部传入的template
type FieldInfo ¶
func NewFieldInfo ¶
type GenerateFunc ¶
GenerateFunc 符合Generator接口的函数。
func (GenerateFunc) Generate ¶
func (f GenerateFunc) Generate(t *Builder) error
Generate 生成代码。
Params:
- f: 生成函数。
type GenericTemplate ¶
GenericTemplate 是生成代码中给每个InstanceTemplate使用的通用部分
Click to show internal directories.
Click to hide internal directories.