Documentation ¶
Index ¶
- Variables
- func NormalizeType(val string) string
- func Run[T, C, I any](ctx context.Context, s *State[C], driver drivers.Interface[T, C, I], ...) error
- type Config
- type Constraints
- type DBInfoPlugin
- type Importer
- type Inflections
- type Output
- type Plugin
- type Relationships
- type Replace
- type State
- type StatePlugin
- type TemplateData
- type TemplateDataPlugin
Constants ¶
This section is empty.
Variables ¶
View Source
var (
ModelTemplates, _ = fs.Sub(templates, "templates/models")
FactoryTemplates, _ = fs.Sub(templates, "templates/factory")
MySQLModelTemplates, _ = fs.Sub(mysqlTemplates, "bobgen-mysql/templates/models")
PSQLModelTemplates, _ = fs.Sub(psqlTemplates, "bobgen-psql/templates/models")
SQLiteModelTemplates, _ = fs.Sub(sqliteTemplates, "bobgen-sqlite/templates/models")
)
Functions ¶
func NormalizeType ¶ added in v0.28.0
Types ¶
type Config ¶
type Config[ConstraintExtra any] struct { // Struct tags to generate Tags []string `yaml:"tags"` // Disable generating factories for models NoFactory bool `yaml:"no_factory"` // Disable generating go test files NoTests bool `yaml:"no_tests"` // Disable back referencing in the loaded relationship structs NoBackReferencing bool `yaml:"no_back_referencing"` // Delete the output folder (rm -rf) before generation to ensure sanity Wipe bool `yaml:"wipe"` // Decides the casing for go structure tag names. camel, title or snake (default snake) StructTagCasing string `yaml:"struct_tag_casing"` // Relationship struct tag name RelationTag string `yaml:"relation_tag"` // List of column names that should have tags values set to '-' (ignored during parsing) TagIgnore []string `yaml:"tag_ignore"` Types drivers.Types `yaml:"types"` // register custom types Aliases drivers.Aliases `yaml:"aliases"` // customize aliases Constraints Constraints[ConstraintExtra] `yaml:"constraints"` // define additional constraints Relationships Relationships `yaml:"relationships"` // define additional relationships Replacements []Replace `yaml:"replacements"` Inflections Inflections `yaml:"inflections"` // Customize the generator name in the top level comment of generated files // >> Code generated by **GENERATOR NAME**. DO NOT EDIT. // defaults to "BobGen [driver] [version]" Generator string `yaml:"generator"` }
Config for the running of the commands
type Constraints ¶ added in v0.23.0
type Constraints[C any] map[string]drivers.Constraints[C]
type DBInfoPlugin ¶ added in v0.20.0
DBInfoPlugin is called immediately after the database information is assembled from the driver
type Importer ¶
type Importer map[string]struct{}
type Inflections ¶
type Relationships ¶ added in v0.23.0
type Relationships map[string][]orm.Relationship
func (Relationships) Get ¶ added in v0.23.0
func (r Relationships) Get(table string) []orm.Relationship
func (Relationships) GetInverse ¶ added in v0.23.0
func (rs Relationships) GetInverse(r orm.Relationship) orm.Relationship
GetInverse returns the Relationship of the other side
type Replace ¶
type Replace struct { Tables []string `yaml:"tables"` Match drivers.Column `yaml:"match"` Replace string `yaml:"replace"` }
Replace replaces a column type with something else
type State ¶
type State[ConstraintExtra any] struct { Config Config[ConstraintExtra] Outputs []*Output CustomTemplateFuncs template.FuncMap }
State holds the global data needed by most pieces to run
type StatePlugin ¶ added in v0.20.0
This is called at the very beginning if there are any changes to be made to the state
type TemplateData ¶ added in v0.20.0
type TemplateData[T, C, I any] struct { Dialect string Importer Importer Table drivers.Table[C, I] Tables drivers.Tables[C, I] Enums []drivers.Enum Aliases drivers.Aliases Types drivers.Types Relationships Relationships // Controls what names are output PkgName string // Control various generation features AddSoftDeletes bool AddEnumTypes bool EnumNullPrefix string NoFactory bool NoTests bool NoBackReferencing bool // Tags control which tags are added to the struct Tags []string // RelationTag controls the value of the tags for the Relationship struct RelationTag string // Generate struct tags as camelCase or snake_case StructTagCasing string // Contains field names that should have tags values set to '-' TagIgnore map[string]struct{} // Supplied by the driver ExtraInfo T ModelsPackage string // DriverName is the module name of the underlying `database/sql` driver DriverName string }
func (*TemplateData[T, C, I]) ResetImports ¶ added in v0.20.0
func (t *TemplateData[T, C, I]) ResetImports()
type TemplateDataPlugin ¶ added in v0.20.0
type TemplateDataPlugin[T, C, I any] interface { Plugin PlugTemplateData(*TemplateData[T, C, I]) error }
TemplateDataPlugin is called right after assembling the template data, before generating them for each output. NOTE: The PkgName field is overwritten for each output, so mofifying it in a plugin will have no effect. Use a StatePlugin instead
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package drivers talks to various database backends and retrieves table, column, type, and foreign key information
|
Package drivers talks to various database backends and retrieves table, column, type, and foreign key information |
Package importers helps with dynamic imports for templating
|
Package importers helps with dynamic imports for templating |
Click to show internal directories.
Click to hide internal directories.