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{} )
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 { // 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 // IDType 指定代码生成中id字段的类型 // 默认情况下,id字段的类型是int或者string IDType *field.TypeInfo // Templates 外部传入的template Templates []*template.Template // ExtraCodes 保存额外的代码,它将被添加到生成的代码中 ExtraCodes []string }
Config 代码生成的全局配置,并在所有生成的节点之间共享
type DatabaseInfo ¶ added in v0.5.0
DatabaseInfo 表示一个Builder中的一个数据库节点的信息
func NewDatabaseInfo ¶ added in v0.5.0
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 FieldInfo ¶ added in v0.7.0
func NewFieldInfo ¶ added in v0.7.0
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.