Documentation ¶
Index ¶
- Variables
- func FillAliases(a *Aliases, tables []drivers.Table)
- func Run[T any](ctx context.Context, s *State, driver drivers.Interface[T], plugins ...Plugin) error
- type Aliases
- type Config
- type DBInfoPlugin
- type Importer
- type Inflections
- type Output
- type Plugin
- type Replace
- type State
- type StatePlugin
- type TableAlias
- type TemplateData
- type TemplateDataPlugin
Constants ¶
This section is empty.
Variables ¶
var (
ModelTemplates, _ = fs.Sub(templates, "templates/models")
FactoryTemplates, _ = fs.Sub(templates, "templates/factory")
MySQLModelTemplates, _ = fs.Sub(mysqlTemplates, "bobgen-mysql/templates/models")
SQLiteModelTemplates, _ = fs.Sub(sqliteTemplates, "bobgen-sqlite/templates/models")
PrismaModelTemplates, _ = fs.Sub(prismaTemplates, "bobgen-prisma/templates/models")
)
Functions ¶
func FillAliases ¶
FillAliases takes the table information from the driver and fills in aliases where the user has provided none.
This leaves us with a complete list of Go names for all tables, columns, and relationships.
Types ¶
type Aliases ¶
type Aliases struct {
Tables map[string]TableAlias `yaml:"tables,omitempty" toml:"tables,omitempty" json:"tables,omitempty"`
}
Aliases defines aliases for the generation run
func (Aliases) Table ¶
func (a Aliases) Table(table string) TableAlias
Table gets a table alias, panics if not found.
type Config ¶
type Config struct { // Struct tags to generate Tags []string `yaml:"tags"` // Disable generating factory for models. NoFactory bool `yaml:"no_factory"` // Disable generated 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"` Aliases Aliases `yaml:"aliases"` Replacements []Replace `yaml:"replacements"` Relationships relationships `yaml:"relationships"` 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" toml:"generator" json:"generator"` }
Config for the running of the commands
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 Replace ¶
type Replace struct { Tables []string `yaml:"tables" toml:"tables" json:"tables"` Match drivers.Column `yaml:"match" toml:"match" json:"match"` Replace drivers.Column `yaml:"replace" toml:"replace" json:"replace"` }
Replace replaces a column type with something else
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 TableAlias ¶
type TableAlias struct { UpPlural string `yaml:"up_plural,omitempty" toml:"up_plural,omitempty" json:"up_plural,omitempty"` UpSingular string `yaml:"up_singular,omitempty" toml:"up_singular,omitempty" json:"up_singular,omitempty"` DownPlural string `yaml:"down_plural,omitempty" toml:"down_plural,omitempty" json:"down_plural,omitempty"` DownSingular string `yaml:"down_singular,omitempty" toml:"down_singular,omitempty" json:"down_singular,omitempty"` Columns map[string]string `yaml:"columns,omitempty" toml:"columns,omitempty" json:"columns,omitempty"` Relationships map[string]string `yaml:"relationships,omitempty" toml:"relationships,omitempty" json:"relationships,omitempty"` }
TableAlias defines the spellings for a table name in Go
func (TableAlias) Column ¶
func (t TableAlias) Column(column string) string
Column get's a column's aliased name, panics if not found.
func (TableAlias) Relationship ¶
func (t TableAlias) Relationship(fkey string) string
Relationship looks up a relationship, panics if not found.
type TemplateData ¶ added in v0.20.0
type TemplateData[T any] struct { Dialect string Importer Importer Table drivers.Table Tables []drivers.Table Enums []drivers.Enum Aliases Aliases // Controls what names are output PkgName string // Control various generation features AddSoftDeletes bool AddEnumTypes bool EnumNullPrefix string 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 }
func (*TemplateData[T]) ResetImports ¶ added in v0.20.0
func (t *TemplateData[T]) ResetImports()
type TemplateDataPlugin ¶ added in v0.20.0
type TemplateDataPlugin[T any] interface { Plugin PlugTemplateData(*TemplateData[T]) 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 |