Help us shape the future of Go! Take the 2026 Go Developer Survey

boilingcore

package
v5.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 9, 2021 License: BSD-3-Clause Imports: 22 Imported by: 0

Documentation

Overview

Package boilingcore has types and methods useful for generating code that acts as a fully dynamic ORM might.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FillAliases

func FillAliases(a *Aliases, tables []drivers.Table)

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 `toml:"tables,omitempty" json:"tables,omitempty"`
}

Aliases defines aliases for the generation run

func ConvertAliases

func ConvertAliases(i interface{}) (a Aliases)

ConvertAliases is necessary because viper

It also supports two different syntaxes, because of viper:

[aliases.tables.table_name]
fields... = "values"
  [aliases.tables.columns]
  colname = "alias"
  [aliases.tables.relationships.fkey_name]
  local   = "x"
  foreign = "y"

Or alternatively (when toml key names or viper's lowercasing of key names gets in the way):

[[aliases.tables]]
name = "table_name"
fields... = "values"
  [[aliases.tables.columns]]
  name  = "colname"
  alias = "alias"
  [[aliases.tables.relationships]]
  name    = "fkey_name"
  local   = "x"
  foreign = "y"

func (Aliases) ManyRelationship

func (a Aliases) ManyRelationship(table, fkey, joinTable, joinTableFKey string) RelationshipAlias

ManyRelationship looks up a relationship alias, panics if not found. It will first try to look up a join table relationship, then it will try a normal one-to-many relationship. That's to say joinTable/joinTableFKey are used if they're not empty.

This allows us to skip additional conditionals in the templates.

func (Aliases) Table

func (a Aliases) Table(table string) TableAlias

Table gets a table alias, panics if not found.

type Config

type Config struct {
	DriverName   string         `toml:"driver_name,omitempty" json:"driver_name,omitempty"`
	DriverConfig drivers.Config `toml:"driver_config,omitempty" json:"driver_config,omitempty"`

	PkgName           string   `toml:"pkg_name,omitempty" json:"pkg_name,omitempty"`
	OutFolder         string   `toml:"out_folder,omitempty" json:"out_folder,omitempty"`
	TemplateDirs      []string `toml:"template_dirs,omitempty" json:"template_dirs,omitempty"`
	Tags              []string `toml:"tags,omitempty" json:"tags,omitempty"`
	Replacements      []string `toml:"replacements,omitempty" json:"replacements,omitempty"`
	Debug             bool     `toml:"debug,omitempty" json:"debug,omitempty"`
	AddGlobal         bool     `toml:"add_global,omitempty" json:"add_global,omitempty"`
	AddPanic          bool     `toml:"add_panic,omitempty" json:"add_panic,omitempty"`
	AddSoftDeletes    bool     `toml:"add_soft_deletes,omitempty" json:"add_soft_deletes,omitempty"`
	NoContext         bool     `toml:"no_context,omitempty" json:"no_context,omitempty"`
	NoTests           bool     `toml:"no_tests,omitempty" json:"no_tests,omitempty"`
	NoHooks           bool     `toml:"no_hooks,omitempty" json:"no_hooks,omitempty"`
	NoAutoTimestamps  bool     `toml:"no_auto_timestamps,omitempty" json:"no_auto_timestamps,omitempty"`
	NoRowsAffected    bool     `toml:"no_rows_affected,omitempty" json:"no_rows_affected,omitempty"`
	NoDriverTemplates bool     `toml:"no_driver_templates,omitempty" json:"no_driver_templates,omitempty"`
	NoBackReferencing bool     `toml:"no_back_reference,omitempty" json:"no_back_reference,omitempty"`
	Wipe              bool     `toml:"wipe,omitempty" json:"wipe,omitempty"`
	StructTagCasing   string   `toml:"struct_tag_casing,omitempty" json:"struct_tag_casing,omitempty"`
	RelationTag       string   `toml:"relation_tag,omitempty" json:"relation_tag,omitempty"`
	TagIgnore         []string `toml:"tag_ignore,omitempty" json:"tag_ignore,omitempty"`

	Imports importers.Collection `toml:"imports,omitempty" json:"imports,omitempty"`

	Aliases      Aliases       `toml:"aliases,omitempty" json:"aliases,omitempty"`
	TypeReplaces []TypeReplace `toml:"type_replaces,omitempty" json:"type_replaces,omitempty"`

	Version string `toml:"version" json:"version"`
}

Config for the running of the commands

func (*Config) OutputDirDepth

func (c *Config) OutputDirDepth() int

OutputDirDepth returns depth of output directory

type RelationshipAlias

type RelationshipAlias struct {
	Local   string `toml:"local,omitempty" json:"local,omitempty"`
	Foreign string `toml:"foreign,omitempty" json:"foreign,omitempty"`
}

RelationshipAlias defines the naming for both sides of a foreign key.

type State

type State struct {
	Config *Config

	Driver  drivers.Interface
	Schema  string
	Tables  []drivers.Table
	Dialect drivers.Dialect

	Templates     *templateList
	TestTemplates *templateList
}

State holds the global data needed by most pieces to run

func New

func New(config *Config) (*State, error)

New creates a new state based off of the config

func (*State) Cleanup

func (s *State) Cleanup() error

Cleanup closes any resources that must be closed

func (*State) Run

func (s *State) Run() error

Run executes the sqlboiler templates and outputs them to files based on the state given.

type TableAlias

type TableAlias struct {
	UpPlural     string `toml:"up_plural,omitempty" json:"up_plural,omitempty"`
	UpSingular   string `toml:"up_singular,omitempty" json:"up_singular,omitempty"`
	DownPlural   string `toml:"down_plural,omitempty" json:"down_plural,omitempty"`
	DownSingular string `toml:"down_singular,omitempty" json:"down_singular,omitempty"`

	Columns       map[string]string            `toml:"columns,omitempty" json:"columns,omitempty"`
	Relationships map[string]RelationshipAlias `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) RelationshipAlias

Relationship looks up a relationship, panics if not found.

type TypeReplace

type TypeReplace struct {
	Tables  []string       `toml:"tables,omitempty" json:"tables,omitempty"`
	Match   drivers.Column `toml:"match,omitempty" json:"match,omitempty"`
	Replace drivers.Column `toml:"replace,omitempty" json:"replace,omitempty"`
	Imports importers.Set  `toml:"imports,omitempty" json:"imports,omitempty"`
}

TypeReplace replaces a column type with something else

func ConvertTypeReplace

func ConvertTypeReplace(i interface{}) []TypeReplace

ConvertTypeReplace is necessary because viper

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL