Documentation
¶
Overview ¶
Package models generates model source files from database schema metadata.
Index ¶
- type BunModelConfig
- type Config
- type FactoryField
- type GeneratedFactory
- type GeneratedField
- type GeneratedModel
- type Generator
- func (g *Generator) Build(cat *catalog.Catalog, config Config) (*GeneratedModel, error)
- func (g *Generator) BuildCatalogFromMigrations(tableName string, migrationDirs []string) (*catalog.Catalog, error)
- func (g *Generator) BuildFactory(cat *catalog.Catalog, config Config, genModel *GeneratedModel) (*GeneratedFactory, error)
- func (g *Generator) GenerateFactoryFile(factory *GeneratedFactory, templateStr string) (string, error)
- func (g *Generator) GenerateModel(cat *catalog.Catalog, resourceName string, pluralName string, modelPath string, ...) error
- func (g *Generator) GenerateModelFile(model *GeneratedModel, templateStr string) (string, error)
- func (g *Generator) WriteFactoryFile(factory *GeneratedFactory, outputDir string) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BunModelConfig ¶ added in v1.0.0
type BunModelConfig struct {
ResourceName string
TableName string
ModulePath string
PackageName string
UseSoftDelete bool // If true, use deleted_at for soft deletes
}
BunModelConfig holds configuration for bun model generation
type Config ¶
type Config struct {
TableName string
ResourceName string
PackageName string
DatabaseType string
ModulePath string
NullType string
CustomTypes []types.TypeOverride
PrimaryKeyColumn string // Override PK column name (empty = auto-detect)
GenerateWithoutPK bool // Force generation without PK handling
}
Config controls model generation for a database table.
type FactoryField ¶ added in v1.0.0
type FactoryField struct {
Name string
ArgumentName string
Type string
GoZero string
DefaultValue string
OptionName string
IsFK bool
IsTimestamp bool
IsID bool
IsAutoManaged bool
}
FactoryField represents a field in a factory
type GeneratedFactory ¶ added in v1.0.0
type GeneratedFactory struct {
ModelName string
EntityName string // ServerEntity (resource name + "Entity")
NamespaceVar string // Server (exported, package-scope)
Package string
Fields []FactoryField
ModulePath string
StandardImports []string
ExternalImports []string
HasCreateFunction bool
HasForeignKeys bool // True if there are 1+ FKs
ForeignKeyFields []FactoryField // All FK fields
IDType string // "uuid.UUID", "int32", "int64", "string"
IDGoFieldName string // Go field name for the primary key (e.g., "ID")
IsAutoIncrementID bool // True for serial/bigserial
HasCreatedAt bool
HasUpdatedAt bool
}
GeneratedFactory represents a factory for a model
type GeneratedField ¶
type GeneratedField struct {
Name string
Type string
Comment string
Package string
BunTag string // Full bun struct tag (e.g., `bun:"id,pk,type:uuid"`)
IsForeignKey bool
IsNullable bool
IsPrimaryKey bool
}
GeneratedField describes one model field derived from a database column.
type GeneratedModel ¶
type GeneratedModel struct {
Name string
PluralName string // The pluralized form of Name for function names (respects --table-name override)
Package string
Fields []GeneratedField
StandardImports []string
ExternalImports []string
Imports []string
TableName string
TableNameOverride string
TableNameOverridden bool
ModulePath string
DatabaseType string
IDType string // "uuid.UUID", "int32", "int64", "string"
IDGoType string // Same as IDType (for template clarity)
IsAutoIncrementID bool // True for serial/bigserial
IDFieldName string // SQL column name of PK (e.g., "id", "user_id")
IDGoFieldName string // Go struct field name of PK (e.g., "ID", "UserID")
HasPrimaryKey bool // Whether the table has any primary key
EntityName string // ServerEntity (resource name + "Entity")
NamespaceVar string // Server (exported, package-scope)
NamespaceType string // server (unexported receiver type)
ReceiverName string // s (for the namespace methods)
HasCreatedAt bool
HasUpdatedAt bool
}
GeneratedModel contains the template data for a generated model file.
type Generator ¶
type Generator struct {
// contains filtered or unexported fields
}
Generator builds model template data and writes model files.
func NewGenerator ¶
NewGenerator creates a new generator.
func (*Generator) BuildCatalogFromMigrations ¶ added in v1.0.0
func (g *Generator) BuildCatalogFromMigrations(tableName string, migrationDirs []string) (*catalog.Catalog, error)
BuildCatalogFromMigrations builds a catalog from migration files
func (*Generator) BuildFactory ¶ added in v1.0.0
func (g *Generator) BuildFactory(cat *catalog.Catalog, config Config, genModel *GeneratedModel) (*GeneratedFactory, error)
BuildFactory generates factory metadata from a model
func (*Generator) GenerateFactoryFile ¶ added in v1.0.0
func (g *Generator) GenerateFactoryFile(factory *GeneratedFactory, templateStr string) (string, error)
GenerateFactoryFile renders a factory file from a template
func (*Generator) GenerateModel ¶
func (g *Generator) GenerateModel( cat *catalog.Catalog, resourceName string, pluralName string, modelPath string, modulePath string, tableNameOverride string, nullType string, primaryKeyColumn string, generateWithoutPK bool, ) error
GenerateModel renders and writes a model file for a resource.
func (*Generator) GenerateModelFile ¶
func (g *Generator) GenerateModelFile(model *GeneratedModel, templateStr string) (string, error)
GenerateModelFile renders model template data into Go source.
func (*Generator) WriteFactoryFile ¶ added in v1.0.0
func (g *Generator) WriteFactoryFile(factory *GeneratedFactory, outputDir string) error
WriteFactoryFile writes a factory file to disk