Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var DefaultTimeTypes = []TimeTypePattern{ {Pattern: "time.Time", IsNumeric: true}, {Pattern: "datatypes.Date", IsNumeric: true}, {Pattern: "datatypes.Time", IsNumeric: true}, {Pattern: "datatypes.DateTime", IsNumeric: true}, {Pattern: "sql.NullTime", IsNumeric: true}, {Pattern: "pq.NullTime", IsNumeric: true}, }
DefaultTimeTypes contains the built-in time type patterns.
Functions ¶
This section is empty.
Types ¶
type BaseInfo ¶
type BaseInfo struct {
Name string // Go field name
DBName string // Database column name
TypeName string // Go type name
// Type classification flags
IsStruct bool // Is a struct type
IsNumeric bool // Is a numeric type (int, float, etc.)
IsTime bool // Is a time-related type
IsString bool // Is a string type
IsSlice bool // Is a slice type
IsMap bool // Is a map type
}
BaseInfo contains basic information about a struct field.
type Field ¶
type Field interface {
Name() string // Go field name
Type() types.Type // Go type information
Tag() reflect.StructTag // Struct tags (db:"", json:"", etc.)
}
Field interface defines the contract for struct field information. Provides access to field metadata needed for code generation.
type Info ¶
type Info struct {
BaseInfo // Embedded base information
// Enhanced type flags
IsPointer bool // Is a pointer type
IsGeneric bool // Has generic type parameters
// contains filtered or unexported fields
}
Info contains comprehensive field information including type metadata.
func (Info) GetPointed ¶
GetPointed returns the pointed-to type for pointer fields. Returns zero value if field is not a pointer.
func (Info) GetTypeName ¶
GetTypeName returns the full type name including generics and pointer information.
type InfoGenerator ¶
type InfoGenerator struct {
// contains filtered or unexported fields
}
InfoGenerator generates field information from Go types. Contains package context for proper type name resolution and configurable time type detection.
func NewInfoGenerator ¶
func NewInfoGenerator(pkg *types.Package) *InfoGenerator
NewInfoGenerator creates a new InfoGenerator with default time type patterns.
func NewInfoGeneratorWithTimeTypes ¶
func NewInfoGeneratorWithTimeTypes(pkg *types.Package, timeTypes []TimeTypePattern) *InfoGenerator
NewInfoGeneratorWithTimeTypes creates a new InfoGenerator with custom time type patterns.
func (*InfoGenerator) AddTimeType ¶
func (g *InfoGenerator) AddTimeType(pattern string, isNumeric bool)
AddTimeType adds a custom time type pattern to the generator.
func (InfoGenerator) GenFieldInfo ¶
func (g InfoGenerator) GenFieldInfo(f Field) *Info
GenFieldInfo generates field information for code generation. Returns nil if the field should be skipped (e.g., tagged with "-").
type TimeTypePattern ¶
type TimeTypePattern struct {
Pattern string // Type name pattern (exact match)
IsNumeric bool // Whether this time type behaves like numeric for filtering
}
TimeTypePattern represents a pattern for detecting time-related types.