Documentation
¶
Index ¶
- func DefaultOutputName(packageName string) string
- func DiscoverPackages(pattern string) ([]string, error)
- func Generate(spec GenerateSpec) ([]byte, error)
- func GenerateWithRenderer(spec GenerateSpec, renderer TemplateRenderer) ([]byte, error)
- func ParseFieldTag(raw string) (fieldTag, error)
- func Render(model *PackageModel) ([]byte, error)
- func ReverseEngineerWithRenderer(ctx context.Context, introspector SchemaIntrospector, spec ReverseEngineerSpec, ...) ([]byte, error)
- func ValidateSchemaDrift(ctx context.Context, introspector SchemaIntrospector, registry *orm.Registry, ...) error
- type ColumnModel
- type ConfiguredGenerateSpec
- type EntityModel
- type GenerateConfig
- type GeneratePackageSpec
- type GenerateSpec
- type GeneratedPackage
- type MapperModel
- type MariaDBSQLSchemaDialect
- type MethodModel
- type MySQLSQLSchemaDialect
- type OracleSQLSchemaDialect
- type PackageModel
- type ParamModel
- type PostgresSQLSchemaDialect
- type ReverseEngineerSpec
- type SQLQueryer
- type SQLSchemaDialect
- type SQLSchemaIntrospector
- type SQLSchemaQuery
- type SQLServerSQLSchemaDialect
- type SQLiteSQLSchemaDialect
- type SchemaColumn
- type SchemaColumnFilter
- type SchemaColumnFilterFunc
- type SchemaColumnOverride
- type SchemaDriftIssue
- type SchemaDriftKind
- type SchemaDriftOption
- type SchemaDriftReport
- type SchemaIntrospectionRequest
- type SchemaIntrospector
- type SchemaModel
- type SchemaNamingStrategy
- type SchemaNamingStrategyFuncs
- type SchemaQueryer
- type SchemaQueryerFunc
- type SchemaRows
- type SchemaTable
- type SchemaTypeMapper
- type SchemaTypeMapperFunc
- type StatementModel
- type TemplateRenderer
- type TemplateRendererFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultOutputName ¶
DefaultOutputName 返回包级 ORM 生成文件默认名称。
func DiscoverPackages ¶
DiscoverPackages 查找 pattern 指向的可扫描 Go package 目录。
func Generate ¶
func Generate(spec GenerateSpec) ([]byte, error)
Generate 扫描单个 Go package 并生成 ORM 源码。
func GenerateWithRenderer ¶
func GenerateWithRenderer(spec GenerateSpec, renderer TemplateRenderer) ([]byte, error)
GenerateWithRenderer 使用自定义模板渲染器生成源码。
func ParseFieldTag ¶
ParseFieldTag 解析 goark-orm struct tag 的 value。
func ReverseEngineerWithRenderer ¶
func ReverseEngineerWithRenderer(ctx context.Context, introspector SchemaIntrospector, spec ReverseEngineerSpec, renderer TemplateRenderer) ([]byte, error)
ReverseEngineerWithRenderer 读取 schema 并使用指定模板渲染。
func ValidateSchemaDrift ¶
func ValidateSchemaDrift(ctx context.Context, introspector SchemaIntrospector, registry *orm.Registry, request SchemaIntrospectionRequest, options ...SchemaDriftOption) error
ValidateSchemaDrift 在发现漂移时返回 SchemaDriftReport 作为错误值。
Types ¶
type ColumnModel ¶
type ColumnModel struct {
FieldName string
FieldType string
ColumnName string
KeyColumn string
PrimaryKey bool
AutoIncrement bool
IDType orm.IDType
Nullable *bool
Size *int
NumericScale *int
DBType string
DefaultValue string
TypeHandler string
Condition string
SelectDisabled bool
InsertStrategy orm.FieldStrategy
UpdateStrategy orm.FieldStrategy
WhereStrategy orm.FieldStrategy
Version bool
SoftDelete bool
CreatedAt bool
UpdatedAt bool
Fill orm.FieldFill
Transient bool
}
ColumnModel 描述实体字段映射。
type ConfiguredGenerateSpec ¶
type ConfiguredGenerateSpec struct {
Spec GenerateSpec
Output string
}
ConfiguredGenerateSpec 表示已经完成默认值和路径解析的生成目标。
type EntityModel ¶
type EntityModel struct {
TypeName string
Table string
Columns []ColumnModel
DeclareStruct bool
}
EntityModel 描述一个实体类型。
type GenerateConfig ¶
type GenerateConfig struct {
Dir string `json:"dir,omitempty"`
PackageName string `json:"package,omitempty"`
Output string `json:"output,omitempty"`
DatabaseID string `json:"databaseId,omitempty"`
TypeHandlers []string `json:"typeHandlers,omitempty"`
Packages []GeneratePackageSpec `json:"packages,omitempty"`
}
GenerateConfig 描述可提交的 ORM 生成器配置文件。
func LoadGenerateConfig ¶
func LoadGenerateConfig(path string) (GenerateConfig, error)
LoadGenerateConfig 读取 JSON 生成器配置文件。
func (GenerateConfig) Resolve ¶
func (c GenerateConfig) Resolve(baseDir string) ([]ConfiguredGenerateSpec, error)
Resolve 解析配置默认值和相对路径。
type GeneratePackageSpec ¶
type GeneratePackageSpec struct {
Dir string `json:"dir,omitempty"`
PackageName string `json:"package,omitempty"`
Output string `json:"output,omitempty"`
DatabaseID string `json:"databaseId,omitempty"`
TypeHandlers []string `json:"typeHandlers,omitempty"`
}
GeneratePackageSpec 描述配置文件中的单个 package 生成目标。
type GenerateSpec ¶
GenerateSpec 描述 ORM 代码生成输入。
type GeneratedPackage ¶
GeneratedPackage 表示一个已生成源码的包。
type MapperModel ¶
type MapperModel struct {
TypeName string
Namespace string
XML string
Cache orm.CacheMeta
ImplTypeName string
Methods []MethodModel
ResultMaps []orm.ResultMapMeta
Statements []StatementModel
}
MapperModel 描述 Mapper 接口和语句。
type MariaDBSQLSchemaDialect ¶
type MariaDBSQLSchemaDialect struct {
MySQLSQLSchemaDialect
}
MariaDBSQLSchemaDialect 生成 MariaDB information_schema 查询。
type MethodModel ¶
type MethodModel struct {
Name string
Params []ParamModel
ResultType string
Command orm.StatementCommand
Statement StatementModel
}
MethodModel 描述 Mapper 方法。
type MySQLSQLSchemaDialect ¶
type MySQLSQLSchemaDialect struct{}
MySQLSQLSchemaDialect 生成 MySQL information_schema 查询。
func (MySQLSQLSchemaDialect) ColumnsQuery ¶
func (MySQLSQLSchemaDialect) ColumnsQuery(request SchemaIntrospectionRequest, table SchemaTable) (SQLSchemaQuery, error)
ColumnsQuery 返回 MySQL 列查询。
func (MySQLSQLSchemaDialect) TablesQuery ¶
func (MySQLSQLSchemaDialect) TablesQuery(request SchemaIntrospectionRequest) (SQLSchemaQuery, error)
TablesQuery 返回 MySQL 表查询。
type OracleSQLSchemaDialect ¶
type OracleSQLSchemaDialect struct{}
OracleSQLSchemaDialect 生成 Oracle all_* 元数据查询。
func (OracleSQLSchemaDialect) ColumnsQuery ¶
func (OracleSQLSchemaDialect) ColumnsQuery(request SchemaIntrospectionRequest, table SchemaTable) (SQLSchemaQuery, error)
ColumnsQuery 返回 Oracle 列查询。
func (OracleSQLSchemaDialect) TablesQuery ¶
func (OracleSQLSchemaDialect) TablesQuery(request SchemaIntrospectionRequest) (SQLSchemaQuery, error)
TablesQuery 返回 Oracle 表查询。
type PackageModel ¶
type PackageModel struct {
Dir string
PackageName string
Entities []EntityModel
Mappers []MapperModel
}
PackageModel 是扫描后的包级 ORM 模型。
func BuildPackageModelFromSchema ¶
func BuildPackageModelFromSchema(spec ReverseEngineerSpec, schema SchemaModel) (*PackageModel, error)
BuildPackageModelFromSchema 把 schema 中间模型转换为 ORM 包模型。
func ReverseEngineer ¶
func ReverseEngineer(ctx context.Context, introspector SchemaIntrospector, spec ReverseEngineerSpec) (*PackageModel, error)
ReverseEngineer 读取 schema 并转换为 PackageModel,调用方可继续使用 Render 或自定义模板。
func ScanPackage ¶
func ScanPackage(spec GenerateSpec) (*PackageModel, error)
ScanPackage 扫描单个 Go package 的 ORM 元数据。
type PostgresSQLSchemaDialect ¶
type PostgresSQLSchemaDialect struct{}
PostgresSQLSchemaDialect 生成 PostgreSQL information_schema 查询。
func (PostgresSQLSchemaDialect) ColumnsQuery ¶
func (PostgresSQLSchemaDialect) ColumnsQuery(request SchemaIntrospectionRequest, table SchemaTable) (SQLSchemaQuery, error)
ColumnsQuery 返回 PostgreSQL 列查询。
func (PostgresSQLSchemaDialect) TablesQuery ¶
func (PostgresSQLSchemaDialect) TablesQuery(request SchemaIntrospectionRequest) (SQLSchemaQuery, error)
TablesQuery 返回 PostgreSQL 表查询。
type ReverseEngineerSpec ¶
type ReverseEngineerSpec struct {
PackageName string
DatabaseID string
Schema string
Tables []string
TablePrefix string
TypeMapper SchemaTypeMapper
NamingStrategy SchemaNamingStrategy
IgnoreColumns []string
ColumnFilter SchemaColumnFilter
ColumnOverrides map[string]SchemaColumnOverride
OmitEntityStruct bool
}
ReverseEngineerSpec 描述 schema 到 ORM 生成模型的转换规则。
type SQLQueryer ¶
type SQLQueryer interface {
QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error)
}
SQLQueryer 是 *sql.DB 和 *sql.Tx 的最小查询接口。
type SQLSchemaDialect ¶
type SQLSchemaDialect interface {
TablesQuery(request SchemaIntrospectionRequest) (SQLSchemaQuery, error)
ColumnsQuery(request SchemaIntrospectionRequest, table SchemaTable) (SQLSchemaQuery, error)
}
SQLSchemaDialect 生成不同数据库的 schema 查询 SQL。
func NewSQLSchemaDialect ¶
func NewSQLSchemaDialect(dbType orm.DbType) (SQLSchemaDialect, error)
NewSQLSchemaDialect 根据数据库类型创建 schema SQL 方言。
type SQLSchemaIntrospector ¶
type SQLSchemaIntrospector struct {
// contains filtered or unexported fields
}
SQLSchemaIntrospector 使用 database/sql 查询真实数据库结构。
func NewSQLSchemaIntrospector ¶
func NewSQLSchemaIntrospector(queryer SQLQueryer, dialect SQLSchemaDialect) (*SQLSchemaIntrospector, error)
NewSQLSchemaIntrospector 创建基于 database/sql 的 schema 读取器。
func NewSQLSchemaIntrospectorWithQueryer ¶
func NewSQLSchemaIntrospectorWithQueryer(queryer SchemaQueryer, dialect SQLSchemaDialect) (*SQLSchemaIntrospector, error)
NewSQLSchemaIntrospectorWithQueryer 使用自定义查询器创建 schema 读取器。
func (*SQLSchemaIntrospector) IntrospectSchema ¶
func (i *SQLSchemaIntrospector) IntrospectSchema(ctx context.Context, request SchemaIntrospectionRequest) (SchemaModel, error)
IntrospectSchema 读取表和列元数据,并转换为统一 schema 中间模型。
type SQLSchemaQuery ¶
SQLSchemaQuery 描述一次 schema SQL 查询。
type SQLServerSQLSchemaDialect ¶
type SQLServerSQLSchemaDialect struct{}
SQLServerSQLSchemaDialect 生成 SQL Server sys schema 查询。
func (SQLServerSQLSchemaDialect) ColumnsQuery ¶
func (SQLServerSQLSchemaDialect) ColumnsQuery(request SchemaIntrospectionRequest, table SchemaTable) (SQLSchemaQuery, error)
ColumnsQuery 返回 SQL Server 列查询。
func (SQLServerSQLSchemaDialect) TablesQuery ¶
func (SQLServerSQLSchemaDialect) TablesQuery(request SchemaIntrospectionRequest) (SQLSchemaQuery, error)
TablesQuery 返回 SQL Server 表查询。
type SQLiteSQLSchemaDialect ¶
type SQLiteSQLSchemaDialect struct{}
SQLiteSQLSchemaDialect 生成 SQLite schema 查询。
func (SQLiteSQLSchemaDialect) ColumnsQuery ¶
func (SQLiteSQLSchemaDialect) ColumnsQuery(_ SchemaIntrospectionRequest, table SchemaTable) (SQLSchemaQuery, error)
ColumnsQuery 返回 SQLite 列查询。
func (SQLiteSQLSchemaDialect) TablesQuery ¶
func (SQLiteSQLSchemaDialect) TablesQuery(SchemaIntrospectionRequest) (SQLSchemaQuery, error)
TablesQuery 返回 SQLite 表查询。
type SchemaColumn ¶
type SchemaColumn struct {
Name string
FieldName string
DBType string
GoType string
PrimaryKey bool
AutoIncrement bool
Nullable *bool
Size *int
NumericScale *int
DefaultValue string
TypeHandler string
}
SchemaColumn 描述数据库列到实体字段的候选映射。
type SchemaColumnFilter ¶
type SchemaColumnFilter interface {
IncludeColumn(table SchemaTable, column SchemaColumn) bool
}
SchemaColumnFilter 判断反向工程是否保留指定列。
type SchemaColumnFilterFunc ¶
type SchemaColumnFilterFunc func(table SchemaTable, column SchemaColumn) bool
SchemaColumnFilterFunc 将函数适配为列过滤器。
func (SchemaColumnFilterFunc) IncludeColumn ¶
func (f SchemaColumnFilterFunc) IncludeColumn(table SchemaTable, column SchemaColumn) bool
IncludeColumn 执行函数式列过滤。
type SchemaColumnOverride ¶
type SchemaColumnOverride struct {
FieldName string
GoType string
TypeHandler string
Condition string
SelectDisabled *bool
IDType orm.IDType
InsertStrategy orm.FieldStrategy
UpdateStrategy orm.FieldStrategy
WhereStrategy orm.FieldStrategy
Version *bool
SoftDelete *bool
CreatedAt *bool
UpdatedAt *bool
Fill orm.FieldFill
}
SchemaColumnOverride 覆盖反向工程阶段单列生成策略。
type SchemaDriftIssue ¶
type SchemaDriftIssue struct {
Kind SchemaDriftKind
Entity string
Table string
Field string
Column string
Expected string
Actual string
}
SchemaDriftIssue 描述一个实体元数据和真实数据库 schema 的差异。
type SchemaDriftKind ¶
type SchemaDriftKind string
SchemaDriftKind 描述 schema 漂移问题类型。
const ( // SchemaDriftMissingTable 表示实体表在数据库中不存在。 SchemaDriftMissingTable SchemaDriftKind = "missing_table" // SchemaDriftMissingColumn 表示实体列在数据库中不存在。 SchemaDriftMissingColumn SchemaDriftKind = "missing_column" // SchemaDriftExtraColumn 表示数据库列未被实体元数据覆盖。 SchemaDriftExtraColumn SchemaDriftKind = "extra_column" // SchemaDriftPrimaryKeyMismatch 表示主键标记与数据库不一致。 SchemaDriftPrimaryKeyMismatch SchemaDriftKind = "primary_key_mismatch" // SchemaDriftAutoIncrementMismatch 表示自增标记与数据库不一致。 SchemaDriftAutoIncrementMismatch SchemaDriftKind = "auto_increment_mismatch" // SchemaDriftNullableMismatch 表示空值约束与数据库不一致。 SchemaDriftNullableMismatch SchemaDriftKind = "nullable_mismatch" // SchemaDriftSizeMismatch 表示字符长度与数据库不一致。 SchemaDriftSizeMismatch SchemaDriftKind = "size_mismatch" // SchemaDriftNumericScaleMismatch 表示数值小数位与数据库不一致。 SchemaDriftNumericScaleMismatch SchemaDriftKind = "numeric_scale_mismatch" // SchemaDriftTypeMismatch 表示数据库类型与实体元数据不一致。 SchemaDriftTypeMismatch SchemaDriftKind = "type_mismatch" )
type SchemaDriftOption ¶
type SchemaDriftOption func(*schemaDriftOptions)
SchemaDriftOption 调整 schema 漂移检测行为。
func WithSchemaDriftExtraColumns ¶
func WithSchemaDriftExtraColumns(enabled bool) SchemaDriftOption
WithSchemaDriftExtraColumns 控制是否报告数据库中存在但实体未映射的列。
type SchemaDriftReport ¶
type SchemaDriftReport struct {
Issues []SchemaDriftIssue
}
SchemaDriftReport 汇总一次 schema 漂移检测结果。
func CompareSchemaDrift ¶
func CompareSchemaDrift(registry *orm.Registry, schema SchemaModel, options ...SchemaDriftOption) (SchemaDriftReport, error)
CompareSchemaDrift 将已读取的 schema 与运行时实体元数据比对。
func DetectSchemaDrift ¶
func DetectSchemaDrift(ctx context.Context, introspector SchemaIntrospector, registry *orm.Registry, request SchemaIntrospectionRequest, options ...SchemaDriftOption) (SchemaDriftReport, error)
DetectSchemaDrift 读取真实 schema 并与运行时实体元数据比对。
func (SchemaDriftReport) Error ¶
func (r SchemaDriftReport) Error() string
Error 返回适合测试或 CLI 输出的简短漂移摘要。
func (SchemaDriftReport) HasDrift ¶
func (r SchemaDriftReport) HasDrift() bool
HasDrift 返回是否发现 schema 漂移。
type SchemaIntrospectionRequest ¶
SchemaIntrospectionRequest 描述一次 schema 读取请求。
type SchemaIntrospector ¶
type SchemaIntrospector interface {
IntrospectSchema(ctx context.Context, request SchemaIntrospectionRequest) (SchemaModel, error)
}
SchemaIntrospector 由数据库适配层实现,core 不直接连接数据库。
type SchemaNamingStrategy ¶
type SchemaNamingStrategy interface {
EntityTypeName(table SchemaTable, tablePrefix string) (string, error)
FieldName(table SchemaTable, column SchemaColumn) (string, error)
}
SchemaNamingStrategy 将数据库命名转换为 Go 导出标识符。
func DefaultSchemaNamingStrategy ¶
func DefaultSchemaNamingStrategy() SchemaNamingStrategy
DefaultSchemaNamingStrategy 返回内置下划线转 PascalCase 的命名策略。
type SchemaNamingStrategyFuncs ¶
type SchemaNamingStrategyFuncs struct {
EntityTypeNameFunc func(SchemaTable, string) (string, error)
FieldNameFunc func(SchemaTable, SchemaColumn) (string, error)
}
SchemaNamingStrategyFuncs 使用函数组合 schema 命名策略。
func (SchemaNamingStrategyFuncs) EntityTypeName ¶
func (s SchemaNamingStrategyFuncs) EntityTypeName(table SchemaTable, tablePrefix string) (string, error)
EntityTypeName 返回数据库表对应的 Go 实体类型名。
func (SchemaNamingStrategyFuncs) FieldName ¶
func (s SchemaNamingStrategyFuncs) FieldName(table SchemaTable, column SchemaColumn) (string, error)
FieldName 返回数据库列对应的 Go 字段名。
type SchemaQueryer ¶
type SchemaQueryer interface {
QuerySchema(ctx context.Context, query string, args ...any) (SchemaRows, error)
}
SchemaQueryer 适配真实数据库或测试替身的 schema 查询能力。
type SchemaQueryerFunc ¶
SchemaQueryerFunc 将函数适配为 SchemaQueryer。
func (SchemaQueryerFunc) QuerySchema ¶
func (f SchemaQueryerFunc) QuerySchema(ctx context.Context, query string, args ...any) (SchemaRows, error)
QuerySchema 执行函数式 schema 查询器。
type SchemaRows ¶
SchemaRows 描述 schema 查询返回的最小行集接口。
type SchemaTable ¶
type SchemaTable struct {
Name string
TypeName string
Columns []SchemaColumn
}
SchemaTable 描述一张数据库表。
type SchemaTypeMapper ¶
type SchemaTypeMapper interface {
GoType(column SchemaColumn) (string, error)
}
SchemaTypeMapper 把数据库类型映射为 Go 字段类型。
func DefaultSchemaTypeMapper ¶
func DefaultSchemaTypeMapper() SchemaTypeMapper
DefaultSchemaTypeMapper 返回内置保守类型映射器。
type SchemaTypeMapperFunc ¶
type SchemaTypeMapperFunc func(column SchemaColumn) (string, error)
SchemaTypeMapperFunc 将函数适配为 SchemaTypeMapper。
func (SchemaTypeMapperFunc) GoType ¶
func (f SchemaTypeMapperFunc) GoType(column SchemaColumn) (string, error)
GoType 执行函数式类型映射器。
type StatementModel ¶
type StatementModel struct {
ID string
Namespace string
FullName string
Command orm.StatementCommand
StatementType orm.StatementType
Source orm.StatementSource
SQL string
Provider string
ResultMap string
ResultType string
ParameterType string
DatabaseID string
UseGeneratedKeys bool
KeyProperty string
Options orm.StatementOptions
SelectKey orm.SelectKeyMeta
UseCache orm.StatementCachePolicy
FlushCache orm.StatementCachePolicy
Parameters []string
ParameterModes []orm.ParameterMeta
ResultSets []orm.ResultSetMeta
DynamicSQL []orm.DynamicSQLNode
InterceptorIgnores []string
}
StatementModel 描述生成器阶段的语句元数据。
type TemplateRenderer ¶
type TemplateRenderer interface {
RenderPackage(model *PackageModel) ([]byte, error)
}
TemplateRenderer 渲染已经扫描或反向工程得到的包模型。
func DefaultTemplateRenderer ¶
func DefaultTemplateRenderer() TemplateRenderer
DefaultTemplateRenderer 返回内置 Go 源码模板渲染器。
type TemplateRendererFunc ¶
type TemplateRendererFunc func(model *PackageModel) ([]byte, error)
TemplateRendererFunc 将函数适配为 TemplateRenderer。
func (TemplateRendererFunc) RenderPackage ¶
func (f TemplateRendererFunc) RenderPackage(model *PackageModel) ([]byte, error)
RenderPackage 执行函数式模板渲染器。