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 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")
QueriesTemplates, _ = fs.Sub(templates, "templates/queries")
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"` // 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 Inflections ¶
type Output ¶
type Output struct {
// The key has to be unique in a gen.State
// it also makes it possible to target modifing a specific output
// There are special keys that are reserved for internal use
// * "models" - for model templates.
// * "factory" - for factory templates
// * "queries" - for query templates.
// - This is run once for each query folder
// - The PkgName is set to the folder name in each run
// - The OutFolder is set to the same folder
Key string
PkgName string
OutFolder string
Templates []fs.FS
SeparatePackageForTests bool
// contains filtered or unexported fields
}
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
func (Relationships) GlobalKey ¶ added in v0.35.0
func (rs Relationships) GlobalKey(r orm.Relationship) string
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 language.Importer Table drivers.Table[C, I] Tables drivers.Tables[C, I] QueryFile drivers.QueryFile QueryFolder drivers.QueryFolder QueryFolders []drivers.QueryFolder 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 // Package information CurrentPackage string // the current package being generated OutputPackages map[string]string // map of output keys to package paths // Driver is the module name of the underlying `database/sql` driver Driver string Language language.Language }
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 |
Click to show internal directories.
Click to hide internal directories.